]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
pinctrl: equilibrium: Use scope based of_node_put() cleanups
authorPeng Fan <peng.fan@nxp.com>
Thu, 27 Jun 2024 13:17:20 +0000 (21:17 +0800)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 3 Jul 2024 12:40:38 +0000 (14:40 +0200)
Use scope based of_node_put() cleanup to simplify code.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Link: https://lore.kernel.org/20240627131721.678727-3-peng.fan@oss.nxp.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-equilibrium.c

index a6d089eaaae50f8e5842e0e0b498458fd2d0d459..3a9a0f059090fe5aca9264e3d764db5cb25e40ef 100644 (file)
@@ -588,7 +588,6 @@ static int funcs_utils(struct device *dev, struct pinfunction *funcs,
                       unsigned int *nr_funcs, funcs_util_ops op)
 {
        struct device_node *node = dev->of_node;
-       struct device_node *np;
        struct property *prop;
        const char *fn_name;
        const char **groups;
@@ -596,7 +595,7 @@ static int funcs_utils(struct device *dev, struct pinfunction *funcs,
        int i, j;
 
        i = 0;
-       for_each_child_of_node(node, np) {
+       for_each_child_of_node_scoped(node, np) {
                prop = of_find_property(np, "groups", NULL);
                if (!prop)
                        continue;
@@ -635,7 +634,6 @@ static int funcs_utils(struct device *dev, struct pinfunction *funcs,
                        break;
 
                default:
-                       of_node_put(np);
                        return -EINVAL;
                }
                i++;
@@ -708,11 +706,10 @@ static int eqbr_build_groups(struct eqbr_pinctrl_drv_data *drvdata)
        struct device_node *node = dev->of_node;
        unsigned int *pins, *pinmux, pin_id, pinmux_id;
        struct pingroup group, *grp = &group;
-       struct device_node *np;
        struct property *prop;
        int j, err;
 
-       for_each_child_of_node(node, np) {
+       for_each_child_of_node_scoped(node, np) {
                prop = of_find_property(np, "groups", NULL);
                if (!prop)
                        continue;
@@ -720,42 +717,35 @@ static int eqbr_build_groups(struct eqbr_pinctrl_drv_data *drvdata)
                err = of_property_count_u32_elems(np, "pins");
                if (err < 0) {
                        dev_err(dev, "No pins in the group: %s\n", prop->name);
-                       of_node_put(np);
                        return err;
                }
                grp->npins = err;
                grp->name = prop->value;
                pins = devm_kcalloc(dev, grp->npins, sizeof(*pins), GFP_KERNEL);
-               if (!pins) {
-                       of_node_put(np);
+               if (!pins)
                        return -ENOMEM;
-               }
+
                grp->pins = pins;
 
                pinmux = devm_kcalloc(dev, grp->npins, sizeof(*pinmux), GFP_KERNEL);
-               if (!pinmux) {
-                       of_node_put(np);
+               if (!pinmux)
                        return -ENOMEM;
-               }
 
                for (j = 0; j < grp->npins; j++) {
                        if (of_property_read_u32_index(np, "pins", j, &pin_id)) {
                                dev_err(dev, "Group %s: Read intel pins id failed\n",
                                        grp->name);
-                               of_node_put(np);
                                return -EINVAL;
                        }
                        if (pin_id >= drvdata->pctl_desc.npins) {
                                dev_err(dev, "Group %s: Invalid pin ID, idx: %d, pin %u\n",
                                        grp->name, j, pin_id);
-                               of_node_put(np);
                                return -EINVAL;
                        }
                        pins[j] = pin_id;
                        if (of_property_read_u32_index(np, "pinmux", j, &pinmux_id)) {
                                dev_err(dev, "Group %s: Read intel pinmux id failed\n",
                                        grp->name);
-                               of_node_put(np);
                                return -EINVAL;
                        }
                        pinmux[j] = pinmux_id;
@@ -766,7 +756,6 @@ static int eqbr_build_groups(struct eqbr_pinctrl_drv_data *drvdata)
                                                pinmux);
                if (err < 0) {
                        dev_err(dev, "Failed to register group %s\n", grp->name);
-                       of_node_put(np);
                        return err;
                }
                memset(&group, 0, sizeof(group));