* [arnd-playground:config-gpio-legacy-7.3 3/3] drivers/i2c/busses/i2c-gpio.c:630:56: error: 'struct i2c_gpio_private_data' has no member named 'gpio'
@ 2026-09-05 5:08 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-09-05 5:08 UTC (permalink / raw)
To: Arnd Bergmann; +Cc: oe-kbuild-all
tree: https://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git config-gpio-legacy-7.3
head: c3f3b968d84f40449f767a592ae2363ceab597cb
commit: c3f3b968d84f40449f767a592ae2363ceab597cb [3/3] [RFC] gpiolib: introduce gpio_name() helper
config: i386-randconfig-061-20260905 (https://download.01.org/0day-ci/archive/20260905/202609051249.oPniymFd-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260905/202609051249.oPniymFd-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/202609051249.oPniymFd-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from include/linux/device.h:15,
from include/linux/acpi.h:15,
from include/linux/i2c.h:13,
from include/linux/i2c-algo-bit.h:13,
from drivers/i2c/busses/i2c-gpio.c:11:
drivers/i2c/busses/i2c-gpio.c: In function 'i2c_gpio_probe':
>> drivers/i2c/busses/i2c-gpio.c:630:56: error: 'struct i2c_gpio_private_data' has no member named 'gpio'
630 | gpiod_name(priv->sda), gpiod_name(priv->gpio),
| ^~
include/linux/dev_printk.h:110:37: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
drivers/i2c/busses/i2c-gpio.c:629:9: note: in expansion of macro 'dev_info'
629 | dev_info(dev, "using lines %s (SDA) and %s (SCL%s)\n",
| ^~~~~~~~
vim +630 drivers/i2c/busses/i2c-gpio.c
519
520 static int i2c_gpio_probe(struct platform_device *pdev)
521 {
522 struct i2c_gpio_private_data *priv;
523 struct i2c_gpio_platform_data *pdata;
524 struct i2c_algo_bit_data *bit_data;
525 struct i2c_adapter *adap;
526 struct device *dev = &pdev->dev;
527 struct fwnode_handle *fwnode = dev_fwnode(dev);
528 enum gpiod_flags gflags;
529 int ret;
530
531 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
532 if (!priv)
533 return -ENOMEM;
534
535 adap = &priv->adap;
536 bit_data = &priv->bit_data;
537 pdata = &priv->pdata;
538
539 if (fwnode) {
540 i2c_gpio_get_properties(dev, pdata);
541 } else {
542 /*
543 * If all platform data settings are zero it is OK
544 * to not provide any platform data from the board.
545 */
546 if (dev_get_platdata(dev))
547 memcpy(pdata, dev_get_platdata(dev), sizeof(*pdata));
548 }
549
550 /*
551 * First get the GPIO pins; if it fails, we'll defer the probe.
552 * If the SCL/SDA lines are marked "open drain" by platform data or
553 * device tree then this means that something outside of our control is
554 * marking these lines to be handled as open drain, and we should just
555 * handle them as we handle any other output. Else we enforce open
556 * drain as this is required for an I2C bus.
557 */
558 if (pdata->sda_is_open_drain || pdata->sda_has_no_pullup)
559 gflags = GPIOD_OUT_HIGH;
560 else
561 gflags = GPIOD_OUT_HIGH_OPEN_DRAIN;
562 priv->sda = i2c_gpio_get_desc(dev, "sda", 0, gflags);
563 if (IS_ERR(priv->sda))
564 return PTR_ERR(priv->sda);
565
566 if (pdata->scl_is_open_drain || pdata->scl_has_no_pullup)
567 gflags = GPIOD_OUT_HIGH;
568 else
569 gflags = GPIOD_OUT_HIGH_OPEN_DRAIN;
570 priv->scl = i2c_gpio_lookup_scl(dev, gflags);
571 if (IS_ERR(priv->scl)) {
572 ret = PTR_ERR(priv->scl);
573 goto err_cleanup_sda;
574 }
575
576 if (gpiod_cansleep(priv->sda) || gpiod_cansleep(priv->scl->gpio))
577 dev_warn(dev, "Slow GPIO pins might wreak havoc into I2C/SMBus bus timing");
578 else
579 bit_data->can_do_atomic = true;
580
581 bit_data->skip_bit_test = !!priv->scl->args.fwnode;
582 bit_data->setsda = i2c_gpio_setsda_val;
583 bit_data->setscl = i2c_gpio_setscl_val;
584
585 if (!pdata->scl_is_output_only)
586 bit_data->getscl = i2c_gpio_getscl;
587 if (!pdata->sda_is_output_only)
588 bit_data->getsda = i2c_gpio_getsda;
589
590 if (pdata->udelay)
591 bit_data->udelay = pdata->udelay;
592 else if (pdata->scl_is_output_only)
593 bit_data->udelay = 50; /* 10 kHz */
594 else
595 bit_data->udelay = 5; /* 100 kHz */
596
597 if (pdata->timeout)
598 bit_data->timeout = pdata->timeout;
599 else
600 bit_data->timeout = HZ / 10; /* 100 ms */
601
602 bit_data->data = priv;
603
604 adap->owner = THIS_MODULE;
605 if (fwnode)
606 strscpy(adap->name, dev_name(dev), sizeof(adap->name));
607 else
608 snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id);
609
610 /* Always use shared SCL aware locking */
611 adap->lock_ops = &i2c_gpio_lock_ops;
612 adap->algo_data = bit_data;
613 adap->class = I2C_CLASS_HWMON;
614 adap->dev.parent = dev;
615 device_set_node(&adap->dev, fwnode);
616
617 adap->nr = pdev->id;
618 ret = i2c_bit_add_numbered_bus(adap);
619 if (ret)
620 goto err_cleanup_scl;
621
622 platform_set_drvdata(pdev, priv);
623
624 /*
625 * FIXME: using global GPIO numbers is not helpful. If/when we
626 * get accessors to get the actual name of the GPIO line,
627 * from the descriptor, then provide that instead.
628 */
629 dev_info(dev, "using lines %s (SDA) and %s (SCL%s)\n",
> 630 gpiod_name(priv->sda), gpiod_name(priv->gpio),
631 pdata->scl_is_output_only
632 ? ", no clock stretching" : "");
633
634 i2c_gpio_fault_injector_init(pdev);
635
636 return 0;
637
638 err_cleanup_scl:
639 i2c_gpio_cleanup_scl(priv->scl);
640 err_cleanup_sda:
641 gpiod_put(priv->sda);
642
643 return ret;
644 }
645
--
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:[~2026-09-05 5:09 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-05 5:08 [arnd-playground:config-gpio-legacy-7.3 3/3] drivers/i2c/busses/i2c-gpio.c:630:56: error: 'struct i2c_gpio_private_data' has no member named 'gpio' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.