From: Arnd Bergmann <arnd@kernel.org>
To: Guenter Roeck <linux@roeck-us.net>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Jonathan Cameron <jic23@kernel.org>,
Arnd Bergmann <arnd@arndb.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Frank Li <Frank.Li@nxp.com>,
Andy Shevchenko <andriy.shevchenko@intel.com>,
Carlos Song <carlos.song@nxp.com>,
Adrian Fluturel <fluturel.adrian@gmail.com>
Cc: "David Lechner" <dlechner@baylibre.com>,
"Nuno Sá" <nuno.sa@analog.com>,
"Andy Shevchenko" <andy@kernel.org>,
linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-i3c@lists.infradead.org, linux-iio@vger.kernel.org
Subject: [PATCH] i3c, iio: fix i3c driver dependencies
Date: Mon, 2 Feb 2026 10:55:31 +0100 [thread overview]
Message-ID: <20260202095628.1254175-1-arnd@kernel.org> (raw)
From: Arnd Bergmann <arnd@arndb.de>
All combined i2c/i3c drivers appear to suffer from the same link
time problem when CONFIG_I3C is set to 'm':
arm-linux-gnueabi-ld: drivers/iio/magnetometer/mmc5633.o: in function `mmc5633_i3c_driver_init':
mmc5633.c:(.init.text+0x30): undefined reference to `i3c_driver_register_with_owner'
This was previously fixed several times by marking individual
drivers as 'depends on I2C; depends on I3C || !I3C', but this gets
tedious and is somewhat confusing.
Add a Kconfig symbol 'I3C_OR_I2C' to help replace those dependencies,
and use this in all the existing drivers that had already fixed it
as well as the new mmc5633 driver.
Fixes: 6e5f6bf2e3f0 ("iio: magnetometer: Add mmc5633 sensor")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
drivers/hwmon/Kconfig | 17 ++---------------
drivers/i3c/Kconfig | 12 ++++++++++++
drivers/iio/magnetometer/Kconfig | 2 +-
drivers/misc/amd-sbi/Kconfig | 3 +--
4 files changed, 16 insertions(+), 18 deletions(-)
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 41c381764c2b..1ddb3f73fdc0 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -1493,8 +1493,7 @@ config SENSORS_LM73
config SENSORS_LM75
tristate "National Semiconductor LM75 and compatibles"
- depends on I2C
- depends on I3C || !I3C
+ depends on I3C_OR_I2C
select REGMAP_I2C
select REGMAP_I3C if I3C
help
@@ -2381,19 +2380,7 @@ config SENSORS_TMP102
config SENSORS_TMP103
tristate "Texas Instruments TMP103"
- depends on I2C
- select REGMAP_I2C
- help
- If you say yes here you get support for Texas Instruments TMP103
- sensor chips.
-
- This driver can also be built as a module. If so, the module
- will be called tmp103.
-
-config SENSORS_TMP108
- tristate "Texas Instruments TMP108"
- depends on I2C
- depends on I3C || !I3C
+ depends on I3C_OR_I2C
select REGMAP_I2C
select REGMAP_I3C if I3C
help
diff --git a/drivers/i3c/Kconfig b/drivers/i3c/Kconfig
index 30a441506f61..626c54b386d5 100644
--- a/drivers/i3c/Kconfig
+++ b/drivers/i3c/Kconfig
@@ -22,3 +22,15 @@ menuconfig I3C
if I3C
source "drivers/i3c/master/Kconfig"
endif # I3C
+
+config I3C_OR_I2C
+ tristate
+ default m if I3C=m
+ default I2C
+ help
+ Device drivers using module_i3c_i2c_driver() can use either
+ i2c or i3c hosts, but cannot be built-in for the kernel when
+ CONFIG_I3C=m.
+
+ Add 'depends on I2C_OR_I3C' in Kconfig for those drivers to
+ get the correct dependencies.
diff --git a/drivers/iio/magnetometer/Kconfig b/drivers/iio/magnetometer/Kconfig
index 2b81b22c9550..448fef4e5716 100644
--- a/drivers/iio/magnetometer/Kconfig
+++ b/drivers/iio/magnetometer/Kconfig
@@ -143,7 +143,7 @@ config MMC5633
tristate "MEMSIC MMC5633 3-axis magnetic sensor"
select REGMAP_I2C if I2C
select REGMAP_I3C if I3C
- depends on I2C || I3C
+ depends on I3C_OR_I2C
help
Say yes here to build support for the MEMSIC MMC5633 3-axis
magnetic sensor.
diff --git a/drivers/misc/amd-sbi/Kconfig b/drivers/misc/amd-sbi/Kconfig
index be022c71a90c..30e7fad7356c 100644
--- a/drivers/misc/amd-sbi/Kconfig
+++ b/drivers/misc/amd-sbi/Kconfig
@@ -1,10 +1,9 @@
# SPDX-License-Identifier: GPL-2.0-only
config AMD_SBRMI_I2C
tristate "AMD side band RMI support"
- depends on I2C
+ depends on I3C_OR_I2C
depends on ARM || ARM64 || COMPILE_TEST
select REGMAP_I2C
- depends on I3C || !I3C
select REGMAP_I3C if I3C
help
Side band RMI over I2C/I3C support for AMD out of band management.
--
2.39.5
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@kernel.org>
To: Guenter Roeck <linux@roeck-us.net>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Jonathan Cameron <jic23@kernel.org>,
Arnd Bergmann <arnd@arndb.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Frank Li <Frank.Li@nxp.com>,
Andy Shevchenko <andriy.shevchenko@intel.com>,
Carlos Song <carlos.song@nxp.com>,
Adrian Fluturel <fluturel.adrian@gmail.com>
Cc: "David Lechner" <dlechner@baylibre.com>,
"Nuno Sá" <nuno.sa@analog.com>,
"Andy Shevchenko" <andy@kernel.org>,
linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-i3c@lists.infradead.org, linux-iio@vger.kernel.org
Subject: [PATCH] i3c, iio: fix i3c driver dependencies
Date: Mon, 2 Feb 2026 10:55:31 +0100 [thread overview]
Message-ID: <20260202095628.1254175-1-arnd@kernel.org> (raw)
From: Arnd Bergmann <arnd@arndb.de>
All combined i2c/i3c drivers appear to suffer from the same link
time problem when CONFIG_I3C is set to 'm':
arm-linux-gnueabi-ld: drivers/iio/magnetometer/mmc5633.o: in function `mmc5633_i3c_driver_init':
mmc5633.c:(.init.text+0x30): undefined reference to `i3c_driver_register_with_owner'
This was previously fixed several times by marking individual
drivers as 'depends on I2C; depends on I3C || !I3C', but this gets
tedious and is somewhat confusing.
Add a Kconfig symbol 'I3C_OR_I2C' to help replace those dependencies,
and use this in all the existing drivers that had already fixed it
as well as the new mmc5633 driver.
Fixes: 6e5f6bf2e3f0 ("iio: magnetometer: Add mmc5633 sensor")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
drivers/hwmon/Kconfig | 17 ++---------------
drivers/i3c/Kconfig | 12 ++++++++++++
drivers/iio/magnetometer/Kconfig | 2 +-
drivers/misc/amd-sbi/Kconfig | 3 +--
4 files changed, 16 insertions(+), 18 deletions(-)
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 41c381764c2b..1ddb3f73fdc0 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -1493,8 +1493,7 @@ config SENSORS_LM73
config SENSORS_LM75
tristate "National Semiconductor LM75 and compatibles"
- depends on I2C
- depends on I3C || !I3C
+ depends on I3C_OR_I2C
select REGMAP_I2C
select REGMAP_I3C if I3C
help
@@ -2381,19 +2380,7 @@ config SENSORS_TMP102
config SENSORS_TMP103
tristate "Texas Instruments TMP103"
- depends on I2C
- select REGMAP_I2C
- help
- If you say yes here you get support for Texas Instruments TMP103
- sensor chips.
-
- This driver can also be built as a module. If so, the module
- will be called tmp103.
-
-config SENSORS_TMP108
- tristate "Texas Instruments TMP108"
- depends on I2C
- depends on I3C || !I3C
+ depends on I3C_OR_I2C
select REGMAP_I2C
select REGMAP_I3C if I3C
help
diff --git a/drivers/i3c/Kconfig b/drivers/i3c/Kconfig
index 30a441506f61..626c54b386d5 100644
--- a/drivers/i3c/Kconfig
+++ b/drivers/i3c/Kconfig
@@ -22,3 +22,15 @@ menuconfig I3C
if I3C
source "drivers/i3c/master/Kconfig"
endif # I3C
+
+config I3C_OR_I2C
+ tristate
+ default m if I3C=m
+ default I2C
+ help
+ Device drivers using module_i3c_i2c_driver() can use either
+ i2c or i3c hosts, but cannot be built-in for the kernel when
+ CONFIG_I3C=m.
+
+ Add 'depends on I2C_OR_I3C' in Kconfig for those drivers to
+ get the correct dependencies.
diff --git a/drivers/iio/magnetometer/Kconfig b/drivers/iio/magnetometer/Kconfig
index 2b81b22c9550..448fef4e5716 100644
--- a/drivers/iio/magnetometer/Kconfig
+++ b/drivers/iio/magnetometer/Kconfig
@@ -143,7 +143,7 @@ config MMC5633
tristate "MEMSIC MMC5633 3-axis magnetic sensor"
select REGMAP_I2C if I2C
select REGMAP_I3C if I3C
- depends on I2C || I3C
+ depends on I3C_OR_I2C
help
Say yes here to build support for the MEMSIC MMC5633 3-axis
magnetic sensor.
diff --git a/drivers/misc/amd-sbi/Kconfig b/drivers/misc/amd-sbi/Kconfig
index be022c71a90c..30e7fad7356c 100644
--- a/drivers/misc/amd-sbi/Kconfig
+++ b/drivers/misc/amd-sbi/Kconfig
@@ -1,10 +1,9 @@
# SPDX-License-Identifier: GPL-2.0-only
config AMD_SBRMI_I2C
tristate "AMD side band RMI support"
- depends on I2C
+ depends on I3C_OR_I2C
depends on ARM || ARM64 || COMPILE_TEST
select REGMAP_I2C
- depends on I3C || !I3C
select REGMAP_I3C if I3C
help
Side band RMI over I2C/I3C support for AMD out of band management.
--
2.39.5
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
next reply other threads:[~2026-02-02 9:56 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-02 9:55 Arnd Bergmann [this message]
2026-02-02 9:55 ` [PATCH] i3c, iio: fix i3c driver dependencies Arnd Bergmann
2026-02-02 15:24 ` Guenter Roeck
2026-02-02 15:24 ` Guenter Roeck
2026-02-02 16:04 ` Arnd Bergmann
2026-02-02 16:04 ` Arnd Bergmann
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=20260202095628.1254175-1-arnd@kernel.org \
--to=arnd@kernel.org \
--cc=Frank.Li@nxp.com \
--cc=alexandre.belloni@bootlin.com \
--cc=andriy.shevchenko@intel.com \
--cc=andy@kernel.org \
--cc=arnd@arndb.de \
--cc=carlos.song@nxp.com \
--cc=dlechner@baylibre.com \
--cc=fluturel.adrian@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=jic23@kernel.org \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-i3c@lists.infradead.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=nuno.sa@analog.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.