* [linux-next:master 1524/2170] drivers/pinctrl/pinctrl-th1520.c:457:23: error: implicit declaration of function 'pinconf_generic_parse_dt_config'; did you mean 'pinconf_generic_dump_config'?
@ 2024-10-03 7:38 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-10-03 7:38 UTC (permalink / raw)
To: Emil Renner Berthing
Cc: oe-kbuild-all, Linux Memory Management List, Linus Walleij, Drew Fustini
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: c02d24a5af66a9806922391493205a344749f2c4
commit: bed5cd6f8a988389e987bcf5c1762ab7c53be317 [1524/2170] pinctrl: Add driver for the T-Head TH1520 SoC
config: m68k-randconfig-r112-20241003 (https://download.01.org/0day-ci/archive/20241003/202410031519.M0tZ9Uwy-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 14.1.0
reproduce: (https://download.01.org/0day-ci/archive/20241003/202410031519.M0tZ9Uwy-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202410031519.M0tZ9Uwy-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/pinctrl/pinctrl-th1520.c: In function 'th1520_pinctrl_dt_node_to_map':
>> drivers/pinctrl/pinctrl-th1520.c:457:23: error: implicit declaration of function 'pinconf_generic_parse_dt_config'; did you mean 'pinconf_generic_dump_config'? [-Wimplicit-function-declaration]
457 | ret = pinconf_generic_parse_dt_config(child, pctldev, &configs, &nconfigs);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| pinconf_generic_dump_config
vim +457 drivers/pinctrl/pinctrl-th1520.c
413
414 static int th1520_pinctrl_dt_node_to_map(struct pinctrl_dev *pctldev,
415 struct device_node *np,
416 struct pinctrl_map **maps,
417 unsigned int *num_maps)
418 {
419 struct th1520_pinctrl *thp = pinctrl_dev_get_drvdata(pctldev);
420 struct device_node *child;
421 struct pinctrl_map *map;
422 unsigned long *configs;
423 unsigned int nconfigs;
424 unsigned int nmaps;
425 int ret;
426
427 nmaps = 0;
428 for_each_available_child_of_node(np, child) {
429 int npins = of_property_count_strings(child, "pins");
430
431 if (npins <= 0) {
432 of_node_put(child);
433 dev_err(thp->pctl->dev, "no pins selected for %pOFn.%pOFn\n",
434 np, child);
435 return -EINVAL;
436 }
437 nmaps += npins;
438 if (of_property_present(child, "function"))
439 nmaps += npins;
440 }
441
442 map = kcalloc(nmaps, sizeof(*map), GFP_KERNEL);
443 if (!map)
444 return -ENOMEM;
445
446 nmaps = 0;
447 mutex_lock(&thp->mutex);
448 for_each_available_child_of_node(np, child) {
449 unsigned int rollback = nmaps;
450 enum th1520_muxtype muxtype;
451 struct property *prop;
452 const char *funcname;
453 const char **pgnames;
454 const char *pinname;
455 int npins;
456
> 457 ret = pinconf_generic_parse_dt_config(child, pctldev, &configs, &nconfigs);
458 if (ret) {
459 dev_err(thp->pctl->dev, "%pOFn.%pOFn: error parsing pin config\n",
460 np, child);
461 goto put_child;
462 }
463
464 if (!of_property_read_string(child, "function", &funcname)) {
465 muxtype = th1520_muxtype_get(funcname);
466 if (!muxtype) {
467 dev_err(thp->pctl->dev, "%pOFn.%pOFn: unknown function '%s'\n",
468 np, child, funcname);
469 ret = -EINVAL;
470 goto free_configs;
471 }
472
473 funcname = devm_kasprintf(thp->pctl->dev, GFP_KERNEL, "%pOFn.%pOFn",
474 np, child);
475 if (!funcname) {
476 ret = -ENOMEM;
477 goto free_configs;
478 }
479
480 npins = of_property_count_strings(child, "pins");
481 pgnames = devm_kcalloc(thp->pctl->dev, npins, sizeof(*pgnames), GFP_KERNEL);
482 if (!pgnames) {
483 ret = -ENOMEM;
484 goto free_configs;
485 }
486 } else {
487 funcname = NULL;
488 }
489
490 npins = 0;
491 of_property_for_each_string(child, "pins", prop, pinname) {
492 unsigned int i;
493
494 for (i = 0; i < thp->desc.npins; i++) {
495 if (!strcmp(pinname, thp->desc.pins[i].name))
496 break;
497 }
498 if (i == thp->desc.npins) {
499 nmaps = rollback;
500 dev_err(thp->pctl->dev, "%pOFn.%pOFn: unknown pin '%s'\n",
501 np, child, pinname);
502 goto free_configs;
503 }
504
505 if (nconfigs) {
506 map[nmaps].type = PIN_MAP_TYPE_CONFIGS_PIN;
507 map[nmaps].data.configs.group_or_pin = thp->desc.pins[i].name;
508 map[nmaps].data.configs.configs = configs;
509 map[nmaps].data.configs.num_configs = nconfigs;
510 nmaps += 1;
511 }
512 if (funcname) {
513 pgnames[npins++] = thp->desc.pins[i].name;
514 map[nmaps].type = PIN_MAP_TYPE_MUX_GROUP;
515 map[nmaps].data.mux.function = funcname;
516 map[nmaps].data.mux.group = thp->desc.pins[i].name;
517 nmaps += 1;
518 }
519 }
520
521 if (funcname) {
522 ret = pinmux_generic_add_function(pctldev, funcname, pgnames,
523 npins, (void *)muxtype);
524 if (ret < 0) {
525 dev_err(thp->pctl->dev, "error adding function %s\n", funcname);
526 goto put_child;
527 }
528 }
529 }
530
531 *maps = map;
532 *num_maps = nmaps;
533 mutex_unlock(&thp->mutex);
534 return 0;
535
536 free_configs:
537 kfree(configs);
538 put_child:
539 of_node_put(child);
540 th1520_pinctrl_dt_free_map(pctldev, map, nmaps);
541 mutex_unlock(&thp->mutex);
542 return ret;
543 }
544
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-10-03 7:39 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-10-03 7:38 [linux-next:master 1524/2170] drivers/pinctrl/pinctrl-th1520.c:457:23: error: implicit declaration of function 'pinconf_generic_parse_dt_config'; did you mean 'pinconf_generic_dump_config'? kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox