pinctrl: equilibrium: Use scope based of_node_put() cleanups

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>
This commit is contained in:
Peng Fan 2024-06-27 21:17:20 +08:00 committed by Linus Walleij
parent 791a8bb202
commit 2677d53d5c

View File

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