summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2013-02-24 10:34:12 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2013-02-25 08:54:40 +0100
commit62acc70dc1c00a1ea86af34e8d5020ac39e96e9f (patch)
tree869ce8ceccc70329bd862816c3393aed9eb3af8a
parent7ba9f45f6a1c500a3b06a7d14399757288af9a90 (diff)
downloadbarebox-62acc70dc1c00a1ea86af34e8d5020ac39e96e9f.tar.gz
barebox-62acc70dc1c00a1ea86af34e8d5020ac39e96e9f.tar.xz
phy: fix force mode
do not try to read the status in force mode the link is up Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/net/phy/mdio_bus.c4
-rw-r--r--drivers/net/phy/phy.c4
-rw-r--r--include/linux/phy.h1
3 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c
index d1d802b57b..e1bb7b1235 100644
--- a/drivers/net/phy/mdio_bus.c
+++ b/drivers/net/phy/mdio_bus.c
@@ -167,10 +167,14 @@ static int mdio_bus_probe(struct device_d *_dev)
dev->speed = SPEED_10;
dev->duplex = DUPLEX_FULL;
dev->autoneg = !AUTONEG_ENABLE;
+ dev->force = 1;
+ dev->link = 1;
} else if (dev->dev_flags & PHYLIB_FORCE_100) {
dev->speed = SPEED_100;
dev->duplex = DUPLEX_FULL;
dev->autoneg = !AUTONEG_ENABLE;
+ dev->force = 1;
+ dev->link = 1;
}
}
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index 1cf2cb97a3..12739ff361 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -549,6 +549,10 @@ int genphy_read_status(struct phy_device *phydev)
int lpa;
int lpagb = 0;
+ /* if force the status and link are set */
+ if (phydev->force)
+ return 0;
+
/* Update the link, but return if there
* was an error */
err = genphy_update_link(phydev);
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 6c9cac973e..99c96390c7 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -158,6 +158,7 @@ struct phy_device {
u32 advertising;
int autoneg;
+ int force;
/* private data pointer */