Browse Source

Merge branch 'net-dsa-b53-SGMII-modes-fixes'

Florian Fainelli says:

====================
net: dsa: b53: SGMII modes fixes

Here are two additional fixes that are required in order for SGMII to
work correctly. This was discovered with using a copper SFP which would
make us use SGMII mode, we would actually leave the HW configured in its
default mode: Fiber.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller 7 years ago
parent
commit
bd4d08daeb
2 changed files with 7 additions and 5 deletions
  1. 6 4
      drivers/net/dsa/b53/b53_common.c
  2. 1 1
      drivers/net/dsa/b53/b53_serdes.h

+ 6 - 4
drivers/net/dsa/b53/b53_common.c

@@ -1172,8 +1172,9 @@ int b53_phylink_mac_link_state(struct dsa_switch *ds, int port,
 	struct b53_device *dev = ds->priv;
 	int ret = -EOPNOTSUPP;
 
-	if (phy_interface_mode_is_8023z(state->interface) &&
-	    dev->ops->serdes_link_state)
+	if ((phy_interface_mode_is_8023z(state->interface) ||
+	     state->interface == PHY_INTERFACE_MODE_SGMII) &&
+	     dev->ops->serdes_link_state)
 		ret = dev->ops->serdes_link_state(dev, port, state);
 
 	return ret;
@@ -1195,8 +1196,9 @@ void b53_phylink_mac_config(struct dsa_switch *ds, int port,
 		return;
 	}
 
-	if (phy_interface_mode_is_8023z(state->interface) &&
-	    dev->ops->serdes_config)
+	if ((phy_interface_mode_is_8023z(state->interface) ||
+	     state->interface == PHY_INTERFACE_MODE_SGMII) &&
+	     dev->ops->serdes_config)
 		dev->ops->serdes_config(dev, port, mode, state);
 }
 EXPORT_SYMBOL(b53_phylink_mac_config);

+ 1 - 1
drivers/net/dsa/b53/b53_serdes.h

@@ -20,7 +20,7 @@
 #define  SERDES_ID0_REV_LETTER_SHIFT	14
 
 #define B53_SERDES_MII_REG(x)		(0x20 + (x) * 2)
-#define B53_SERDES_DIGITAL_CONTROL(x)	(0x18 + (x) * 2)
+#define B53_SERDES_DIGITAL_CONTROL(x)	(0x1e + (x) * 2)
 #define B53_SERDES_DIGITAL_STATUS	0x28
 
 /* SERDES_DIGITAL_CONTROL1 */