Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

net: stmmac: qcom-ethqos: set clk_csr

The clocks for qcom-ethqos return a rate of zero as firmware manages
their rate. According to hardware documentation, the clock which is
fed to the slave AHB interface can range between 50 to 100MHz for
non-RGMII and 30 to 75MHz for boards with a RGMII interfaces.

Currently, stmmac uses an undefined divisor value. Instead, use
STMMAC_CSR_60_100M which will mean we meet IEEE 802.3 specification
since this will generate:

714kHz @ 30MHz
1.19MHz @ 50MHz
1.79MHz @ 75MHz
2.42MHz @ 100MHz

This gives MDC rates within the IEEE 802.3 specification, although the
30MHz case is particularly slow.

Selecting the next lowest divisor, STMMAC_CSR_35_60M, which is /26
will give:

1.15MHz @ 30MHz
1.92MHz @ 50MHz
2.88MHz @ 75MHz (exceeding 802.3 spec)
3.85MHz @ 100MHz (exceeding 802.3 spec)

Unfortunately, this divisor makes the upper bound of both ranges exeed
the IEEE 802.3 specification, and thus we can not use it without knowing
for certain what the current CSR clock rate actually is.

So, STMMAC_CSR_60_100M is the best fit for all boards based on the
information provided thus far.

Link: https://lore.kernel.org/r/acGhQ0oui+dVRdLY@oss.qualcomm.com
Link: https://lore.kernel.org/r/acw1habUsiSqlrky@oss.qualcomm.com
Reviewed-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1w8JKr-0000000EdLC-41Bt@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Russell King (Oracle) and committed by
Jakub Kicinski
789ec16e e2f152c8

+6
+6
drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c
··· 764 764 qcom_ethqos_set_sgmii_loopback(ethqos, true); 765 765 ethqos_set_func_clk_en(ethqos); 766 766 767 + /* The clocks are controlled by firmware, so we don't know for certain 768 + * what clock rate is being used. Hardware documentation mentions that 769 + * the AHB slave clock will be in the range of 50 to 100MHz, which 770 + * equates to a MDC between 1.19 and 2.38MHz. 771 + */ 772 + plat_dat->clk_csr = STMMAC_CSR_60_100M; 767 773 plat_dat->bsp_priv = ethqos; 768 774 plat_dat->set_clk_tx_rate = ethqos_set_clk_tx_rate; 769 775 plat_dat->dump_debug_regs = rgmii_dump;