Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: phy: marvell-88q2xxx: add suspend / resume ops

Add suspend/resume ops for Marvell 88Q2xxx devices.

Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Dimitri Fedrau <dima.fedrau@gmail.com>
Link: https://lore.kernel.org/r/20240218075753.18067-8-dima.fedrau@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Dimitri Fedrau and committed by
Jakub Kicinski
5f9f361a caa858b7

+34
+34
drivers/net/phy/marvell-88q2xxx.c
··· 461 461 return IRQ_HANDLED; 462 462 } 463 463 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 + 464 496 static int mv88q222x_soft_reset(struct phy_device *phydev) 465 497 { 466 498 int ret; ··· 598 566 .set_loopback = genphy_c45_loopback, 599 567 .get_sqi = mv88q2xxx_get_sqi, 600 568 .get_sqi_max = mv88q2xxx_get_sqi_max, 569 + .suspend = mv88q2xxx_suspend, 570 + .resume = mv88q2xxx_resume, 601 571 }, 602 572 }; 603 573