net: phy: dp83867: reset PHY on init to ensure clean state
After a warm reboot, the PHY is left in power-down state
(BMCR_PDOWN set) causing auto-negotiation to timeout when
running the dhcp command.
Fix this by calling phy_reset() in dp83867_config() which
brings the PHY to a known clean state. The existing
DP83867_SW_RESTART is removed as it is redundant after phy_reset().
Fixes: 721aed7912 ("net: phy: Add support for Texas Instruments DP83867")
Signed-off-by: Pranav Tilak <pranav.vinaytilak@amd.com>
Signed-off-by: Michal Simek <michal.simek@amd.com>
This commit is contained in:
committed by
Jerome Forissier
parent
44c7f95987
commit
8f6077a8b8
@@ -257,14 +257,14 @@ static int dp83867_config(struct phy_device *phydev)
|
||||
|
||||
dp83867 = (struct dp83867_private *)phydev->priv;
|
||||
|
||||
ret = dp83867_of_init(phydev);
|
||||
/* Reset PHY to clear any stale state after warm reboot */
|
||||
ret = phy_reset(phydev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Restart the PHY. */
|
||||
val = phy_read(phydev, MDIO_DEVAD_NONE, DP83867_CTRL);
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, DP83867_CTRL,
|
||||
val | DP83867_SW_RESTART);
|
||||
ret = dp83867_of_init(phydev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Mode 1 or 2 workaround */
|
||||
if (dp83867->rxctrl_strap_quirk) {
|
||||
|
||||
Reference in New Issue
Block a user