|
@@ -299,9 +299,6 @@ int bcmgenet_mii_config(struct net_device *dev, bool init)
|
|
|
phy_name = "external RGMII (no delay)";
|
|
|
else
|
|
|
phy_name = "external RGMII (TX delay)";
|
|
|
- reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL);
|
|
|
- reg |= RGMII_MODE_EN | id_mode_dis;
|
|
|
- bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL);
|
|
|
bcmgenet_sys_writel(priv,
|
|
|
PORT_MODE_EXT_GPHY, SYS_PORT_CTRL);
|
|
|
break;
|
|
@@ -310,6 +307,15 @@ int bcmgenet_mii_config(struct net_device *dev, bool init)
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
+ /* This is an external PHY (xMII), so we need to enable the RGMII
|
|
|
+ * block for the interface to work
|
|
|
+ */
|
|
|
+ if (priv->ext_phy) {
|
|
|
+ reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL);
|
|
|
+ reg |= RGMII_MODE_EN | id_mode_dis;
|
|
|
+ bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL);
|
|
|
+ }
|
|
|
+
|
|
|
if (init)
|
|
|
dev_info(kdev, "configuring instance for %s\n", phy_name);
|
|
|
|