mirror of https://gitee.com/openkylin/linux.git
net: bcmgenet: power on MII block for all MII modes
The RGMII block is currently only powered on when using RGMII or
RGMII_NO_ID, which is not correct when using the GENET interface in MII
or Reverse MII modes. We always need to power on the RGMII interface for
this block to properly work, regardless of the MII mode in which we
operate.
Fixes: aa09677cba
("net: bcmgenet: add MDIO routines")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0243508edd
commit
afe3f907d2
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue