net: sh_eth: do not issue a wild PHY reset through BMCR
authorFlorian Fainelli <f.fainelli@gmail.com>
Fri, 6 Dec 2013 21:01:38 +0000 (13:01 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 10 Dec 2013 01:38:59 +0000 (20:38 -0500)
The sh_eth driver issues an uncontrolled PHY reset through the MII
register BMCR but fails to wait for the reset to complete, and will also
implicitely wipe out all possible PHY fixups applied. Use phy_init_hw()
which remedies both problems.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/renesas/sh_eth.c

index d256ce19d4de1cf6e93b51700b3ed8f5d813a3e0..6761dde7007a004de47e2df93bbe76296c1a3771 100644 (file)
@@ -1704,7 +1704,10 @@ static int sh_eth_phy_start(struct net_device *ndev)
                return ret;
 
        /* reset phy - this also wakes it from PDOWN */
-       phy_write(mdp->phydev, MII_BMCR, BMCR_RESET);
+       ret = phy_init_hw(mdp->phydev);
+       if (ret)
+               return ret;
+
        phy_start(mdp->phydev);
 
        return 0;