]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: pcs: xpcs: actively unset DW_VR_MII_DIG_CTRL1_2G5_EN for 1G SGMII
authorVladimir Oltean <vladimir.oltean@nxp.com>
Tue, 14 Jan 2025 16:47:21 +0000 (18:47 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 15 Jan 2025 21:22:23 +0000 (13:22 -0800)
xpcs_config_2500basex() sets DW_VR_MII_DIG_CTRL1_2G5_EN, but
xpcs_config_aneg_c37_sgmii() never unsets it. So, on a protocol change
from 2500base-x to sgmii, the DW_VR_MII_DIG_CTRL1_2G5_EN bit will remain
set.

Fixes: f27abde3042a ("net: pcs: add 2500BASEX support for Intel mGbE controller")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/20250114164721.2879380-2-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/pcs/pcs-xpcs.c

index 85cbf144ca445622cdc0c6733005b59d79e61540..3059435af59650b1c1d1864e185fbedf0ab81971 100644 (file)
@@ -685,7 +685,8 @@ static int xpcs_config_aneg_c37_sgmii(struct dw_xpcs *xpcs,
                return ret;
 
        val = 0;
-       mask = DW_VR_MII_DIG_CTRL1_MAC_AUTO_SW;
+       mask = DW_VR_MII_DIG_CTRL1_2G5_EN | DW_VR_MII_DIG_CTRL1_MAC_AUTO_SW;
+
        if (neg_mode == PHYLINK_PCS_NEG_INBAND_ENABLED)
                val = DW_VR_MII_DIG_CTRL1_MAC_AUTO_SW;