Skip to content

Commit 8fa99c0

Browse files
MrVanlinusw
authored andcommitted
pinctrl: starfive: Use scope based of_node_put() cleanups
Use scope based of_node_put() cleanup to simplify code. Acked-by: Emil Renner Berthing <[email protected]> Signed-off-by: Peng Fan <[email protected]> Link: https://lore.kernel.org/[email protected] Signed-off-by: Linus Walleij <[email protected]>
1 parent 11eefc0 commit 8fa99c0

File tree

2 files changed

+19
-26
lines changed

2 files changed

+19
-26
lines changed

drivers/pinctrl/starfive/pinctrl-starfive-jh7100.c

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,6 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
480480
{
481481
struct starfive_pinctrl *sfp = pinctrl_dev_get_drvdata(pctldev);
482482
struct device *dev = sfp->gc.parent;
483-
struct device_node *child;
484483
struct pinctrl_map *map;
485484
const char **pgnames;
486485
const char *grpname;
@@ -492,20 +491,18 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
492491

493492
nmaps = 0;
494493
ngroups = 0;
495-
for_each_available_child_of_node(np, child) {
494+
for_each_available_child_of_node_scoped(np, child) {
496495
int npinmux = of_property_count_u32_elems(child, "pinmux");
497496
int npins = of_property_count_u32_elems(child, "pins");
498497

499498
if (npinmux > 0 && npins > 0) {
500499
dev_err(dev, "invalid pinctrl group %pOFn.%pOFn: both pinmux and pins set\n",
501500
np, child);
502-
of_node_put(child);
503501
return -EINVAL;
504502
}
505503
if (npinmux == 0 && npins == 0) {
506504
dev_err(dev, "invalid pinctrl group %pOFn.%pOFn: neither pinmux nor pins set\n",
507505
np, child);
508-
of_node_put(child);
509506
return -EINVAL;
510507
}
511508

@@ -527,14 +524,14 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
527524
nmaps = 0;
528525
ngroups = 0;
529526
mutex_lock(&sfp->mutex);
530-
for_each_available_child_of_node(np, child) {
527+
for_each_available_child_of_node_scoped(np, child) {
531528
int npins;
532529
int i;
533530

534531
grpname = devm_kasprintf(dev, GFP_KERNEL, "%pOFn.%pOFn", np, child);
535532
if (!grpname) {
536533
ret = -ENOMEM;
537-
goto put_child;
534+
goto free_map;
538535
}
539536

540537
pgnames[ngroups++] = grpname;
@@ -543,18 +540,18 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
543540
pins = devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL);
544541
if (!pins) {
545542
ret = -ENOMEM;
546-
goto put_child;
543+
goto free_map;
547544
}
548545

549546
pinmux = devm_kcalloc(dev, npins, sizeof(*pinmux), GFP_KERNEL);
550547
if (!pinmux) {
551548
ret = -ENOMEM;
552-
goto put_child;
549+
goto free_map;
553550
}
554551

555552
ret = of_property_read_u32_array(child, "pinmux", pinmux, npins);
556553
if (ret)
557-
goto put_child;
554+
goto free_map;
558555

559556
for (i = 0; i < npins; i++) {
560557
unsigned int gpio = starfive_pinmux_to_gpio(pinmux[i]);
@@ -570,7 +567,7 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
570567
pins = devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL);
571568
if (!pins) {
572569
ret = -ENOMEM;
573-
goto put_child;
570+
goto free_map;
574571
}
575572

576573
pinmux = NULL;
@@ -580,18 +577,18 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
580577

581578
ret = of_property_read_u32_index(child, "pins", i, &v);
582579
if (ret)
583-
goto put_child;
580+
goto free_map;
584581
pins[i] = v;
585582
}
586583
} else {
587584
ret = -EINVAL;
588-
goto put_child;
585+
goto free_map;
589586
}
590587

591588
ret = pinctrl_generic_add_group(pctldev, grpname, pins, npins, pinmux);
592589
if (ret < 0) {
593590
dev_err(dev, "error adding group %s: %d\n", grpname, ret);
594-
goto put_child;
591+
goto free_map;
595592
}
596593

597594
ret = pinconf_generic_parse_dt_config(child, pctldev,
@@ -600,7 +597,7 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
600597
if (ret) {
601598
dev_err(dev, "error parsing pin config of group %s: %d\n",
602599
grpname, ret);
603-
goto put_child;
600+
goto free_map;
604601
}
605602

606603
/* 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,
623620
mutex_unlock(&sfp->mutex);
624621
return 0;
625622

626-
put_child:
627-
of_node_put(child);
628623
free_map:
629624
pinctrl_utils_free_map(pctldev, map, nmaps);
630625
mutex_unlock(&sfp->mutex);

drivers/pinctrl/starfive/pinctrl-starfive-jh7110.c

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
150150
nmaps = 0;
151151
ngroups = 0;
152152
mutex_lock(&sfp->mutex);
153-
for_each_available_child_of_node(np, child) {
153+
for_each_available_child_of_node_scoped(np, child) {
154154
int npins = of_property_count_u32_elems(child, "pinmux");
155155
int *pins;
156156
u32 *pinmux;
@@ -161,32 +161,32 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
161161
"invalid pinctrl group %pOFn.%pOFn: pinmux not set\n",
162162
np, child);
163163
ret = -EINVAL;
164-
goto put_child;
164+
goto free_map;
165165
}
166166

167167
grpname = devm_kasprintf(dev, GFP_KERNEL, "%pOFn.%pOFn", np, child);
168168
if (!grpname) {
169169
ret = -ENOMEM;
170-
goto put_child;
170+
goto free_map;
171171
}
172172

173173
pgnames[ngroups++] = grpname;
174174

175175
pins = devm_kcalloc(dev, npins, sizeof(*pins), GFP_KERNEL);
176176
if (!pins) {
177177
ret = -ENOMEM;
178-
goto put_child;
178+
goto free_map;
179179
}
180180

181181
pinmux = devm_kcalloc(dev, npins, sizeof(*pinmux), GFP_KERNEL);
182182
if (!pinmux) {
183183
ret = -ENOMEM;
184-
goto put_child;
184+
goto free_map;
185185
}
186186

187187
ret = of_property_read_u32_array(child, "pinmux", pinmux, npins);
188188
if (ret)
189-
goto put_child;
189+
goto free_map;
190190

191191
for (i = 0; i < npins; i++)
192192
pins[i] = jh7110_pinmux_pin(pinmux[i]);
@@ -200,7 +200,7 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
200200
pins, npins, pinmux);
201201
if (ret < 0) {
202202
dev_err(dev, "error adding group %s: %d\n", grpname, ret);
203-
goto put_child;
203+
goto free_map;
204204
}
205205

206206
ret = pinconf_generic_parse_dt_config(child, pctldev,
@@ -209,7 +209,7 @@ static int jh7110_dt_node_to_map(struct pinctrl_dev *pctldev,
209209
if (ret) {
210210
dev_err(dev, "error parsing pin config of group %s: %d\n",
211211
grpname, ret);
212-
goto put_child;
212+
goto free_map;
213213
}
214214

215215
/* 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,
233233
*num_maps = nmaps;
234234
return 0;
235235

236-
put_child:
237-
of_node_put(child);
238236
free_map:
239237
pinctrl_utils_free_map(pctldev, map, nmaps);
240238
mutex_unlock(&sfp->mutex);

0 commit comments

Comments
 (0)