diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c index c98ebdff07ec..76eaa4e2ebe0 100644 --- a/drivers/net/phy/dp83867.c +++ b/drivers/net/phy/dp83867.c @@ -306,6 +306,16 @@ static int dp83867_config_init(struct phy_device *phydev) phy_write_mmd_indirect(phydev, DP83867_IO_MUX_CFG, DP83867_DEVADDR, 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) {