]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
pinctrl: starfive: Use scope based of_node_put() cleanups
authorPeng Fan <peng.fan@nxp.com>
Sat, 4 May 2024 13:20:02 +0000 (21:20 +0800)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 26 Jun 2024 09:55:52 +0000 (11:55 +0200)
Use scope based of_node_put() cleanup to simplify code.

Acked-by: Emil Renner Berthing <emil.renner.berthing@canonical.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
Link: https://lore.kernel.org/20240504-pinctrl-cleanup-v2-4-26c5f2dc1181@nxp.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c
drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c

index 6df7a310c7ed62f2dd20fc542900e0187a3e483a..27f99183d994dccb92aac81ca42228bdb9225e87 100644 (file)
@@ -480,7 +480,6 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
 {
        struct starfive_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
        struct device *dev = sfp->gc.parent;
-       struct device_node *child;
        struct pinctrl_map *map;
        const char **pgnames;
        const char *grpname;
@@ -492,20 +491,18 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
 
        nmaps = 0;
        ngroups = 0;
-       for_each_available_child_of_node(np, child) {
+       for_each_available_child_of_node_scoped(np, child) {
                int npinmux = of_property_count_u32_elems(child, "pinmux");
                int npins   = of_property_count_u32_elems(child, "pins");
 
                if (npinmux > 0 && npins > 0) {
                        dev_err(dev, "invalid pinctrl group %pOFn.%pOFn: both pinmux and pins set\n",
                                np, child);
-                       of_node_put(child);
                        return -EINVAL;
                }
                if (npinmux == 0 && npins == 0) {
                        dev_err(dev, "invalid pinctrl group %pOFn.%pOFn: neither pinmux nor pins set\n",
                                np, child);
-                       of_node_put(child);
                        return -EINVAL;
                }
 
@@ -527,14 +524,14 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
        nmaps = 0;
        ngroups = 0;
        mutex_lock(&sfp->mutex);
-       for_each_available_child_of_node(np, child) {
+       for_each_available_child_of_node_scoped(np, child) {
                int npins;
                int i;
 
                grpname = devm_kasprintf(dev, GFP_KERNEL, "%pOFn.%pOFn", np, child);
                if (!grpname) {
                        ret = -ENOMEM;
-                       goto put_child;
+                       goto free_map;
                }
 
                pgnames[ngroups++] = grpname;
@@ -543,18 +540,18 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
                        pins = devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL);
                        if (!pins) {
                                ret = -ENOMEM;
-                               goto put_child;
+                               goto free_map;
                        }
 
                        pinmux = devm_kcalloc(dev, npins, sizeof(*pinmux), GFP_KERNEL);
                        if (!pinmux) {
                                ret = -ENOMEM;
-                               goto put_child;
+                               goto free_map;
                        }
 
                        ret = of_property_read_u32_array(child, "pinmux", pinmux, npins);
                        if (ret)
-                               goto put_child;
+                               goto free_map;
 
                        for (i = 0; i < npins; i++) {
                                unsigned int gpio = starfive_pinmux_to_gpio(pinmux[i]);
@@ -570,7 +567,7 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
                        pins = devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL);
                        if (!pins) {
                                ret = -ENOMEM;
-                               goto put_child;
+                               goto free_map;
                        }
 
                        pinmux = NULL;
@@ -580,18 +577,18 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
 
                                ret = of_property_read_u32_index(child, "pins", i, &v);
                                if (ret)
-                                       goto put_child;
+                                       goto free_map;
                                pins[i] = v;
                        }
                } else {
                        ret = -EINVAL;
-                       goto put_child;
+                       goto free_map;
                }
 
                ret = pinctrl_generic_add_group(pctldev, grpname, pins, npins, pinmux);
                if (ret < 0) {
                        dev_err(dev, "error adding group %s: %d\n", grpname, ret);
-                       goto put_child;
+                       goto free_map;
                }
 
                ret = pinconf_generic_parse_dt_config(child, pctldev,
@@ -600,7 +597,7 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
                if (ret) {
                        dev_err(dev, "error parsing pin config of group %s: %d\n",
                                grpname, ret);
-                       goto put_child;
+                       goto free_map;
                }
 
                /* don't create a map if there are no pinconf settings */
@@ -623,8 +620,6 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
        mutex_unlock(&sfp->mutex);
        return 0;
 
-put_child:
-       of_node_put(child);
 free_map:
        pinctrl_utils_free_map(pctldev, map, nmaps);
        mutex_unlock(&sfp->mutex);
index 9609eb1ecc3d8428247fa28f0e12e2a4010e7415..4ce080caa2338e9c5cef9d1aa2bac313cafe214d 100644 (file)
@@ -150,7 +150,7 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
        nmaps = 0;
        ngroups = 0;
        mutex_lock(&sfp->mutex);
-       for_each_available_child_of_node(np, child) {
+       for_each_available_child_of_node_scoped(np, child) {
                int npins = of_property_count_u32_elems(child, "pinmux");
                int *pins;
                u32 *pinmux;
@@ -161,13 +161,13 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
                                "invalid pinctrl group %pOFn.%pOFn: pinmux not set\n",
                                np, child);
                        ret = -EINVAL;
-                       goto put_child;
+                       goto free_map;
                }
 
                grpname = devm_kasprintf(dev, GFP_KERNEL, "%pOFn.%pOFn", np, child);
                if (!grpname) {
                        ret = -ENOMEM;
-                       goto put_child;
+                       goto free_map;
                }
 
                pgnames[ngroups++] = grpname;
@@ -175,18 +175,18 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
                pins = devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL);
                if (!pins) {
                        ret = -ENOMEM;
-                       goto put_child;
+                       goto free_map;
                }
 
                pinmux = devm_kcalloc(dev, npins, sizeof(*pinmux), GFP_KERNEL);
                if (!pinmux) {
                        ret = -ENOMEM;
-                       goto put_child;
+                       goto free_map;
                }
 
                ret = of_property_read_u32_array(child, "pinmux", pinmux, npins);
                if (ret)
-                       goto put_child;
+                       goto free_map;
 
                for (i = 0; i < npins; i++)
                        pins[i] = jh7110_pinmux_pin(pinmux[i]);
@@ -200,7 +200,7 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
                                                pins, npins, pinmux);
                if (ret < 0) {
                        dev_err(dev, "error adding group %s: %d\n", grpname, ret);
-                       goto put_child;
+                       goto free_map;
                }
 
                ret = pinconf_generic_parse_dt_config(child, pctldev,
@@ -209,7 +209,7 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
                if (ret) {
                        dev_err(dev, "error parsing pin config of group %s: %d\n",
                                grpname, ret);
-                       goto put_child;
+                       goto free_map;
                }
 
                /* don't create a map if there are no pinconf settings */
@@ -233,8 +233,6 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
        *num_maps = nmaps;
        return 0;
 
-put_child:
-       of_node_put(child);
 free_map:
        pinctrl_utils_free_map(pctldev, map, nmaps);
        mutex_unlock(&sfp->mutex);