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

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 fa412a4e080d297ea71a5ee877daff86ac4ade83..5694c2667b4d16a4f0ab3d423ff7592c1a075edb 100644 (file)
@@ -825,30 +825,6 @@ static int at803x_parse_dt(struct phy_device *phydev)
                }
        }
 
-       /* Only supported on AR8031/AR8033, the AR8030/AR8035 use strapping
-        * options.
-        */
-       if (phydev->drv->phy_id == ATH8031_PHY_ID) {
-               if (of_property_read_bool(node, "qca,keep-pll-enabled"))
-                       priv->flags |= AT803X_KEEP_PLL_ENABLED;
-
-               ret = at8031_register_regulators(phydev);
-               if (ret < 0)
-                       return ret;
-
-               ret = devm_regulator_get_enable_optional(&phydev->mdio.dev,
-                                                        "vddio");
-               if (ret) {
-                       phydev_err(phydev, "failed to get VDDIO regulator\n");
-                       return ret;
-               }
-
-               /* Only AR8031/8033 support 1000Base-X for SFP modules */
-               ret = phy_sfp_probe(phydev, &at803x_sfp_ops);
-               if (ret < 0)
-                       return ret;
-       }
-
        return 0;
 }
 
@@ -1582,6 +1558,30 @@ static int at803x_cable_test_start(struct phy_device *phydev)
        return 0;
 }
 
+static int at8031_parse_dt(struct phy_device *phydev)
+{
+       struct device_node *node = phydev->mdio.dev.of_node;
+       struct at803x_priv *priv = phydev->priv;
+       int ret;
+
+       if (of_property_read_bool(node, "qca,keep-pll-enabled"))
+               priv->flags |= AT803X_KEEP_PLL_ENABLED;
+
+       ret = at8031_register_regulators(phydev);
+       if (ret < 0)
+               return ret;
+
+       ret = devm_regulator_get_enable_optional(&phydev->mdio.dev,
+                                                "vddio");
+       if (ret) {
+               phydev_err(phydev, "failed to get VDDIO regulator\n");
+               return ret;
+       }
+
+       /* Only AR8031/8033 support 1000Base-X for SFP modules */
+       return phy_sfp_probe(phydev, &at803x_sfp_ops);
+}
+
 static int at8031_probe(struct phy_device *phydev)
 {
        int ret;
@@ -1590,6 +1590,13 @@ static int at8031_probe(struct phy_device *phydev)
        if (ret)
                return ret;
 
+       /* Only supported on AR8031/AR8033, the AR8030/AR8035 use strapping
+        * options.
+        */
+       ret = at8031_parse_dt(phydev);
+       if (ret)
+               return ret;
+
        /* Disable WoL in 1588 register which is enabled
         * by default
         */