pinctrl: starfive: Use scope based of_node_put() cleanups
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>
This commit is contained in:
parent
11eefc0ac8
commit
8fa99c0035
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user