diff options
author | Alexander Stein <alexander.stein@ew.tq-group.com> | 2023-03-10 08:45:00 +0100 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2023-03-13 15:56:13 -0700 |
commit | c5a8027de26e1b7c0ba4f8e430165b6a4a29a869 (patch) | |
tree | 1f7248af0d4574050531f9f25f6107a17a588843 | |
parent | e4ed8ba08e3f1ef24771eb95f87da129ad752063 (diff) | |
download | linux-stable-c5a8027de26e1b7c0ba4f8e430165b6a4a29a869.tar.gz linux-stable-c5a8027de26e1b7c0ba4f8e430165b6a4a29a869.tar.bz2 linux-stable-c5a8027de26e1b7c0ba4f8e430165b6a4a29a869.zip |
net: phy: dp83867: Disable IRQs on suspend
Before putting the PHY into IEEE power down mode, disable IRQs to
prevent accessing the PHY once MDIO has already been shutdown.
Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20230310074500.3472858-1-alexander.stein@ew.tq-group.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r-- | drivers/net/phy/dp83867.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c index 89cd821f1f46..5821f04c69dc 100644 --- a/drivers/net/phy/dp83867.c +++ b/drivers/net/phy/dp83867.c @@ -693,6 +693,30 @@ static int dp83867_of_init(struct phy_device *phydev) } #endif /* CONFIG_OF_MDIO */ +static int dp83867_suspend(struct phy_device *phydev) +{ + /* Disable PHY Interrupts */ + if (phy_interrupt_is_valid(phydev)) { + phydev->interrupts = PHY_INTERRUPT_DISABLED; + dp83867_config_intr(phydev); + } + + return genphy_suspend(phydev); +} + +static int dp83867_resume(struct phy_device *phydev) +{ + /* Enable PHY Interrupts */ + if (phy_interrupt_is_valid(phydev)) { + phydev->interrupts = PHY_INTERRUPT_ENABLED; + dp83867_config_intr(phydev); + } + + genphy_resume(phydev); + + return 0; +} + static int dp83867_probe(struct phy_device *phydev) { struct dp83867_private *dp83867; @@ -968,8 +992,8 @@ static struct phy_driver dp83867_driver[] = { .config_intr = dp83867_config_intr, .handle_interrupt = dp83867_handle_interrupt, - .suspend = genphy_suspend, - .resume = genphy_resume, + .suspend = dp83867_suspend, + .resume = dp83867_resume, .link_change_notify = dp83867_link_change_notify, .set_loopback = dp83867_loopback, |