diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2017-12-12 10:45:36 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-12-13 15:00:10 -0500 |
commit | f5e64032a799d4f54decc7eb6aafcdffb67f9ad9 (patch) | |
tree | c3bac205223f88e42ad6c7e0f5fbde9c6ca1a553 /arch/arm64/lib/memmove.S | |
parent | cd8165c3d5fb07667328434835f2968a87caee67 (diff) | |
download | blackbird-op-linux-f5e64032a799d4f54decc7eb6aafcdffb67f9ad9.tar.gz blackbird-op-linux-f5e64032a799d4f54decc7eb6aafcdffb67f9ad9.zip |
net: phy: fix resume handling
When a PHY has the BMCR_PDOWN bit set, it may decide to ignore writes
to other registers, or reset the registers to power-on defaults.
Micrel PHYs do this for their interrupt registers.
The current structure of phylib tries to enable interrupts before
resuming (and releasing) the BMCR_PDOWN bit. This fails, causing
Micrel PHYs to stop working after a suspend/resume sequence if they
are using interrupts.
Fix this by ensuring that the PHY driver resume methods do not take
the phydev->lock mutex themselves, but the callers of phy_resume()
take that lock. This then allows us to move the call to phy_resume()
before we enable interrupts in phy_start().
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/arm64/lib/memmove.S')
0 files changed, 0 insertions, 0 deletions