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

net: dsa: lantiq_gswip: Let GSWIP automatically set the xMII clock

The xMII interface clock depends on the PHY interface (MII, RMII, RGMII)
as well as the current link speed. Explicitly configure the GSWIP to
automatically select the appropriate xMII interface clock.

This fixes an issue seen by some users where ports using an external
RMII or RGMII PHY were deaf (no RX or TX traffic could be seen). Most
likely this is due to an "invalid" xMII clock being selected either by
the bootloader or hardware-defaults.

Fixes: 14fceff4771e51 ("net: dsa: Add Lantiq / Intel DSA driver for vrx200")
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Martin Blumenstingl and committed by
David S. Miller
3e6fdeb2 3ed14d8d

+7 -2
+7 -2
drivers/net/dsa/lantiq_gswip.c
··· 799 799 /* Configure the MDIO Clock 2.5 MHz */ 800 800 gswip_mdio_mask(priv, 0xff, 0x09, GSWIP_MDIO_MDC_CFG1); 801 801 802 - /* Disable the xMII link */ 803 - for (i = 0; i < priv->hw_info->max_ports; i++) 802 + for (i = 0; i < priv->hw_info->max_ports; i++) { 803 + /* Disable the xMII link */ 804 804 gswip_mii_mask_cfg(priv, GSWIP_MII_CFG_EN, 0, i); 805 + 806 + /* Automatically select the xMII interface clock */ 807 + gswip_mii_mask_cfg(priv, GSWIP_MII_CFG_RATE_MASK, 808 + GSWIP_MII_CFG_RATE_AUTO, i); 809 + } 805 810 806 811 /* enable special tag insertion on cpu port */ 807 812 gswip_switch_mask(priv, 0, GSWIP_FDMA_PCTRL_STEN,