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

Jerome Forissier jerome.forissier at arm.com
Mon Mar 30 16:36:07 CEST 2026


On 25/03/2026 16:36, Michal Simek wrote:
> 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(-)

Added to net-next, thanks!

-- 
Jerome

> 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) {



More information about the U-Boot mailing list