@@ -145,7 +145,6 @@ struct rzg2l_pinctrl {
145
145
const struct rzg2l_pinctrl_data * data ;
146
146
void __iomem * base ;
147
147
struct device * dev ;
148
- struct clk * clk ;
149
148
150
149
struct gpio_chip gpio_chip ;
151
150
struct pinctrl_gpio_range gpio_range ;
@@ -250,6 +249,7 @@ static int rzg2l_map_add_config(struct pinctrl_map *map,
250
249
251
250
static int rzg2l_dt_subnode_to_map (struct pinctrl_dev * pctldev ,
252
251
struct device_node * np ,
252
+ struct device_node * parent ,
253
253
struct pinctrl_map * * map ,
254
254
unsigned int * num_maps ,
255
255
unsigned int * index )
@@ -267,6 +267,7 @@ static int rzg2l_dt_subnode_to_map(struct pinctrl_dev *pctldev,
267
267
struct property * prop ;
268
268
int ret , gsel , fsel ;
269
269
const char * * pin_fn ;
270
+ const char * name ;
270
271
const char * pin ;
271
272
272
273
pinmux = of_find_property (np , "pinmux" , NULL );
@@ -350,8 +351,19 @@ static int rzg2l_dt_subnode_to_map(struct pinctrl_dev *pctldev,
350
351
psel_val [i ] = MUX_FUNC (value );
351
352
}
352
353
354
+ if (parent ) {
355
+ name = devm_kasprintf (pctrl -> dev , GFP_KERNEL , "%pOFn.%pOFn" ,
356
+ parent , np );
357
+ if (!name ) {
358
+ ret = - ENOMEM ;
359
+ goto done ;
360
+ }
361
+ } else {
362
+ name = np -> name ;
363
+ }
364
+
353
365
/* Register a single pin group listing all the pins we read from DT */
354
- gsel = pinctrl_generic_add_group (pctldev , np -> name , pins , num_pinmux , NULL );
366
+ gsel = pinctrl_generic_add_group (pctldev , name , pins , num_pinmux , NULL );
355
367
if (gsel < 0 ) {
356
368
ret = gsel ;
357
369
goto done ;
@@ -361,17 +373,16 @@ static int rzg2l_dt_subnode_to_map(struct pinctrl_dev *pctldev,
361
373
* Register a single group function where the 'data' is an array PSEL
362
374
* register values read from DT.
363
375
*/
364
- pin_fn [0 ] = np -> name ;
365
- fsel = pinmux_generic_add_function (pctldev , np -> name , pin_fn , 1 ,
366
- psel_val );
376
+ pin_fn [0 ] = name ;
377
+ fsel = pinmux_generic_add_function (pctldev , name , pin_fn , 1 , psel_val );
367
378
if (fsel < 0 ) {
368
379
ret = fsel ;
369
380
goto remove_group ;
370
381
}
371
382
372
383
maps [idx ].type = PIN_MAP_TYPE_MUX_GROUP ;
373
- maps [idx ].data .mux .group = np -> name ;
374
- maps [idx ].data .mux .function = np -> name ;
384
+ maps [idx ].data .mux .group = name ;
385
+ maps [idx ].data .mux .function = name ;
375
386
idx ++ ;
376
387
377
388
dev_dbg (pctrl -> dev , "Parsed %pOF with %d pins\n" , np , num_pinmux );
@@ -418,7 +429,7 @@ static int rzg2l_dt_node_to_map(struct pinctrl_dev *pctldev,
418
429
index = 0 ;
419
430
420
431
for_each_child_of_node (np , child ) {
421
- ret = rzg2l_dt_subnode_to_map (pctldev , child , map ,
432
+ ret = rzg2l_dt_subnode_to_map (pctldev , child , np , map ,
422
433
num_maps , & index );
423
434
if (ret < 0 ) {
424
435
of_node_put (child );
@@ -427,7 +438,7 @@ static int rzg2l_dt_node_to_map(struct pinctrl_dev *pctldev,
427
438
}
428
439
429
440
if (* num_maps == 0 ) {
430
- ret = rzg2l_dt_subnode_to_map (pctldev , np , map ,
441
+ ret = rzg2l_dt_subnode_to_map (pctldev , np , NULL , map ,
431
442
num_maps , & index );
432
443
if (ret < 0 )
433
444
goto done ;
@@ -1459,14 +1470,10 @@ static int rzg2l_pinctrl_register(struct rzg2l_pinctrl *pctrl)
1459
1470
return 0 ;
1460
1471
}
1461
1472
1462
- static void rzg2l_pinctrl_clk_disable (void * data )
1463
- {
1464
- clk_disable_unprepare (data );
1465
- }
1466
-
1467
1473
static int rzg2l_pinctrl_probe (struct platform_device * pdev )
1468
1474
{
1469
1475
struct rzg2l_pinctrl * pctrl ;
1476
+ struct clk * clk ;
1470
1477
int ret ;
1471
1478
1472
1479
BUILD_BUG_ON (ARRAY_SIZE (rzg2l_gpio_configs ) * RZG2L_PINS_PER_PORT >
@@ -1489,33 +1496,16 @@ static int rzg2l_pinctrl_probe(struct platform_device *pdev)
1489
1496
if (IS_ERR (pctrl -> base ))
1490
1497
return PTR_ERR (pctrl -> base );
1491
1498
1492
- pctrl -> clk = devm_clk_get (pctrl -> dev , NULL );
1493
- if (IS_ERR (pctrl -> clk )) {
1494
- ret = PTR_ERR (pctrl -> clk );
1495
- dev_err (pctrl -> dev , "failed to get GPIO clk : %i\n" , ret );
1496
- return ret ;
1497
- }
1499
+ clk = devm_clk_get_enabled (pctrl -> dev , NULL );
1500
+ if (IS_ERR (clk ))
1501
+ return dev_err_probe (pctrl -> dev , PTR_ERR (clk ),
1502
+ "failed to enable GPIO clk\n" );
1498
1503
1499
1504
spin_lock_init (& pctrl -> lock );
1500
1505
spin_lock_init (& pctrl -> bitmap_lock );
1501
1506
1502
1507
platform_set_drvdata (pdev , pctrl );
1503
1508
1504
- ret = clk_prepare_enable (pctrl -> clk );
1505
- if (ret ) {
1506
- dev_err (pctrl -> dev , "failed to enable GPIO clk: %i\n" , ret );
1507
- return ret ;
1508
- }
1509
-
1510
- ret = devm_add_action_or_reset (& pdev -> dev , rzg2l_pinctrl_clk_disable ,
1511
- pctrl -> clk );
1512
- if (ret ) {
1513
- dev_err (pctrl -> dev ,
1514
- "failed to register GPIO clk disable action, %i\n" ,
1515
- ret );
1516
- return ret ;
1517
- }
1518
-
1519
1509
ret = rzg2l_pinctrl_register (pctrl );
1520
1510
if (ret )
1521
1511
return ret ;
0 commit comments