mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-01 10:43:43 +00:00
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:
parent
791a8bb202
commit
2677d53d5c
@ -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));
|
||||||
|
Loading…
Reference in New Issue
Block a user