summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrew Fustini <dfustini@tenstorrent.com>2024-10-08 18:16:48 -0700
committerLinus Walleij <linus.walleij@linaro.org>2024-10-09 14:42:07 +0200
commit573cba282788c90b4ed01e21b9d3ba522fdcda17 (patch)
treee3a977acc35f001d9306c967e1d2f5d2b52f8a70
parentf3a3d006a443e3e39f97b4e71a8d134cda417109 (diff)
pinctrl: th1520: Convert dt child node loop to scoped iterator
Convert th1520_pinctrl_dt_node_to_map() to use a scoped iterator with for_each_available_child_of_node_scoped(). As a result, there is no need to call of_node_put() anymore. The put_child label has been renamed to free_map which is now a more accurate description. Suggested-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Drew Fustini <dfustini@tenstorrent.com> Link: https://lore.kernel.org/20241008-th1520-pinctrl-fixes-v3-3-5b60db446a49@tenstorrent.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r--drivers/pinctrl/pinctrl-th1520.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/pinctrl/pinctrl-th1520.c b/drivers/pinctrl/pinctrl-th1520.c
index 7ed3f82b9339..c8d2ee6defa7 100644
--- a/drivers/pinctrl/pinctrl-th1520.c
+++ b/drivers/pinctrl/pinctrl-th1520.c
@@ -417,7 +417,6 @@ static int th1520_pinctrl_dt_node_to_map(struct pinctrl_dev *pctldev,
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;
@@ -425,11 +424,10 @@ static int th1520_pinctrl_dt_node_to_map(struct pinctrl_dev *pctldev,
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;
@@ -445,7 +443,7 @@ static int th1520_pinctrl_dt_node_to_map(struct pinctrl_dev *pctldev,
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;
@@ -458,7 +456,7 @@ static int th1520_pinctrl_dt_node_to_map(struct pinctrl_dev *pctldev,
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)) {
@@ -524,7 +522,7 @@ static int th1520_pinctrl_dt_node_to_map(struct pinctrl_dev *pctldev,
npins, (void *)muxtype);
if (ret < 0) {
dev_err(thp->pctl->dev, "error adding function %s\n", funcname);
- goto put_child;
+ goto free_map;
}
}
}
@@ -535,8 +533,7 @@ static int th1520_pinctrl_dt_node_to_map(struct pinctrl_dev *pctldev,
free_configs:
kfree(configs);
-put_child:
- of_node_put(child);
+free_map:
th1520_pinctrl_dt_free_map(pctldev, map, nmaps);
return ret;
}