summaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorMarc Kleine-Budde <mkl@pengutronix.de>2009-05-18 15:48:44 +0200
committerMarc Kleine-Budde <mkl@pengutronix.de>2009-05-18 16:20:04 +0200
commit4a770377d1e12682a4ed19692c8d2898afe67a0e (patch)
treeb84c5dedda7d6db26ca4ab67bd77ef090b6f6934 /drivers/net
parent26a8987c46ff250ba3ecee9b4112fca07844800c (diff)
downloadbarebox-4a770377d1e12682a4ed19692c8d2898afe67a0e.tar.gz
barebox-4a770377d1e12682a4ed19692c8d2898afe67a0e.tar.xz
[miiphy] add feature to force link present
If a NIC's MII isn't connected to a PHY but directly to a switch port, the switch doesn't sent a link signal to the NIC. (Because strictly speaking, there isn't any ethernet link at all.) This patch adds a force link feature to the phy, to cope with this situation. Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/miiphy.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/miiphy.c b/drivers/net/miiphy.c
index a82ef75b59..43d37f5c77 100644
--- a/drivers/net/miiphy.c
+++ b/drivers/net/miiphy.c
@@ -35,6 +35,10 @@ int miiphy_restart_aneg(struct miiphy_device *mdev)
* Reset PHY, then delay 300ns
*/
mdev->write(mdev, mdev->address, MII_BMCR, BMCR_RESET);
+
+ if (mdev->flags & MIIPHY_FORCE_LINK)
+ return 0;
+
udelay(1000);
if (mdev->flags & MIIPHY_FORCE_10) {
@@ -71,6 +75,9 @@ int miiphy_wait_aneg(struct miiphy_device *mdev)
uint64_t start;
uint16_t status;
+ if (mdev->flags & MIIPHY_FORCE_LINK)
+ return 0;
+
/*
* Wait for AN completion
*/
@@ -96,6 +103,11 @@ int miiphy_print_status(struct miiphy_device *mdev)
char *duplex;
int speed;
+ if (mdev->flags & MIIPHY_FORCE_LINK) {
+ printf("Forcing link present...\n");
+ return 0;
+ }
+
if (mdev->read(mdev, mdev->address, MII_BMSR, &bmsr) != 0)
goto err_out;
if (mdev->read(mdev, mdev->address, MII_BMCR, &bmcr) != 0)