diff options
Diffstat (limited to 'drivers/net/phy/phy_device.c')
| -rw-r--r-- | drivers/net/phy/phy_device.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c index ac23322a32e1..9e4ba8e80a18 100644 --- a/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c | |||
| @@ -535,8 +535,17 @@ static int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id, | |||
| 535 | 535 | ||
| 536 | /* Grab the bits from PHYIR1, and put them in the upper half */ | 536 | /* Grab the bits from PHYIR1, and put them in the upper half */ |
| 537 | phy_reg = mdiobus_read(bus, addr, MII_PHYSID1); | 537 | phy_reg = mdiobus_read(bus, addr, MII_PHYSID1); |
| 538 | if (phy_reg < 0) | 538 | if (phy_reg < 0) { |
| 539 | /* if there is no device, return without an error so scanning | ||
| 540 | * the bus works properly | ||
| 541 | */ | ||
| 542 | if (phy_reg == -EIO || phy_reg == -ENODEV) { | ||
| 543 | *phy_id = 0xffffffff; | ||
| 544 | return 0; | ||
| 545 | } | ||
| 546 | |||
| 539 | return -EIO; | 547 | return -EIO; |
| 548 | } | ||
| 540 | 549 | ||
| 541 | *phy_id = (phy_reg & 0xffff) << 16; | 550 | *phy_id = (phy_reg & 0xffff) << 16; |
| 542 | 551 | ||
