summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2012-12-08 17:52:26 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2012-12-08 17:52:55 +0100
commitac48b10467ffb1c45e67e5efe36413ede140a498 (patch)
tree2ef8f6be92071bf315f78adb0d2c78d384fb4328
parent039a0e52f867c148b21d64eb08c0162cee86439d (diff)
downloadbarebox-ac48b10467ffb1c45e67e5efe36413ede140a498.tar.gz
barebox-ac48b10467ffb1c45e67e5efe36413ede140a498.tar.xz
net phylib: Clear BMCR_PDOWN bit
Some phys come up with this bit set, clear it so that these phys can work. This has been observed with a ASIX compatible USB ethernet adapter. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/net/phy/phy.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index ed185e1471..58546f8546 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -443,6 +443,9 @@ int genphy_restart_aneg(struct phy_device *phydev)
/* Don't isolate the PHY if we're negotiating */
ctl &= ~(BMCR_ISOLATE);
+ /* Clear powerdown bit which eventually is set on some phys */
+ ctl &= ~BMCR_PDOWN;
+
ctl = phy_write(phydev, MII_BMCR, ctl);
if (ctl < 0)