From: "Uwe Kleine-König (The Capable Hub)" <u.kleine-koenig@baylibre.com>
To: Jonathan Cameron <jic23@kernel.org>
Cc: "Matteo Martelli" <matteomartelli3@gmail.com>,
"David Lechner" <dlechner@baylibre.com>,
"Nuno Sá" <nuno.sa@analog.com>,
"Andy Shevchenko" <andy@kernel.org>,
"Mikael Gonella-Bolduc" <m.gonella.bolduc@gmail.com>,
"Linus Walleij" <linusw@kernel.org>,
"Sakari Ailus" <sakari.ailus@linux.intel.com>,
linux-iio@vger.kernel.org, linux-i2c@vger.kernel.org,
linux-kernel@vger.kernel.org,
"Lars-Peter Clausen" <lars@metafoo.de>,
"Michael Hennerich" <Michael.Hennerich@analog.com>,
"Puranjay Mohan" <puranjay@kernel.org>,
"Marcelo Schmitt" <marcelo.schmitt@analog.com>,
"Antoniu Miclaus" <antoniu.miclaus@analog.com>,
"Ramona Gradinariu" <ramona.gradinariu@analog.com>,
"Ariana Lazar" <ariana.lazar@microchip.com>,
"Alex Lanzano" <lanzano.alex@gmail.com>,
"Jean-Baptiste Maneyrol" <jean-baptiste.maneyrol@tdk.com>,
"Remi Buisson" <remi.buisson@tdk.com>,
"Lorenzo Bianconi" <lorenzo@kernel.org>,
"Christian Eggers" <ceggers@arri.de>,
"Tomasz Duszynski" <tduszyns@gmail.com>,
"Javier Carrasco" <javier.carrasco.cruz@gmail.com>,
"Andreas Klinger" <ak@it-klinger.de>,
"Waqar Hameed" <waqar.hameed@axis.com>,
"Sebastian Andrzej Siewior" <bigeasy@linutronix.de>,
"Gustavo Vaz" <gustavo.vaz@usp.br>,
"Dixit Parmar" <dixitparmar19@gmail.com>,
"Bartosz Golaszewski" <bartosz.golaszewski@oss.qualcomm.com>,
"Guenter Roeck" <linux@roeck-us.net>,
"Chuang Zhu" <git@chuang.cz>,
"Kyle Hsieh" <kylehsieh1995@gmail.com>,
"Oleksij Rempel" <o.rempel@pengutronix.de>,
"Sander Vanheule" <sander@svanheule.net>,
"Romain Gantois" <romain.gantois@bootlin.com>,
"David Jander" <david@protonic.nl>,
"Kurt Borja" <kuurtb@gmail.com>,
"Tomas Borquez" <tomasborquez13@gmail.com>,
"Matti Vaittinen" <mazziesaccount@gmail.com>,
chuguangqing <chuguangqing@inspur.com>,
"Shi Hao" <i.shihao.999@gmail.com>,
"Erikas Bitovtas" <xerikasxx@gmail.com>,
"Marcus Folkesson" <marcus.folkesson@gmail.com>
Subject: [PATCH v1 0/2] iio: Rework i2c_device_id initialisation
Date: Tue, 12 May 2026 14:50:33 +0200 [thread overview]
Message-ID: <cover.1778582187.git.u.kleine-koenig@baylibre.com> (raw)
Hello,
this series is a preparation for
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
index 23ff24080dfd..aebd3a5e90af 100644
--- a/include/linux/mod_devicetable.h
+++ b/include/linux/mod_devicetable.h
@@ -477,7 +477,11 @@ struct rpmsg_device_id {
struct i2c_device_id {
char name[I2C_NAME_SIZE];
- kernel_ulong_t driver_data; /* Data private to the driver */
+ union {
+ /* Data private to the driver */
+ kernel_ulong_t driver_data;
+ const void *driver_data_ptr;
+ };
};
and this requires that .driver_data is assigned via a named initializer
for static data. This requirement isn't a bad one because named
initializers are also much better readable than list initializers.
Once the union is in place, this allows changes like:
diff --git a/drivers/iio/accel/kxcjk-1013.c b/drivers/iio/accel/kxcjk-1013.c
index 8a082ff034dd..b2aac7348d22 100644
--- a/drivers/iio/accel/kxcjk-1013.c
+++ b/drivers/iio/accel/kxcjk-1013.c
@@ -1429,7 +1429,7 @@ static int kxcjk1013_probe(struct i2c_client *client)
if (id) {
name = id->name;
- data->info = (const struct kx_chipset_info *)(id->driver_data);
+ data->info = id->driver_data_ptr;
} else {
name = iio_get_acpi_device_name_and_data(&client->dev, &ddata);
data->info = ddata;
@@ -1630,11 +1630,11 @@ static const struct dev_pm_ops kxcjk1013_pm_ops = {
};
static const struct i2c_device_id kxcjk1013_id[] = {
- { .name = "kxcjk1013", .driver_data = (kernel_ulong_t)&kxcjk1013_info },
- { .name = "kxcj91008", .driver_data = (kernel_ulong_t)&kxcj91008_info },
- { .name = "kxtj21009", .driver_data = (kernel_ulong_t)&kxtj21009_info },
- { .name = "kxtf9", .driver_data = (kernel_ulong_t)&kxtf9_info },
- { .name = "kx023-1025", .driver_data = (kernel_ulong_t)&kx0231025_info },
+ { .name = "kxcjk1013", .driver_data_ptr = &kxcjk1013_info },
+ { .name = "kxcj91008", .driver_data_ptr = &kxcj91008_info },
+ { .name = "kxtj21009", .driver_data_ptr = &kxtj21009_info },
+ { .name = "kxtf9", .driver_data_ptr = &kxtf9_info },
+ { .name = "kx023-1025", .driver_data_ptr = &kx0231025_info },
{ }
};
MODULE_DEVICE_TABLE(i2c, kxcjk1013_id);
that is an improvement for readability (again!) and it keeps some
properties of the pointers (here: being const) without having to pay
attention for that. (I didn't spot a driver that doesn't have that const
on casting back in drivers/iio, but other subsystems will benefit here,
too.)
My additional motivation for this effort is CHERI[1]. This is a hardware
extension that uses 128 bit pointers but unsigned long is still 64 bit.
So with CHERI you cannot store pointers in unsigned long variables.
The first patch drops a few unused assignments to .driver_data (which is
still better than assigning the values by name) and the second converts
all iio drivers with driver_data to use named initializers.
Best regards
Uwe
[1] https://cheri-alliance.org/discover-cheri/
https://lwn.net/Articles/1037974/
Uwe Kleine-König (The Capable Hub) (2):
iio: Drop unused driver_data in four i2c drivers
iio: Initialize i2c_device_id arrays using member names
drivers/iio/accel/adxl345_i2c.c | 4 +-
drivers/iio/accel/adxl355_i2c.c | 4 +-
drivers/iio/accel/adxl372_i2c.c | 4 +-
drivers/iio/accel/adxl380_i2c.c | 8 +-
drivers/iio/accel/bma180.c | 10 +-
drivers/iio/accel/bmc150-accel-i2c.c | 20 ++--
drivers/iio/accel/bmi088-accel-i2c.c | 6 +-
drivers/iio/accel/da280.c | 6 +-
drivers/iio/accel/fxls8962af-i2c.c | 8 +-
drivers/iio/accel/kxcjk-1013.c | 10 +-
drivers/iio/accel/mc3230.c | 4 +-
drivers/iio/accel/mma8452.c | 12 +--
drivers/iio/adc/ad7091r5.c | 2 +-
drivers/iio/adc/ad799x.c | 16 ++--
drivers/iio/adc/ina2xx-adc.c | 12 +--
drivers/iio/adc/ltc2309.c | 4 +-
drivers/iio/adc/ltc2471.c | 4 +-
drivers/iio/adc/ltc2497.c | 4 +-
drivers/iio/adc/max34408.c | 4 +-
drivers/iio/adc/mcp3422.c | 16 ++--
drivers/iio/adc/pac1921.c | 2 +-
drivers/iio/adc/ti-adc081c.c | 6 +-
drivers/iio/adc/ti-ads1015.c | 6 +-
drivers/iio/adc/ti-ads7138.c | 4 +-
drivers/iio/cdc/ad7150.c | 6 +-
drivers/iio/cdc/ad7746.c | 6 +-
drivers/iio/chemical/atlas-ezo-sensor.c | 6 +-
drivers/iio/chemical/atlas-sensor.c | 10 +-
drivers/iio/chemical/sgp30.c | 4 +-
drivers/iio/chemical/vz89x.c | 4 +-
drivers/iio/dac/ad5064.c | 94 +++++++++----------
drivers/iio/dac/ad5380.c | 32 +++----
drivers/iio/dac/ad5446-i2c.c | 12 +--
drivers/iio/dac/ad5696-i2c.c | 32 +++----
drivers/iio/dac/ds4424.c | 8 +-
drivers/iio/dac/max517.c | 10 +-
drivers/iio/dac/max5821.c | 2 +-
drivers/iio/dac/mcp4725.c | 4 +-
drivers/iio/dac/mcp47feb02.c | 48 +++++-----
drivers/iio/dac/ti-dac5571.c | 22 ++---
drivers/iio/health/max30102.c | 6 +-
drivers/iio/humidity/ens210.c | 12 +--
drivers/iio/humidity/htu21.c | 4 +-
drivers/iio/imu/bmi270/bmi270_i2c.c | 4 +-
.../iio/imu/inv_icm42600/inv_icm42600_i2c.c | 14 +--
.../iio/imu/inv_icm45600/inv_icm45600_i2c.c | 16 ++--
drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c | 36 +++----
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_i2c.c | 48 +++++-----
drivers/iio/light/apds9160.c | 2 +-
drivers/iio/light/as73211.c | 4 +-
drivers/iio/light/bh1750.c | 10 +-
drivers/iio/light/isl29018.c | 6 +-
drivers/iio/light/ltr501.c | 8 +-
drivers/iio/light/opt3001.c | 4 +-
drivers/iio/light/opt4001.c | 4 +-
drivers/iio/light/si1145.c | 14 +--
drivers/iio/light/tsl2563.c | 8 +-
drivers/iio/light/tsl2583.c | 6 +-
drivers/iio/light/tsl2772.c | 22 ++---
drivers/iio/light/vcnl4000.c | 14 +--
drivers/iio/light/veml6030.c | 6 +-
drivers/iio/magnetometer/ak8975.c | 14 +--
drivers/iio/magnetometer/hmc5843_i2c.c | 8 +-
drivers/iio/magnetometer/yamaha-yas530.c | 8 +-
drivers/iio/potentiometer/ad5272.c | 10 +-
drivers/iio/potentiometer/ds1803.c | 8 +-
drivers/iio/potentiometer/tpl0102.c | 8 +-
drivers/iio/pressure/abp060mg.c | 90 +++++++++++-------
drivers/iio/pressure/bmp280-i2c.c | 12 +--
drivers/iio/pressure/dlhl60d.c | 4 +-
drivers/iio/pressure/ms5611_i2c.c | 4 +-
drivers/iio/pressure/ms5637.c | 8 +-
drivers/iio/pressure/st_pressure_i2c.c | 16 ++--
drivers/iio/proximity/aw96103.c | 4 +-
drivers/iio/proximity/srf08.c | 6 +-
drivers/iio/proximity/sx9310.c | 4 +-
drivers/iio/proximity/sx9324.c | 2 +-
drivers/iio/proximity/sx9360.c | 2 +-
drivers/iio/temperature/tmp117.c | 4 +-
79 files changed, 479 insertions(+), 457 deletions(-)
base-commit: 254f49634ee16a731174d2ae34bc50bd5f45e731
--
2.47.3
next reply other threads:[~2026-05-12 12:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-12 12:50 Uwe Kleine-König (The Capable Hub) [this message]
2026-05-12 12:50 ` [PATCH v1 1/2] iio: Drop unused driver_data in four i2c drivers Uwe Kleine-König (The Capable Hub)
2026-05-12 14:01 ` Jonathan Cameron
2026-05-12 12:50 ` [PATCH v1 2/2] iio: Initialize i2c_device_id arrays using member names Uwe Kleine-König (The Capable Hub)
2026-05-12 13:16 ` Linus Walleij
2026-05-12 14:00 ` Jonathan Cameron
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=cover.1778582187.git.u.kleine-koenig@baylibre.com \
--to=u.kleine-koenig@baylibre.com \
--cc=Michael.Hennerich@analog.com \
--cc=ak@it-klinger.de \
--cc=andy@kernel.org \
--cc=antoniu.miclaus@analog.com \
--cc=ariana.lazar@microchip.com \
--cc=bartosz.golaszewski@oss.qualcomm.com \
--cc=bigeasy@linutronix.de \
--cc=ceggers@arri.de \
--cc=chuguangqing@inspur.com \
--cc=david@protonic.nl \
--cc=dixitparmar19@gmail.com \
--cc=dlechner@baylibre.com \
--cc=git@chuang.cz \
--cc=gustavo.vaz@usp.br \
--cc=i.shihao.999@gmail.com \
--cc=javier.carrasco.cruz@gmail.com \
--cc=jean-baptiste.maneyrol@tdk.com \
--cc=jic23@kernel.org \
--cc=kuurtb@gmail.com \
--cc=kylehsieh1995@gmail.com \
--cc=lanzano.alex@gmail.com \
--cc=lars@metafoo.de \
--cc=linusw@kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=lorenzo@kernel.org \
--cc=m.gonella.bolduc@gmail.com \
--cc=marcelo.schmitt@analog.com \
--cc=marcus.folkesson@gmail.com \
--cc=matteomartelli3@gmail.com \
--cc=mazziesaccount@gmail.com \
--cc=nuno.sa@analog.com \
--cc=o.rempel@pengutronix.de \
--cc=puranjay@kernel.org \
--cc=ramona.gradinariu@analog.com \
--cc=remi.buisson@tdk.com \
--cc=romain.gantois@bootlin.com \
--cc=sakari.ailus@linux.intel.com \
--cc=sander@svanheule.net \
--cc=tduszyns@gmail.com \
--cc=tomasborquez13@gmail.com \
--cc=waqar.hameed@axis.com \
--cc=xerikasxx@gmail.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