Skip to content

Commit 5f9f361

Browse files
Dimitri Fedraukuba-moo
authored andcommitted
net: phy: marvell-88q2xxx: add suspend / resume ops
Add suspend/resume ops for Marvell 88Q2xxx devices. Reviewed-by: Andrew Lunn <[email protected]> Signed-off-by: Dimitri Fedrau <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent caa858b commit 5f9f361

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

drivers/net/phy/marvell-88q2xxx.c

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,38 @@ static irqreturn_t mv88q2xxx_handle_interrupt(struct phy_device *phydev)
461461
return IRQ_HANDLED;
462462
}
463463

464+
static int mv88q2xxx_suspend(struct phy_device *phydev)
465+
{
466+
int ret;
467+
468+
/* Disable PHY interrupts */
469+
if (phy_interrupt_is_valid(phydev)) {
470+
phydev->interrupts = PHY_INTERRUPT_DISABLED;
471+
ret = mv88q2xxx_config_intr(phydev);
472+
if (ret)
473+
return ret;
474+
}
475+
476+
return phy_set_bits_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_CTRL1,
477+
MDIO_CTRL1_LPOWER);
478+
}
479+
480+
static int mv88q2xxx_resume(struct phy_device *phydev)
481+
{
482+
int ret;
483+
484+
/* Enable PHY interrupts */
485+
if (phy_interrupt_is_valid(phydev)) {
486+
phydev->interrupts = PHY_INTERRUPT_ENABLED;
487+
ret = mv88q2xxx_config_intr(phydev);
488+
if (ret)
489+
return ret;
490+
}
491+
492+
return phy_clear_bits_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_CTRL1,
493+
MDIO_CTRL1_LPOWER);
494+
}
495+
464496
static int mv88q222x_soft_reset(struct phy_device *phydev)
465497
{
466498
int ret;
@@ -566,6 +598,8 @@ static struct phy_driver mv88q2xxx_driver[] = {
566598
.set_loopback = genphy_c45_loopback,
567599
.get_sqi = mv88q2xxx_get_sqi,
568600
.get_sqi_max = mv88q2xxx_get_sqi_max,
601+
.suspend = mv88q2xxx_suspend,
602+
.resume = mv88q2xxx_resume,
569603
},
570604
};
571605

0 commit comments

Comments
 (0)