]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net: phy: at803x: move specific at8031 config_init to dedicated function
authorChristian Marangi <ansuelsmth@gmail.com>
Fri, 8 Dec 2023 14:51:54 +0000 (15:51 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 13 Dec 2023 10:34:28 +0000 (10:34 +0000)
Move specific at8031 config_init to dedicated function to make
at803x_config_init more generic and tidy things up.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c

index 6cb41af318188c4c89202d9c9dd1f17893f755eb..e2bf5a16ba3c96d6ed40db9ce2d15c59460111f4 100644 (file)
@@ -951,27 +951,8 @@ static int at803x_hibernation_mode_config(struct phy_device *phydev)
 
 static int at803x_config_init(struct phy_device *phydev)
 {
-       struct at803x_priv *priv = phydev->priv;
        int ret;
 
-       if (phydev->drv->phy_id == ATH8031_PHY_ID) {
-               /* Some bootloaders leave the fiber page selected.
-                * Switch to the appropriate page (fiber or copper), as otherwise we
-                * read the PHY capabilities from the wrong page.
-                */
-               phy_lock_mdio_bus(phydev);
-               ret = at803x_write_page(phydev,
-                                       priv->is_fiber ? AT803X_PAGE_FIBER :
-                                                        AT803X_PAGE_COPPER);
-               phy_unlock_mdio_bus(phydev);
-               if (ret)
-                       return ret;
-
-               ret = at8031_pll_config(phydev);
-               if (ret < 0)
-                       return ret;
-       }
-
        /* The RX and TX delay default is:
         *   after HW reset: RX delay enabled and TX delay disabled
         *   after SW reset: RX delay enabled, while TX delay retains the
@@ -1604,6 +1585,30 @@ static int at8031_probe(struct phy_device *phydev)
                              AT803X_WOL_EN, 0);
 }
 
+static int at8031_config_init(struct phy_device *phydev)
+{
+       struct at803x_priv *priv = phydev->priv;
+       int ret;
+
+       /* Some bootloaders leave the fiber page selected.
+        * Switch to the appropriate page (fiber or copper), as otherwise we
+        * read the PHY capabilities from the wrong page.
+        */
+       phy_lock_mdio_bus(phydev);
+       ret = at803x_write_page(phydev,
+                               priv->is_fiber ? AT803X_PAGE_FIBER :
+                                                AT803X_PAGE_COPPER);
+       phy_unlock_mdio_bus(phydev);
+       if (ret)
+               return ret;
+
+       ret = at8031_pll_config(phydev);
+       if (ret < 0)
+               return ret;
+
+       return at803x_config_init(phydev);
+}
+
 static int qca83xx_config_init(struct phy_device *phydev)
 {
        u8 switch_revision;
@@ -2113,7 +2118,7 @@ static struct phy_driver at803x_driver[] = {
        .name                   = "Qualcomm Atheros AR8031/AR8033",
        .flags                  = PHY_POLL_CABLE_TEST,
        .probe                  = at8031_probe,
-       .config_init            = at803x_config_init,
+       .config_init            = at8031_config_init,
        .config_aneg            = at803x_config_aneg,
        .soft_reset             = genphy_soft_reset,
        .set_wol                = at803x_set_wol,