Skip to content

Commit 046d354

Browse files
committed
Merge tag 'renesas-pinctrl-for-v6.6-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers into devel
pinctrl: renesas: Updates for v6.6 - Use the new devm_clk_get_enabled() helper. Signed-off-by: Linus Walleij <[email protected]>
2 parents 6ec89cd + 95eb198 commit 046d354

File tree

2 files changed

+50
-70
lines changed

2 files changed

+50
-70
lines changed

drivers/pinctrl/renesas/pinctrl-rzg2l.c

Lines changed: 25 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,6 @@ struct rzg2l_pinctrl {
145145
const struct rzg2l_pinctrl_data *data;
146146
void __iomem *base;
147147
struct device *dev;
148-
struct clk *clk;
149148

150149
struct gpio_chip gpio_chip;
151150
struct pinctrl_gpio_range gpio_range;
@@ -250,6 +249,7 @@ static int rzg2l_map_add_config(struct pinctrl_map *map,
250249

251250
static int rzg2l_dt_subnode_to_map(struct pinctrl_dev *pctldev,
252251
struct device_node *np,
252+
struct device_node *parent,
253253
struct pinctrl_map **map,
254254
unsigned int *num_maps,
255255
unsigned int *index)
@@ -267,6 +267,7 @@ static int rzg2l_dt_subnode_to_map(struct pinctrl_dev *pctldev,
267267
struct property *prop;
268268
int ret, gsel, fsel;
269269
const char **pin_fn;
270+
const char *name;
270271
const char *pin;
271272

272273
pinmux = of_find_property(np, "pinmux", NULL);
@@ -350,8 +351,19 @@ static int rzg2l_dt_subnode_to_map(struct pinctrl_dev *pctldev,
350351
psel_val[i] = MUX_FUNC(value);
351352
}
352353

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+
353365
/* 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);
355367
if (gsel < 0) {
356368
ret = gsel;
357369
goto done;
@@ -361,17 +373,16 @@ static int rzg2l_dt_subnode_to_map(struct pinctrl_dev *pctldev,
361373
* Register a single group function where the 'data' is an array PSEL
362374
* register values read from DT.
363375
*/
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);
367378
if (fsel < 0) {
368379
ret = fsel;
369380
goto remove_group;
370381
}
371382

372383
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;
375386
idx++;
376387

377388
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,
418429
index = 0;
419430

420431
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,
422433
num_maps, &index);
423434
if (ret < 0) {
424435
of_node_put(child);
@@ -427,7 +438,7 @@ static int rzg2l_dt_node_to_map(struct pinctrl_dev *pctldev,
427438
}
428439

429440
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,
431442
num_maps, &index);
432443
if (ret < 0)
433444
goto done;
@@ -1459,14 +1470,10 @@ static int rzg2l_pinctrl_register(struct rzg2l_pinctrl *pctrl)
14591470
return 0;
14601471
}
14611472

1462-
static void rzg2l_pinctrl_clk_disable(void *data)
1463-
{
1464-
clk_disable_unprepare(data);
1465-
}
1466-
14671473
static int rzg2l_pinctrl_probe(struct platform_device *pdev)
14681474
{
14691475
struct rzg2l_pinctrl *pctrl;
1476+
struct clk *clk;
14701477
int ret;
14711478

14721479
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)
14891496
if (IS_ERR(pctrl->base))
14901497
return PTR_ERR(pctrl->base);
14911498

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");
14981503

14991504
spin_lock_init(&pctrl->lock);
15001505
spin_lock_init(&pctrl->bitmap_lock);
15011506

15021507
platform_set_drvdata(pdev, pctrl);
15031508

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-
15191509
ret = rzg2l_pinctrl_register(pctrl);
15201510
if (ret)
15211511
return ret;

drivers/pinctrl/renesas/pinctrl-rzv2m.c

Lines changed: 25 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ struct rzv2m_pinctrl {
119119
const struct rzv2m_pinctrl_data *data;
120120
void __iomem *base;
121121
struct device *dev;
122-
struct clk *clk;
123122

124123
struct gpio_chip gpio_chip;
125124
struct pinctrl_gpio_range gpio_range;
@@ -210,6 +209,7 @@ static int rzv2m_map_add_config(struct pinctrl_map *map,
210209

211210
static int rzv2m_dt_subnode_to_map(struct pinctrl_dev *pctldev,
212211
struct device_node *np,
212+
struct device_node *parent,
213213
struct pinctrl_map **map,
214214
unsigned int *num_maps,
215215
unsigned int *index)
@@ -227,6 +227,7 @@ static int rzv2m_dt_subnode_to_map(struct pinctrl_dev *pctldev,
227227
struct property *prop;
228228
int ret, gsel, fsel;
229229
const char **pin_fn;
230+
const char *name;
230231
const char *pin;
231232

232233
pinmux = of_find_property(np, "pinmux", NULL);
@@ -310,8 +311,19 @@ static int rzv2m_dt_subnode_to_map(struct pinctrl_dev *pctldev,
310311
psel_val[i] = MUX_FUNC(value);
311312
}
312313

314+
if (parent) {
315+
name = devm_kasprintf(pctrl->dev, GFP_KERNEL, "%pOFn.%pOFn",
316+
parent, np);
317+
if (!name) {
318+
ret = -ENOMEM;
319+
goto done;
320+
}
321+
} else {
322+
name = np->name;
323+
}
324+
313325
/* Register a single pin group listing all the pins we read from DT */
314-
gsel = pinctrl_generic_add_group(pctldev, np->name, pins, num_pinmux, NULL);
326+
gsel = pinctrl_generic_add_group(pctldev, name, pins, num_pinmux, NULL);
315327
if (gsel < 0) {
316328
ret = gsel;
317329
goto done;
@@ -321,17 +333,16 @@ static int rzv2m_dt_subnode_to_map(struct pinctrl_dev *pctldev,
321333
* Register a single group function where the 'data' is an array PSEL
322334
* register values read from DT.
323335
*/
324-
pin_fn[0] = np->name;
325-
fsel = pinmux_generic_add_function(pctldev, np->name, pin_fn, 1,
326-
psel_val);
336+
pin_fn[0] = name;
337+
fsel = pinmux_generic_add_function(pctldev, name, pin_fn, 1, psel_val);
327338
if (fsel < 0) {
328339
ret = fsel;
329340
goto remove_group;
330341
}
331342

332343
maps[idx].type = PIN_MAP_TYPE_MUX_GROUP;
333-
maps[idx].data.mux.group = np->name;
334-
maps[idx].data.mux.function = np->name;
344+
maps[idx].data.mux.group = name;
345+
maps[idx].data.mux.function = name;
335346
idx++;
336347

337348
dev_dbg(pctrl->dev, "Parsed %pOF with %d pins\n", np, num_pinmux);
@@ -378,7 +389,7 @@ static int rzv2m_dt_node_to_map(struct pinctrl_dev *pctldev,
378389
index = 0;
379390

380391
for_each_child_of_node(np, child) {
381-
ret = rzv2m_dt_subnode_to_map(pctldev, child, map,
392+
ret = rzv2m_dt_subnode_to_map(pctldev, child, np, map,
382393
num_maps, &index);
383394
if (ret < 0) {
384395
of_node_put(child);
@@ -387,7 +398,7 @@ static int rzv2m_dt_node_to_map(struct pinctrl_dev *pctldev,
387398
}
388399

389400
if (*num_maps == 0) {
390-
ret = rzv2m_dt_subnode_to_map(pctldev, np, map,
401+
ret = rzv2m_dt_subnode_to_map(pctldev, np, NULL, map,
391402
num_maps, &index);
392403
if (ret < 0)
393404
goto done;
@@ -1028,14 +1039,10 @@ static int rzv2m_pinctrl_register(struct rzv2m_pinctrl *pctrl)
10281039
return 0;
10291040
}
10301041

1031-
static void rzv2m_pinctrl_clk_disable(void *data)
1032-
{
1033-
clk_disable_unprepare(data);
1034-
}
1035-
10361042
static int rzv2m_pinctrl_probe(struct platform_device *pdev)
10371043
{
10381044
struct rzv2m_pinctrl *pctrl;
1045+
struct clk *clk;
10391046
int ret;
10401047

10411048
pctrl = devm_kzalloc(&pdev->dev, sizeof(*pctrl), GFP_KERNEL);
@@ -1052,32 +1059,15 @@ static int rzv2m_pinctrl_probe(struct platform_device *pdev)
10521059
if (IS_ERR(pctrl->base))
10531060
return PTR_ERR(pctrl->base);
10541061

1055-
pctrl->clk = devm_clk_get(pctrl->dev, NULL);
1056-
if (IS_ERR(pctrl->clk)) {
1057-
ret = PTR_ERR(pctrl->clk);
1058-
dev_err(pctrl->dev, "failed to get GPIO clk : %i\n", ret);
1059-
return ret;
1060-
}
1062+
clk = devm_clk_get_enabled(pctrl->dev, NULL);
1063+
if (IS_ERR(clk))
1064+
return dev_err_probe(pctrl->dev, PTR_ERR(clk),
1065+
"failed to enable GPIO clk\n");
10611066

10621067
spin_lock_init(&pctrl->lock);
10631068

10641069
platform_set_drvdata(pdev, pctrl);
10651070

1066-
ret = clk_prepare_enable(pctrl->clk);
1067-
if (ret) {
1068-
dev_err(pctrl->dev, "failed to enable GPIO clk: %i\n", ret);
1069-
return ret;
1070-
}
1071-
1072-
ret = devm_add_action_or_reset(&pdev->dev, rzv2m_pinctrl_clk_disable,
1073-
pctrl->clk);
1074-
if (ret) {
1075-
dev_err(pctrl->dev,
1076-
"failed to register GPIO clk disable action, %i\n",
1077-
ret);
1078-
return ret;
1079-
}
1080-
10811071
ret = rzv2m_pinctrl_register(pctrl);
10821072
if (ret)
10831073
return ret;

0 commit comments

Comments
 (0)