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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).