diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c index a0028aa10a0f..01beabc31546 100644 --- a/drivers/net/phy/dp83867.c +++ b/drivers/net/phy/dp83867.c @@ -317,6 +317,16 @@ static int dp83867_config_init(struct phy_device *phydev) phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_IO_MUX_CFG, val); } + /* Check if the PHY is an internal testing mode. + * This mode can cause connection problems. + */ + val = phy_read_mmd_indirect(phydev, DP83867_CFG4, DP83867_DEVADDR); + if (val & BIT(7)) { + val &= ~BIT(7); + phy_write_mmd_indirect(phydev, DP83867_CFG4, DP83867_DEVADDR, + val); + } + /* Disable FORCE_LINK_GOOD */ val = phy_read(phydev, MII_DP83867_PHYCTRL); if (val & MII_DP83867_PHYCTRL_FORCE_LINK_GOOD) {