]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
realtek: mdio: Handle return code of setup_ctrl()
authorMarkus Stockhausen <markus.stockhausen@gmx.de>
Sun, 3 May 2026 08:43:14 +0000 (10:43 +0200)
committerRobert Marko <robimarko@gmail.com>
Tue, 5 May 2026 11:12:17 +0000 (13:12 +0200)
Improve error handling for the setup_ctrl() functions.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/23204
Signed-off-by: Robert Marko <robimarko@gmail.com>
target/linux/realtek/files-6.18/drivers/net/mdio/mdio-realtek-otto.c

index c200fe6ff91c7c4a53c3524befe71f4efff032e9..e24da0c1e581e09c2632f727df03b42ae268875b 100644 (file)
@@ -699,9 +699,7 @@ static int rtmdio_838x_setup_ctrl(struct rtmdio_ctrl *ctrl)
         * PHY_PATCH_DONE enables phy control via SoC. This is required for phy access,
         * including patching. Must always be set before the phys are probed.
         */
-       regmap_set_bits(ctrl->map, RTMDIO_838X_SMI_GLB_CTRL, RTMDIO_838X_PHY_PATCH_DONE);
-
-       return 0;
+       return regmap_set_bits(ctrl->map, RTMDIO_838X_SMI_GLB_CTRL, RTMDIO_838X_PHY_PATCH_DONE);
 }
 
 static void rtmdio_838x_setup_polling(struct rtmdio_ctrl *ctrl)
@@ -737,10 +735,15 @@ static int rtmdio_839x_setup_ctrl(struct rtmdio_ctrl *ctrl)
 
 static int rtmdio_930x_setup_ctrl(struct rtmdio_ctrl *ctrl)
 {
+       int ret;
+
        /* Define C22/C45 bus feature set */
-       for (int smi_bus = 0; smi_bus < ctrl->cfg->num_busses; smi_bus++)
-               regmap_assign_bits(ctrl->map, RTMDIO_930X_SMI_GLB_CTRL,
-                                  BIT(16 + smi_bus), ctrl->bus[smi_bus].is_c45);
+       for (int smi_bus = 0; smi_bus < ctrl->cfg->num_busses; smi_bus++) {
+               ret = regmap_assign_bits(ctrl->map, RTMDIO_930X_SMI_GLB_CTRL,
+                                        BIT(16 + smi_bus), ctrl->bus[smi_bus].is_c45);
+               if (ret)
+                       return ret;
+       }
 
        return 0;
 }
@@ -794,9 +797,7 @@ static int rtmdio_931x_setup_ctrl(struct rtmdio_ctrl *ctrl)
                if (ctrl->bus[smi_bus].is_c45)
                        c45_mask |= 0x2 << (smi_bus * 2);  /* Std. C45, non-standard is 0x3 */
        }
-       regmap_update_bits(ctrl->map, RTMDIO_931X_SMI_GLB_CTRL1, GENMASK(7, 0), c45_mask);
-
-       return 0;
+       return regmap_update_bits(ctrl->map, RTMDIO_931X_SMI_GLB_CTRL1, GENMASK(7, 0), c45_mask);
 }
 
 static void rtmdio_931x_setup_polling(struct rtmdio_ctrl *ctrl)
@@ -969,7 +970,9 @@ static int rtmdio_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
-       ctrl->cfg->setup_ctrl(ctrl);
+       ret = ctrl->cfg->setup_ctrl(ctrl);
+       if (ret)
+               return ret;
 
        device_for_each_child_node_scoped(dev, child) {
                ret = rtmdio_probe_one(dev, ctrl, child);