[PATCH] net: phy: dp83867: reset PHY on init to ensure clean state

Michal Simek michal.simek at amd.com
Wed Mar 25 16:36:34 CET 2026


From: Pranav Tilak <pranav.vinaytilak at amd.com>

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: 721aed79126b ("net: phy: Add support for Texas Instruments DP83867")
Signed-off-by: Pranav Tilak <pranav.vinaytilak at amd.com>
Signed-off-by: Michal Simek <michal.simek at amd.com>
---

 drivers/net/phy/dp83867.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c
index 772cde1c520c..7ce03b59b6ab 100644
--- a/drivers/net/phy/dp83867.c
+++ b/drivers/net/phy/dp83867.c
@@ -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) {
-- 
2.43.0

base-commit: 07ad94eb8a3a9d80273a16a7ac8c7caaba607fe2
branch: debian-sent3


More information about the U-Boot mailing list