unsigned int *num_maps)
{
struct th1520_pinctrl *thp = pinctrl_dev_get_drvdata(pctldev);
- struct device_node *child;
struct pinctrl_map *map;
unsigned long *configs;
unsigned int nconfigs;
int ret;
nmaps = 0;
- for_each_available_child_of_node(np, child) {
+ for_each_available_child_of_node_scoped(np, child) {
int npins = of_property_count_strings(child, "pins");
if (npins <= 0) {
- of_node_put(child);
dev_err(thp->pctl->dev, "no pins selected for %pOFn.%pOFn\n",
np, child);
return -EINVAL;
nmaps = 0;
guard(mutex)(&thp->mutex);
- for_each_available_child_of_node(np, child) {
+ for_each_available_child_of_node_scoped(np, child) {
unsigned int rollback = nmaps;
enum th1520_muxtype muxtype;
struct property *prop;
if (ret) {
dev_err(thp->pctl->dev, "%pOFn.%pOFn: error parsing pin config\n",
np, child);
- goto put_child;
+ goto free_map;
}
if (!of_property_read_string(child, "function", &funcname)) {
npins, (void *)muxtype);
if (ret < 0) {
dev_err(thp->pctl->dev, "error adding function %s\n", funcname);
- goto put_child;
+ goto free_map;
}
}
}
free_configs:
kfree(configs);
-put_child:
- of_node_put(child);
+free_map:
th1520_pinctrl_dt_free_map(pctldev, map, nmaps);
return ret;
}