Hi Andy, kernel test robot noticed the following build errors: [auto build test ERROR on brgl/gpio/for-next] [also build test ERROR on linus/master v6.4-rc5 next-20230608] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/gpio-aggregator-Introduce-delay-support-for-individual-output-pins/20230609-002703 base: https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git gpio/for-next patch link: https://lore.kernel.org/r/20230608162130.55015-1-andriy.shevchenko%40linux.intel.com patch subject: [rfc, rft, PATCH v1 1/1] gpio: aggregator: Introduce delay support for individual output pins config: i386-randconfig-i051-20230608 (https://download.01.org/0day-ci/archive/20230609/202306090307.hZlCud1x-lkp@xxxxxxxxx/config) compiler: gcc-12 (Debian 12.2.0-14) 12.2.0 reproduce (this is a W=1 build): git remote add brgl https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git git fetch brgl gpio/for-next git checkout brgl/gpio/for-next b4 shazam https://lore.kernel.org/r/20230608162130.55015-1-andriy.shevchenko@xxxxxxxxxxxxxxx # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=i386 olddefconfig make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/gpio/ 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/202306090307.hZlCud1x-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): drivers/gpio/gpio-aggregator.c: In function 'gpiochip_fwd_delay_of_xlate': >> drivers/gpio/gpio-aggregator.c:426:41: error: 'struct gpio_chip' has no member named 'of_gpio_n_cells' 426 | if (gpiospec->args_count != chip->of_gpio_n_cells) | ^~ drivers/gpio/gpio-aggregator.c: In function 'gpiochip_fwd_create': >> drivers/gpio/gpio-aggregator.c:518:21: error: 'struct gpio_chip' has no member named 'of_xlate' 518 | chip->of_xlate = gpiochip_fwd_delay_of_xlate; | ^~ drivers/gpio/gpio-aggregator.c:519:21: error: 'struct gpio_chip' has no member named 'of_gpio_n_cells' 519 | chip->of_gpio_n_cells = 3; | ^~ vim +426 drivers/gpio/gpio-aggregator.c 417 418 static int gpiochip_fwd_delay_of_xlate(struct gpio_chip *chip, 419 const struct of_phandle_args *gpiospec, 420 u32 *flags) 421 { 422 struct gpiochip_fwd *fwd = gpiochip_get_data(chip); 423 struct gpiochip_fwd_timing *timings; 424 u32 line; 425 > 426 if (gpiospec->args_count != chip->of_gpio_n_cells) 427 return -EINVAL; 428 429 line = gpiospec->args[0]; 430 if (line >= chip->ngpio) 431 return -EINVAL; 432 433 timings = &fwd->delay_timings[line]; 434 timings->ramp_up_us = gpiospec->args[1]; 435 timings->ramp_down_us = gpiospec->args[2]; 436 437 return line; 438 } 439 440 /** 441 * gpiochip_fwd_create() - Create a new GPIO forwarder 442 * @dev: Parent device pointer 443 * @ngpios: Number of GPIOs in the forwarder. 444 * @descs: Array containing the GPIO descriptors to forward to. 445 * This array must contain @ngpios entries, and must not be deallocated 446 * before the forwarder has been destroyed again. 447 * @delay: True if the pins have an external delay line. 448 * 449 * This function creates a new gpiochip, which forwards all GPIO operations to 450 * the passed GPIO descriptors. 451 * 452 * Return: An opaque object pointer, or an ERR_PTR()-encoded negative error 453 * code on failure. 454 */ 455 static struct gpiochip_fwd *gpiochip_fwd_create(struct device *dev, 456 unsigned int ngpios, 457 struct gpio_desc *descs[], 458 bool delay) 459 { 460 const char *label = dev_name(dev); 461 struct gpiochip_fwd *fwd; 462 struct gpio_chip *chip; 463 unsigned int i; 464 int error; 465 466 fwd = devm_kzalloc(dev, struct_size(fwd, tmp, fwd_tmp_size(ngpios)), 467 GFP_KERNEL); 468 if (!fwd) 469 return ERR_PTR(-ENOMEM); 470 471 chip = &fwd->chip; 472 473 /* 474 * If any of the GPIO lines are sleeping, then the entire forwarder 475 * will be sleeping. 476 * If any of the chips support .set_config(), then the forwarder will 477 * support setting configs. 478 */ 479 for (i = 0; i < ngpios; i++) { 480 struct gpio_chip *parent = gpiod_to_chip(descs[i]); 481 482 dev_dbg(dev, "%u => gpio %d irq %d\n", i, 483 desc_to_gpio(descs[i]), gpiod_to_irq(descs[i])); 484 485 if (gpiod_cansleep(descs[i])) 486 chip->can_sleep = true; 487 if (parent && parent->set_config) 488 chip->set_config = gpio_fwd_set_config; 489 } 490 491 chip->label = label; 492 chip->parent = dev; 493 chip->owner = THIS_MODULE; 494 chip->get_direction = gpio_fwd_get_direction; 495 chip->direction_input = gpio_fwd_direction_input; 496 chip->direction_output = gpio_fwd_direction_output; 497 chip->get = gpio_fwd_get; 498 chip->get_multiple = gpio_fwd_get_multiple_locked; 499 chip->set = gpio_fwd_set; 500 chip->set_multiple = gpio_fwd_set_multiple_locked; 501 chip->to_irq = gpio_fwd_to_irq; 502 chip->base = -1; 503 chip->ngpio = ngpios; 504 fwd->descs = descs; 505 506 if (chip->can_sleep) 507 mutex_init(&fwd->mlock); 508 else 509 spin_lock_init(&fwd->slock); 510 511 if (delay) { 512 fwd->delay_timings = devm_kcalloc(dev, ngpios, 513 sizeof(*fwd->delay_timings), 514 GFP_KERNEL); 515 if (!fwd->delay_timings) 516 return ERR_PTR(-ENOMEM); 517 > 518 chip->of_xlate = gpiochip_fwd_delay_of_xlate; 519 chip->of_gpio_n_cells = 3; 520 } 521 522 error = devm_gpiochip_add_data(dev, chip, fwd); 523 if (error) 524 return ERR_PTR(error); 525 526 return fwd; 527 } 528 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki