net: phy: aquantia: add suspend / resume callbacks for AQR107 family
authorHeiner Kallweit <hkallweit1@gmail.com>
Fri, 29 Mar 2019 20:09:27 +0000 (21:09 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 1 Apr 2019 22:03:38 +0000 (15:03 -0700)
Add suspend / resume callbacks for AQR107 family. Suspend powers down
the complete chip except MDIO and internal CPU.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/aquantia_main.c

index ae6a76d3f2fe7aacf6d5f234584fa981bb552d0d..be5204a1fd1339613727f9d58ae482b54010f2cc 100644 (file)
@@ -478,6 +478,18 @@ static void aqr107_link_change_notify(struct phy_device *phydev)
                phydev_info(phydev, "Aquantia 1000Base-T2 mode active\n");
 }
 
+static int aqr107_suspend(struct phy_device *phydev)
+{
+       return phy_set_bits_mmd(phydev, MDIO_MMD_VEND1, MDIO_CTRL1,
+                               MDIO_CTRL1_LPOWER);
+}
+
+static int aqr107_resume(struct phy_device *phydev)
+{
+       return phy_clear_bits_mmd(phydev, MDIO_MMD_VEND1, MDIO_CTRL1,
+                                 MDIO_CTRL1_LPOWER);
+}
+
 static struct phy_driver aqr_driver[] = {
 {
        PHY_ID_MATCH_MODEL(PHY_ID_AQ1202),
@@ -532,6 +544,8 @@ static struct phy_driver aqr_driver[] = {
        .read_status    = aqr107_read_status,
        .get_tunable    = aqr107_get_tunable,
        .set_tunable    = aqr107_set_tunable,
+       .suspend        = aqr107_suspend,
+       .resume         = aqr107_resume,
        .link_change_notify = aqr107_link_change_notify,
 },
 {
@@ -547,6 +561,8 @@ static struct phy_driver aqr_driver[] = {
        .read_status    = aqr107_read_status,
        .get_tunable    = aqr107_get_tunable,
        .set_tunable    = aqr107_set_tunable,
+       .suspend        = aqr107_suspend,
+       .resume         = aqr107_resume,
        .link_change_notify = aqr107_link_change_notify,
 },
 {