@@ -480,7 +480,6 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
480
480
{
481
481
struct starfive_pinctrl * sfp = pinctrl_dev_get_drvdata (pctldev );
482
482
struct device * dev = sfp -> gc .parent ;
483
- struct device_node * child ;
484
483
struct pinctrl_map * map ;
485
484
const char * * pgnames ;
486
485
const char * grpname ;
@@ -492,20 +491,18 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
492
491
493
492
nmaps = 0 ;
494
493
ngroups = 0 ;
495
- for_each_available_child_of_node (np , child ) {
494
+ for_each_available_child_of_node_scoped (np , child ) {
496
495
int npinmux = of_property_count_u32_elems (child , "pinmux" );
497
496
int npins = of_property_count_u32_elems (child , "pins" );
498
497
499
498
if (npinmux > 0 && npins > 0 ) {
500
499
dev_err (dev , "invalid pinctrl group %pOFn.%pOFn: both pinmux and pins set\n" ,
501
500
np , child );
502
- of_node_put (child );
503
501
return - EINVAL ;
504
502
}
505
503
if (npinmux == 0 && npins == 0 ) {
506
504
dev_err (dev , "invalid pinctrl group %pOFn.%pOFn: neither pinmux nor pins set\n" ,
507
505
np , child );
508
- of_node_put (child );
509
506
return - EINVAL ;
510
507
}
511
508
@@ -527,14 +524,14 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
527
524
nmaps = 0 ;
528
525
ngroups = 0 ;
529
526
mutex_lock (& sfp -> mutex );
530
- for_each_available_child_of_node (np , child ) {
527
+ for_each_available_child_of_node_scoped (np , child ) {
531
528
int npins ;
532
529
int i ;
533
530
534
531
grpname = devm_kasprintf (dev , GFP_KERNEL , "%pOFn.%pOFn" , np , child );
535
532
if (!grpname ) {
536
533
ret = - ENOMEM ;
537
- goto put_child ;
534
+ goto free_map ;
538
535
}
539
536
540
537
pgnames [ngroups ++ ] = grpname ;
@@ -543,18 +540,18 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
543
540
pins = devm_kcalloc (dev , npins , sizeof (* pins ), GFP_KERNEL );
544
541
if (!pins ) {
545
542
ret = - ENOMEM ;
546
- goto put_child ;
543
+ goto free_map ;
547
544
}
548
545
549
546
pinmux = devm_kcalloc (dev , npins , sizeof (* pinmux ), GFP_KERNEL );
550
547
if (!pinmux ) {
551
548
ret = - ENOMEM ;
552
- goto put_child ;
549
+ goto free_map ;
553
550
}
554
551
555
552
ret = of_property_read_u32_array (child , "pinmux" , pinmux , npins );
556
553
if (ret )
557
- goto put_child ;
554
+ goto free_map ;
558
555
559
556
for (i = 0 ; i < npins ; i ++ ) {
560
557
unsigned int gpio = starfive_pinmux_to_gpio (pinmux [i ]);
@@ -570,7 +567,7 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
570
567
pins = devm_kcalloc (dev , npins , sizeof (* pins ), GFP_KERNEL );
571
568
if (!pins ) {
572
569
ret = - ENOMEM ;
573
- goto put_child ;
570
+ goto free_map ;
574
571
}
575
572
576
573
pinmux = NULL ;
@@ -580,18 +577,18 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
580
577
581
578
ret = of_property_read_u32_index (child , "pins" , i , & v );
582
579
if (ret )
583
- goto put_child ;
580
+ goto free_map ;
584
581
pins [i ] = v ;
585
582
}
586
583
} else {
587
584
ret = - EINVAL ;
588
- goto put_child ;
585
+ goto free_map ;
589
586
}
590
587
591
588
ret = pinctrl_generic_add_group (pctldev , grpname , pins , npins , pinmux );
592
589
if (ret < 0 ) {
593
590
dev_err (dev , "error adding group %s: %d\n" , grpname , ret );
594
- goto put_child ;
591
+ goto free_map ;
595
592
}
596
593
597
594
ret = pinconf_generic_parse_dt_config (child , pctldev ,
@@ -600,7 +597,7 @@ static int starfive_dt_node_to_map(struct pinctrl_dev *pctldev,
600
597
if (ret ) {
601
598
dev_err (dev , "error parsing pin config of group %s: %d\n" ,
602
599
grpname , ret );
603
- goto put_child ;
600
+ goto free_map ;
604
601
}
605
602
606
603
/* 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,
623
620
mutex_unlock (& sfp -> mutex );
624
621
return 0 ;
625
622
626
- put_child :
627
- of_node_put (child );
628
623
free_map :
629
624
pinctrl_utils_free_map (pctldev , map , nmaps );
630
625
mutex_unlock (& sfp -> mutex );
0 commit comments