net: phy: smsc: add helper smsc_phy_config_edpd
authorHeiner Kallweit <hkallweit1@gmail.com>
Sun, 2 Apr 2023 15:12:20 +0000 (17:12 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 3 Apr 2023 09:08:42 +0000 (10:08 +0100)
Add helper smsc_phy_config_edpd() and explicitly clear bit
MII_LAN83C185_EDPWRDOWN is edpd_enable isn't set.
Boot loader may have left whatever value.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/smsc.c

index 928cf6d..1b58836 100644 (file)
@@ -77,6 +77,18 @@ int smsc_phy_config_intr(struct phy_device *phydev)
 }
 EXPORT_SYMBOL_GPL(smsc_phy_config_intr);
 
+static int smsc_phy_config_edpd(struct phy_device *phydev)
+{
+       struct smsc_phy_priv *priv = phydev->priv;
+
+       if (priv->edpd_enable)
+               return phy_set_bits(phydev, MII_LAN83C185_CTRL_STATUS,
+                                   MII_LAN83C185_EDPWRDOWN);
+       else
+               return phy_clear_bits(phydev, MII_LAN83C185_CTRL_STATUS,
+                                     MII_LAN83C185_EDPWRDOWN);
+}
+
 irqreturn_t smsc_phy_handle_interrupt(struct phy_device *phydev)
 {
        int irq_status;
@@ -105,9 +117,7 @@ int smsc_phy_config_init(struct phy_device *phydev)
        if (!priv || !priv->edpd_enable || phydev->irq != PHY_POLL)
                return 0;
 
-       /* Enable energy detect power down mode */
-       return phy_set_bits(phydev, MII_LAN83C185_CTRL_STATUS,
-                           MII_LAN83C185_EDPWRDOWN);
+       return smsc_phy_config_edpd(phydev);
 }
 EXPORT_SYMBOL_GPL(smsc_phy_config_init);