All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.