Hi Drew, kernel test robot noticed the following build warnings: [auto build test WARNING on 2694868880705e8f6bb61b24b1b25adc42a4a217] url: https://github.com/intel-lab-lkp/linux/commits/Drew-Fustini/pinctrl-th1520-Fix-return-value-for-unknown-pin-error/20241007-014953 base: 2694868880705e8f6bb61b24b1b25adc42a4a217 patch link: https://lore.kernel.org/r/20241006-th1520-pinctrl-fixes-v2-3-b1822ae3a6d7%40tenstorrent.com patch subject: [PATCH v2 3/3] pinctrl: th1520: Convert dt child node loop to scoped iterator config: alpha-allyesconfig (https://download.01.org/0day-ci/archive/20241007/202410072033.XpRqZ8nz-lkp@xxxxxxxxx/config) compiler: alpha-linux-gcc (GCC) 13.3.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241007/202410072033.XpRqZ8nz-lkp@xxxxxxxxx/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@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202410072033.XpRqZ8nz-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): drivers/pinctrl/pinctrl-th1520.c: In function 'th1520_pinctrl_dt_node_to_map': >> drivers/pinctrl/pinctrl-th1520.c:420:29: warning: unused variable 'child' [-Wunused-variable] 420 | struct device_node *child; | ^~~~~ vim +/child +420 drivers/pinctrl/pinctrl-th1520.c bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 413 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 414 static int th1520_pinctrl_dt_node_to_map(struct pinctrl_dev *pctldev, bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 415 struct device_node *np, bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 416 struct pinctrl_map **maps, bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 417 unsigned int *num_maps) bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 418 { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 419 struct th1520_pinctrl *thp = pinctrl_dev_get_drvdata(pctldev); bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 @420 struct device_node *child; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 421 struct pinctrl_map *map; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 422 unsigned long *configs; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 423 unsigned int nconfigs; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 424 unsigned int nmaps; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 425 int ret; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 426 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 427 nmaps = 0; 1a1dcc4caac257 Drew Fustini 2024-10-06 428 for_each_available_child_of_node_scoped(np, child) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 429 int npins = of_property_count_strings(child, "pins"); bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 430 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 431 if (npins <= 0) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 432 dev_err(thp->pctl->dev, "no pins selected for %pOFn.%pOFn\n", bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 433 np, child); bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 434 return -EINVAL; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 435 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 436 nmaps += npins; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 437 if (of_property_present(child, "function")) bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 438 nmaps += npins; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 439 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 440 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 441 map = kcalloc(nmaps, sizeof(*map), GFP_KERNEL); bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 442 if (!map) bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 443 return -ENOMEM; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 444 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 445 nmaps = 0; 9aae170bf6c30e Drew Fustini 2024-10-06 446 guard(mutex)(&thp->mutex); 1a1dcc4caac257 Drew Fustini 2024-10-06 447 for_each_available_child_of_node_scoped(np, child) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 448 unsigned int rollback = nmaps; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 449 enum th1520_muxtype muxtype; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 450 struct property *prop; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 451 const char *funcname; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 452 const char **pgnames; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 453 const char *pinname; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 454 int npins; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 455 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 456 ret = pinconf_generic_parse_dt_config(child, pctldev, &configs, &nconfigs); bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 457 if (ret) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 458 dev_err(thp->pctl->dev, "%pOFn.%pOFn: error parsing pin config\n", bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 459 np, child); 1a1dcc4caac257 Drew Fustini 2024-10-06 460 goto free_map; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 461 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 462 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 463 if (!of_property_read_string(child, "function", &funcname)) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 464 muxtype = th1520_muxtype_get(funcname); bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 465 if (!muxtype) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 466 dev_err(thp->pctl->dev, "%pOFn.%pOFn: unknown function '%s'\n", bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 467 np, child, funcname); bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 468 ret = -EINVAL; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 469 goto free_configs; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 470 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 471 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 472 funcname = devm_kasprintf(thp->pctl->dev, GFP_KERNEL, "%pOFn.%pOFn", bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 473 np, child); bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 474 if (!funcname) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 475 ret = -ENOMEM; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 476 goto free_configs; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 477 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 478 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 479 npins = of_property_count_strings(child, "pins"); bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 480 pgnames = devm_kcalloc(thp->pctl->dev, npins, sizeof(*pgnames), GFP_KERNEL); bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 481 if (!pgnames) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 482 ret = -ENOMEM; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 483 goto free_configs; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 484 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 485 } else { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 486 funcname = NULL; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 487 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 488 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 489 npins = 0; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 490 of_property_for_each_string(child, "pins", prop, pinname) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 491 unsigned int i; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 492 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 493 for (i = 0; i < thp->desc.npins; i++) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 494 if (!strcmp(pinname, thp->desc.pins[i].name)) bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 495 break; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 496 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 497 if (i == thp->desc.npins) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 498 nmaps = rollback; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 499 dev_err(thp->pctl->dev, "%pOFn.%pOFn: unknown pin '%s'\n", bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 500 np, child, pinname); 08f5dfea548d37 Drew Fustini 2024-10-06 501 ret = -EINVAL; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 502 goto free_configs; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 503 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 504 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 505 if (nconfigs) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 506 map[nmaps].type = PIN_MAP_TYPE_CONFIGS_PIN; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 507 map[nmaps].data.configs.group_or_pin = thp->desc.pins[i].name; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 508 map[nmaps].data.configs.configs = configs; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 509 map[nmaps].data.configs.num_configs = nconfigs; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 510 nmaps += 1; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 511 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 512 if (funcname) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 513 pgnames[npins++] = thp->desc.pins[i].name; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 514 map[nmaps].type = PIN_MAP_TYPE_MUX_GROUP; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 515 map[nmaps].data.mux.function = funcname; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 516 map[nmaps].data.mux.group = thp->desc.pins[i].name; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 517 nmaps += 1; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 518 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 519 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 520 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 521 if (funcname) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 522 ret = pinmux_generic_add_function(pctldev, funcname, pgnames, bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 523 npins, (void *)muxtype); bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 524 if (ret < 0) { bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 525 dev_err(thp->pctl->dev, "error adding function %s\n", funcname); 1a1dcc4caac257 Drew Fustini 2024-10-06 526 goto free_map; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 527 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 528 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 529 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 530 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 531 *maps = map; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 532 *num_maps = nmaps; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 533 return 0; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 534 bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 535 free_configs: bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 536 kfree(configs); 1a1dcc4caac257 Drew Fustini 2024-10-06 537 free_map: bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 538 th1520_pinctrl_dt_free_map(pctldev, map, nmaps); bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 539 return ret; bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 540 } bed5cd6f8a9883 Emil Renner Berthing 2024-09-30 541 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki