]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
phy: lynx-28g: refactor lane probing to lynx_28g_probe_lane()
authorVladimir Oltean <vladimir.oltean@nxp.com>
Tue, 25 Nov 2025 11:48:34 +0000 (13:48 +0200)
committerVinod Koul <vkoul@kernel.org>
Tue, 23 Dec 2025 17:41:06 +0000 (23:11 +0530)
This simplifies the main control flow a little bit and makes the logic
reusable for probing the lanes with OF nodes if those exist.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Link: https://patch.msgid.link/20251125114847.804961-3-vladimir.oltean@nxp.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/freescale/phy-fsl-lynx-28g.c

index c20d2636c5e9c079d9178fdfa9030dd8041ce0ba..901240bbcade43a3b33deeaf791e012cb7745325 100644 (file)
@@ -579,12 +579,33 @@ static struct phy *lynx_28g_xlate(struct device *dev,
        return priv->lane[idx].phy;
 }
 
+static int lynx_28g_probe_lane(struct lynx_28g_priv *priv, int id,
+                              struct device_node *dn)
+{
+       struct lynx_28g_lane *lane = &priv->lane[id];
+       struct phy *phy;
+
+       memset(lane, 0, sizeof(*lane));
+
+       phy = devm_phy_create(priv->dev, dn, &lynx_28g_ops);
+       if (IS_ERR(phy))
+               return PTR_ERR(phy);
+
+       lane->priv = priv;
+       lane->phy = phy;
+       lane->id = id;
+       phy_set_drvdata(phy, lane);
+       lynx_28g_lane_read_configuration(lane);
+
+       return 0;
+}
+
 static int lynx_28g_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
        struct phy_provider *provider;
        struct lynx_28g_priv *priv;
-       int i;
+       int err;
 
        priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
        if (!priv)
@@ -597,21 +618,10 @@ static int lynx_28g_probe(struct platform_device *pdev)
 
        lynx_28g_pll_read_configuration(priv);
 
-       for (i = 0; i < LYNX_28G_NUM_LANE; i++) {
-               struct lynx_28g_lane *lane = &priv->lane[i];
-               struct phy *phy;
-
-               memset(lane, 0, sizeof(*lane));
-
-               phy = devm_phy_create(&pdev->dev, NULL, &lynx_28g_ops);
-               if (IS_ERR(phy))
-                       return PTR_ERR(phy);
-
-               lane->priv = priv;
-               lane->phy = phy;
-               lane->id = i;
-               phy_set_drvdata(phy, lane);
-               lynx_28g_lane_read_configuration(lane);
+       for (int i = 0; i < LYNX_28G_NUM_LANE; i++) {
+               err = lynx_28g_probe_lane(priv, i, NULL);
+               if (err)
+                       return err;
        }
 
        dev_set_drvdata(dev, priv);