]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
net: phy: improve genphy_soft_reset
authorHeiner Kallweit <hkallweit1@gmail.com>
Wed, 24 Apr 2019 19:41:06 +0000 (21:41 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 31 May 2019 13:44:58 +0000 (06:44 -0700)
commit6475e2dff9c83b7ce987b1c56f93b8f5a0ffdf27
tree1e1457e33d92afd2c7e695f2b679bf1b2d51e12a
parent90a4149d4db83438746923864c9dbc879b8b8ad8
net: phy: improve genphy_soft_reset

[ Upstream commit 8c90b795e90f7753d23c18e8b95dd71b4a18c5d9 ]

PHY's behave differently when being reset. Some reset registers to
defaults, some don't. Some trigger an autoneg restart, some don't.

So let's also set the autoneg restart bit when resetting. Then PHY
behavior should be more consistent. Clearing BMCR_ISOLATE serves the
same purpose and is borrowed from genphy_restart_aneg.

BMCR holds the speed / duplex settings in fixed mode. Therefore
we may have an issue if a soft reset resets BMCR to its default.
So better call genphy_setup_forced() afterwards in fixed mode.
We've seen no related complaint in the last >10 yrs, so let's
treat it as an improvement.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/phy/phy_device.c