Commit 9576e9fa authored by Heiner Kallweit's avatar Heiner Kallweit Committed by David S. Miller
Browse files

net: phy: clear phydev->suspended after soft reset



If a soft reset is triggered whilst PHY is in power-down, then
phydev->suspended will remain set. Seems we didn't face any issue yet
caused by this, but better reset the suspended flag after soft reset.

See also the following from 22.2.4.1.1
Resetting a PHY is accomplished by setting bit 0.15 to a logic one.
This action shall set the status and control registers to their default
states.

Signed-off-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 31949154
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -1082,8 +1082,12 @@ int phy_init_hw(struct phy_device *phydev)
	if (!phydev->drv)
		return 0;

	if (phydev->drv->soft_reset)
	if (phydev->drv->soft_reset) {
		ret = phydev->drv->soft_reset(phydev);
		/* see comment in genphy_soft_reset for an explanation */
		if (!ret)
			phydev->suspended = 0;
	}

	if (ret < 0)
		return ret;
@@ -2157,6 +2161,12 @@ int genphy_soft_reset(struct phy_device *phydev)
	if (ret < 0)
		return ret;

	/* Clause 22 states that setting bit BMCR_RESET sets control registers
	 * to their default value. Therefore the POWER DOWN bit is supposed to
	 * be cleared after soft reset.
	 */
	phydev->suspended = 0;

	ret = phy_poll_reset(phydev);
	if (ret)
		return ret;