diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 63b3e46f1..161cb6b05 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -755,6 +755,15 @@ int phy_reset(struct phy_device *phydev) return -1; } + reg = phy_read(phydev, devad, 0x0467); + if ((reg & 0x0300) != 0x0200) { + pr_err("PHY Strap failed (0x%04x), set correct!\n", reg); + reg = (phy_read(phydev, devad, 0x0017) | (1<<9)); /* RGMII mode */ + phy_write(phydev, devad, 0x0017, reg); + reg = (phy_read(phydev, devad, 0x0019) | (1<<15)); /* Auto-MDX mode */ + phy_write(phydev, devad, 0x0019, reg); + } + return 0; }