From: kernel test robot <lkp@intel.com>
To: Heiner Kallweit <hkallweit1@gmail.com>,
Jean Delvare <jdelvare@suse.com>,
Andi Shyti <andi.shyti@kernel.org>, Peter Rosin <peda@axentia.se>,
Wolfram Sang <wsa-dev@sang-engineering.com>,
Peter Korsgaard <peter.korsgaard@barco.com>
Cc: oe-kbuild-all@lists.linux.dev,
"linux-i2c@vger.kernel.org" <linux-i2c@vger.kernel.org>
Subject: Re: [PATCH 2/4] i2c: mux: add basic support for calling i2c_register_spd on muxed bus segments
Date: Thu, 11 Jan 2024 23:53:01 +0800 [thread overview]
Message-ID: <202401112333.GUpSFOuc-lkp@intel.com> (raw)
In-Reply-To: <53e5c71a-d954-4211-91a1-de067451d532@gmail.com>
Hi Heiner,
kernel test robot noticed the following build errors:
[auto build test ERROR on wsa/i2c/for-next]
[also build test ERROR on next-20240111]
[cannot apply to linus/master v6.7]
[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/Heiner-Kallweit/i2c-smbus-Prepare-i2c_register_spd-for-usage-on-muxed-segments/20240111-042152
base: https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/for-next
patch link: https://lore.kernel.org/r/53e5c71a-d954-4211-91a1-de067451d532%40gmail.com
patch subject: [PATCH 2/4] i2c: mux: add basic support for calling i2c_register_spd on muxed bus segments
config: i386-randconfig-053-20240111 (https://download.01.org/0day-ci/archive/20240111/202401112333.GUpSFOuc-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240111/202401112333.GUpSFOuc-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/202401112333.GUpSFOuc-lkp@intel.com/
All errors (new ones prefixed by >>):
ld: drivers/i2c/i2c-mux.o: in function `i2c_mux_add_adapter':
>> drivers/i2c/i2c-mux.c:434: undefined reference to `i2c_register_spd'
vim +434 drivers/i2c/i2c-mux.c
283
284 int i2c_mux_add_adapter(struct i2c_mux_core *muxc,
285 u32 force_nr, u32 chan_id,
286 unsigned int class)
287 {
288 struct i2c_adapter *parent = muxc->parent;
289 struct i2c_mux_priv *priv;
290 char symlink_name[20];
291 int ret;
292
293 if (muxc->num_adapters >= muxc->max_adapters) {
294 dev_err(muxc->dev, "No room for more i2c-mux adapters\n");
295 return -EINVAL;
296 }
297
298 priv = kzalloc(sizeof(*priv), GFP_KERNEL);
299 if (!priv)
300 return -ENOMEM;
301
302 /* Set up private adapter data */
303 priv->muxc = muxc;
304 priv->chan_id = chan_id;
305
306 /* Need to do algo dynamically because we don't know ahead
307 * of time what sort of physical adapter we'll be dealing with.
308 */
309 if (parent->algo->master_xfer) {
310 if (muxc->mux_locked)
311 priv->algo.master_xfer = i2c_mux_master_xfer;
312 else
313 priv->algo.master_xfer = __i2c_mux_master_xfer;
314 }
315 if (parent->algo->master_xfer_atomic)
316 priv->algo.master_xfer_atomic = priv->algo.master_xfer;
317
318 if (parent->algo->smbus_xfer) {
319 if (muxc->mux_locked)
320 priv->algo.smbus_xfer = i2c_mux_smbus_xfer;
321 else
322 priv->algo.smbus_xfer = __i2c_mux_smbus_xfer;
323 }
324 if (parent->algo->smbus_xfer_atomic)
325 priv->algo.smbus_xfer_atomic = priv->algo.smbus_xfer;
326
327 priv->algo.functionality = i2c_mux_functionality;
328
329 /* Now fill out new adapter structure */
330 snprintf(priv->adap.name, sizeof(priv->adap.name),
331 "i2c-%d-mux (chan_id %d)", i2c_adapter_id(parent), chan_id);
332 priv->adap.owner = THIS_MODULE;
333 priv->adap.algo = &priv->algo;
334 priv->adap.algo_data = priv;
335 priv->adap.dev.parent = &parent->dev;
336 priv->adap.retries = parent->retries;
337 priv->adap.timeout = parent->timeout;
338 priv->adap.quirks = parent->quirks;
339 if (muxc->mux_locked)
340 priv->adap.lock_ops = &i2c_mux_lock_ops;
341 else
342 priv->adap.lock_ops = &i2c_parent_lock_ops;
343
344 /* Sanity check on class */
345 if (i2c_mux_parent_classes(parent) & class & ~I2C_CLASS_DEPRECATED)
346 dev_err(&parent->dev,
347 "Segment %d behind mux can't share classes with ancestors\n",
348 chan_id);
349 else
350 priv->adap.class = class;
351
352 /*
353 * Try to populate the mux adapter's of_node, expands to
354 * nothing if !CONFIG_OF.
355 */
356 if (muxc->dev->of_node) {
357 struct device_node *dev_node = muxc->dev->of_node;
358 struct device_node *mux_node, *child = NULL;
359 u32 reg;
360
361 if (muxc->arbitrator)
362 mux_node = of_get_child_by_name(dev_node, "i2c-arb");
363 else if (muxc->gate)
364 mux_node = of_get_child_by_name(dev_node, "i2c-gate");
365 else
366 mux_node = of_get_child_by_name(dev_node, "i2c-mux");
367
368 if (mux_node) {
369 /* A "reg" property indicates an old-style DT entry */
370 if (!of_property_read_u32(mux_node, "reg", ®)) {
371 of_node_put(mux_node);
372 mux_node = NULL;
373 }
374 }
375
376 if (!mux_node)
377 mux_node = of_node_get(dev_node);
378 else if (muxc->arbitrator || muxc->gate)
379 child = of_node_get(mux_node);
380
381 if (!child) {
382 for_each_child_of_node(mux_node, child) {
383 ret = of_property_read_u32(child, "reg", ®);
384 if (ret)
385 continue;
386 if (chan_id == reg)
387 break;
388 }
389 }
390
391 priv->adap.dev.of_node = child;
392 of_node_put(mux_node);
393 }
394
395 /*
396 * Associate the mux channel with an ACPI node.
397 */
398 if (has_acpi_companion(muxc->dev))
399 acpi_preset_companion(&priv->adap.dev,
400 ACPI_COMPANION(muxc->dev),
401 chan_id);
402
403 if (force_nr) {
404 priv->adap.nr = force_nr;
405 ret = i2c_add_numbered_adapter(&priv->adap);
406 if (ret < 0) {
407 dev_err(&parent->dev,
408 "failed to add mux-adapter %u as bus %u (error=%d)\n",
409 chan_id, force_nr, ret);
410 goto err_free_priv;
411 }
412 } else {
413 ret = i2c_add_adapter(&priv->adap);
414 if (ret < 0) {
415 dev_err(&parent->dev,
416 "failed to add mux-adapter %u (error=%d)\n",
417 chan_id, ret);
418 goto err_free_priv;
419 }
420 }
421
422 WARN(sysfs_create_link(&priv->adap.dev.kobj, &muxc->dev->kobj,
423 "mux_device"),
424 "can't create symlink to mux device\n");
425
426 snprintf(symlink_name, sizeof(symlink_name), "channel-%u", chan_id);
427 WARN(sysfs_create_link(&muxc->dev->kobj, &priv->adap.dev.kobj,
428 symlink_name),
429 "can't create symlink to channel %u\n", chan_id);
430 dev_info(&parent->dev, "Added multiplexed i2c bus %d\n",
431 i2c_adapter_id(&priv->adap));
432
433 if (muxc->register_spd)
> 434 i2c_register_spd(&priv->adap);
435
436 muxc->adapter[muxc->num_adapters++] = &priv->adap;
437 return 0;
438
439 err_free_priv:
440 kfree(priv);
441 return ret;
442 }
443 EXPORT_SYMBOL_GPL(i2c_mux_add_adapter);
444
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2024-01-11 15:53 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-10 20:13 [PATCH 0/4] i2c: Support i2c_register_spd() on multiplexed bus segments Heiner Kallweit
2024-01-10 20:13 ` [PATCH 1/4] i2c: smbus: Prepare i2c_register_spd for usage on muxed segments Heiner Kallweit
2024-01-10 23:00 ` Peter Rosin
2024-01-11 6:49 ` Heiner Kallweit
2024-01-10 20:14 ` [PATCH 2/4] i2c: mux: add basic support for calling i2c_register_spd on muxed bus segments Heiner Kallweit
2024-01-11 15:53 ` kernel test robot [this message]
2024-01-13 8:38 ` kernel test robot
2024-01-10 20:15 ` [PATCH 3/4] i2c: mux: gpio: Allow to call i2c_register_spd on a muxed segment Heiner Kallweit
2024-01-10 20:16 ` [PATCH 4/4] i2c: i801: Call i2c_register_spd() on muxed bus segments Heiner Kallweit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202401112333.GUpSFOuc-lkp@intel.com \
--to=lkp@intel.com \
--cc=andi.shyti@kernel.org \
--cc=hkallweit1@gmail.com \
--cc=jdelvare@suse.com \
--cc=linux-i2c@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=peda@axentia.se \
--cc=peter.korsgaard@barco.com \
--cc=wsa-dev@sang-engineering.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.