The Linux Kernel Mailing List
 help / color / mirror / Atom feed
* [PATCH v1 0/2] hwmon: Rework initialization of i2c_device_ids
@ 2026-05-13 16:44 Uwe Kleine-König (The Capable Hub)
  2026-05-13 16:44 ` [PATCH v1 1/2] hwmon: Drop unused i2c driver_data Uwe Kleine-König (The Capable Hub)
  2026-05-13 16:44 ` [PATCH v1 2/2] hwmon: Use named initializers for arrays of i2c_device_data Uwe Kleine-König (The Capable Hub)
  0 siblings, 2 replies; 4+ messages in thread
From: Uwe Kleine-König (The Capable Hub) @ 2026-05-13 16:44 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Cedric Encarnacion, Igor Reznichenko, Chris Packham, linux-hwmon,
	linux-kernel, Jean Delvare, Corentin Labbe, Michael Hennerich,
	George Joseph, Javier Carrasco, Juerg Haefliger,
	Steve Glendinning, Riku Voipio, Andre Werner, Andrei Lalaev,
	Carsten Spieß, Guillaume Ligneul, Nuno Sá,
	Antoniu Miclaus, Zev Weiss, Ninad Palsule, Robert Marko,
	Vasileios Amoiridis, Leo Yang, Daniel Nilsson, Kim Seer Paller,
	Noah Wang, Wensheng Wang, Yuxi Wang, Cosmo Chou, Saravanan Sekar,
	Charles Hsu, Jerome Brunet, Duke Du, Eric Tremblay, Marc Hulsman,
	Rudolf Marek, ChiShih Tsai, Andrew Davis, Sanman Pradhan,
	Dawei Liu, Grant Peltier, Chiang Brian, Jeff Lin,
	Alexis Czezar Torreno, Carl Lee, Randy Dunlap, Andy Shevchenko,
	Andrew Morton, Colin Huang, Torben Nielsen, Bartosz Golaszewski,
	Ashish Yadav, Markus Schneider-Pargmann

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;
	+	};
	 };
	 
	 /* pci_epf */

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.

There are no hwmon drivers that benefit from that change to
i2c_device_id, but it allows further cleanups 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 are an improvement for readability (again!) and it keeps some
properties of the pointers (here: being const) without having to pay
attention for that.

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 hwmon drivers to use named initializers.

Uwe Kleine-König (The Capable Hub) (2):
  hwmon: Drop unused i2c driver_data
  hwmon: Use named initializers for arrays of i2c_device_data

 drivers/hwmon/ad7414.c                  |  4 +-
 drivers/hwmon/ad7418.c                  |  6 +-
 drivers/hwmon/adc128d818.c              |  2 +-
 drivers/hwmon/adm1025.c                 |  4 +-
 drivers/hwmon/adm1026.c                 |  2 +-
 drivers/hwmon/adm1029.c                 |  2 +-
 drivers/hwmon/adm1031.c                 |  4 +-
 drivers/hwmon/adm1177.c                 |  4 +-
 drivers/hwmon/adm9240.c                 |  6 +-
 drivers/hwmon/ads7828.c                 |  4 +-
 drivers/hwmon/adt7410.c                 |  8 +--
 drivers/hwmon/adt7411.c                 |  2 +-
 drivers/hwmon/adt7462.c                 |  2 +-
 drivers/hwmon/adt7470.c                 |  2 +-
 drivers/hwmon/adt7475.c                 |  8 +--
 drivers/hwmon/aht10.c                   |  8 +--
 drivers/hwmon/amc6821.c                 |  2 +-
 drivers/hwmon/asb100.c                  |  2 +-
 drivers/hwmon/asc7621.c                 |  6 +-
 drivers/hwmon/atxp1.c                   |  2 +-
 drivers/hwmon/chipcap2.c                | 16 ++---
 drivers/hwmon/dme1737.c                 |  4 +-
 drivers/hwmon/ds1621.c                  | 10 +--
 drivers/hwmon/ds620.c                   |  4 +-
 drivers/hwmon/emc1403.c                 | 24 +++----
 drivers/hwmon/emc2103.c                 |  2 +-
 drivers/hwmon/emc2305.c                 |  8 +--
 drivers/hwmon/emc6w201.c                |  2 +-
 drivers/hwmon/f75375s.c                 |  6 +-
 drivers/hwmon/fschmd.c                  | 14 ++--
 drivers/hwmon/ftsteutates.c             |  2 +-
 drivers/hwmon/g760a.c                   |  2 +-
 drivers/hwmon/g762.c                    |  6 +-
 drivers/hwmon/gl518sm.c                 |  2 +-
 drivers/hwmon/gl520sm.c                 |  2 +-
 drivers/hwmon/hih6130.c                 |  2 +-
 drivers/hwmon/hs3001.c                  |  4 +-
 drivers/hwmon/htu31.c                   |  2 +-
 drivers/hwmon/ina209.c                  |  2 +-
 drivers/hwmon/ina238.c                  | 12 ++--
 drivers/hwmon/ina2xx.c                  | 16 ++---
 drivers/hwmon/ina3221.c                 |  2 +-
 drivers/hwmon/isl28022.c                |  2 +-
 drivers/hwmon/jc42.c                    |  2 +-
 drivers/hwmon/lineage-pem.c             |  4 +-
 drivers/hwmon/lm63.c                    |  6 +-
 drivers/hwmon/lm73.c                    |  2 +-
 drivers/hwmon/lm75.c                    | 62 ++++++++--------
 drivers/hwmon/lm77.c                    |  2 +-
 drivers/hwmon/lm78.c                    |  4 +-
 drivers/hwmon/lm80.c                    |  4 +-
 drivers/hwmon/lm83.c                    |  4 +-
 drivers/hwmon/lm85.c                    | 24 +++----
 drivers/hwmon/lm87.c                    |  4 +-
 drivers/hwmon/lm90.c                    | 96 ++++++++++++-------------
 drivers/hwmon/lm92.c                    |  6 +-
 drivers/hwmon/lm93.c                    |  4 +-
 drivers/hwmon/lm95234.c                 |  4 +-
 drivers/hwmon/lm95241.c                 |  4 +-
 drivers/hwmon/lm95245.c                 |  4 +-
 drivers/hwmon/ltc2945.c                 |  2 +-
 drivers/hwmon/ltc2947-i2c.c             |  4 +-
 drivers/hwmon/ltc2990.c                 |  4 +-
 drivers/hwmon/ltc2991.c                 |  4 +-
 drivers/hwmon/ltc2992.c                 |  4 +-
 drivers/hwmon/ltc4151.c                 |  2 +-
 drivers/hwmon/ltc4215.c                 |  2 +-
 drivers/hwmon/ltc4222.c                 |  2 +-
 drivers/hwmon/ltc4245.c                 |  2 +-
 drivers/hwmon/ltc4260.c                 |  2 +-
 drivers/hwmon/ltc4261.c                 |  4 +-
 drivers/hwmon/max127.c                  |  2 +-
 drivers/hwmon/max16065.c                | 12 ++--
 drivers/hwmon/max1619.c                 |  2 +-
 drivers/hwmon/max1668.c                 |  6 +-
 drivers/hwmon/max31730.c                |  2 +-
 drivers/hwmon/max31760.c                |  2 +-
 drivers/hwmon/max31790.c                |  2 +-
 drivers/hwmon/max31827.c                |  6 +-
 drivers/hwmon/max6620.c                 |  2 +-
 drivers/hwmon/max6621.c                 |  2 +-
 drivers/hwmon/max6639.c                 |  2 +-
 drivers/hwmon/max6650.c                 |  4 +-
 drivers/hwmon/max6697.c                 | 20 +++---
 drivers/hwmon/mc34vr500.c               |  4 +-
 drivers/hwmon/mcp3021.c                 |  4 +-
 drivers/hwmon/nct6775-i2c.c             | 26 +++----
 drivers/hwmon/nct7802.c                 |  2 +-
 drivers/hwmon/nct7904.c                 |  4 +-
 drivers/hwmon/pcf8591.c                 |  2 +-
 drivers/hwmon/pmbus/acbel-fsg032.c      |  4 +-
 drivers/hwmon/pmbus/adm1266.c           |  2 +-
 drivers/hwmon/pmbus/adm1275.c           | 20 +++---
 drivers/hwmon/pmbus/aps-379.c           |  4 +-
 drivers/hwmon/pmbus/bel-pfe.c           |  6 +-
 drivers/hwmon/pmbus/bpa-rs600.c         |  6 +-
 drivers/hwmon/pmbus/crps.c              |  4 +-
 drivers/hwmon/pmbus/delta-ahe50dc-fan.c |  2 +-
 drivers/hwmon/pmbus/dps920ab.c          |  4 +-
 drivers/hwmon/pmbus/fsp-3y.c            |  4 +-
 drivers/hwmon/pmbus/hac300s.c           |  4 +-
 drivers/hwmon/pmbus/ibm-cffps.c         |  8 +--
 drivers/hwmon/pmbus/ina233.c            |  4 +-
 drivers/hwmon/pmbus/inspur-ipsps.c      |  4 +-
 drivers/hwmon/pmbus/ir35221.c           |  4 +-
 drivers/hwmon/pmbus/ir36021.c           |  4 +-
 drivers/hwmon/pmbus/ir38064.c           | 10 +--
 drivers/hwmon/pmbus/irps5401.c          |  4 +-
 drivers/hwmon/pmbus/isl68137.c          | 92 ++++++++++++------------
 drivers/hwmon/pmbus/lm25066.c           | 10 +--
 drivers/hwmon/pmbus/lt3074.c            |  4 +-
 drivers/hwmon/pmbus/lt7182s.c           |  4 +-
 drivers/hwmon/pmbus/ltc2978.c           | 60 ++++++++--------
 drivers/hwmon/pmbus/ltc3815.c           |  2 +-
 drivers/hwmon/pmbus/max15301.c          |  8 +--
 drivers/hwmon/pmbus/max16064.c          |  4 +-
 drivers/hwmon/pmbus/max16601.c          | 10 +--
 drivers/hwmon/pmbus/max17616.c          |  2 +-
 drivers/hwmon/pmbus/max20730.c          | 10 +--
 drivers/hwmon/pmbus/max20751.c          |  4 +-
 drivers/hwmon/pmbus/max31785.c          |  8 +--
 drivers/hwmon/pmbus/max34440.c          | 18 ++---
 drivers/hwmon/pmbus/max8688.c           |  2 +-
 drivers/hwmon/pmbus/mp2856.c            |  6 +-
 drivers/hwmon/pmbus/mp2888.c            |  4 +-
 drivers/hwmon/pmbus/mp2891.c            |  2 +-
 drivers/hwmon/pmbus/mp2925.c            |  6 +-
 drivers/hwmon/pmbus/mp29502.c           |  4 +-
 drivers/hwmon/pmbus/mp2975.c            |  8 +--
 drivers/hwmon/pmbus/mp2993.c            |  2 +-
 drivers/hwmon/pmbus/mp5920.c            |  2 +-
 drivers/hwmon/pmbus/mp5926.c            |  4 +-
 drivers/hwmon/pmbus/mp5990.c            |  4 +-
 drivers/hwmon/pmbus/mp9941.c            |  2 +-
 drivers/hwmon/pmbus/mp9945.c            |  4 +-
 drivers/hwmon/pmbus/mpq7932.c           |  6 +-
 drivers/hwmon/pmbus/mpq8785.c           | 10 +--
 drivers/hwmon/pmbus/pim4328.c           | 18 ++---
 drivers/hwmon/pmbus/pli1209bc.c         |  4 +-
 drivers/hwmon/pmbus/pm6764tr.c          |  4 +-
 drivers/hwmon/pmbus/pmbus.c             | 60 ++++++++--------
 drivers/hwmon/pmbus/pxe1610.c           |  8 +--
 drivers/hwmon/pmbus/q54sj108a2.c        |  8 +--
 drivers/hwmon/pmbus/stef48h28.c         |  4 +-
 drivers/hwmon/pmbus/stpddc60.c          |  6 +-
 drivers/hwmon/pmbus/tda38640.c          |  4 +-
 drivers/hwmon/pmbus/tps25990.c          |  4 +-
 drivers/hwmon/pmbus/tps40422.c          |  4 +-
 drivers/hwmon/pmbus/tps53679.c          | 18 ++---
 drivers/hwmon/pmbus/tps546d24.c         |  4 +-
 drivers/hwmon/pmbus/ucd9000.c           | 16 ++---
 drivers/hwmon/pmbus/ucd9200.c           | 18 ++---
 drivers/hwmon/pmbus/xdp710.c            |  2 +-
 drivers/hwmon/pmbus/xdp720.c            |  4 +-
 drivers/hwmon/pmbus/xdpe12284.c         |  8 +--
 drivers/hwmon/pmbus/xdpe152c4.c         |  6 +-
 drivers/hwmon/pmbus/xdpe1a2g7b.c        |  6 +-
 drivers/hwmon/pmbus/zl6100.c            | 44 ++++++------
 drivers/hwmon/powr1220.c                |  4 +-
 drivers/hwmon/pt5161l.c                 |  4 +-
 drivers/hwmon/sbtsi_temp.c              |  4 +-
 drivers/hwmon/sg2042-mcu.c              |  2 +-
 drivers/hwmon/sht21.c                   |  6 +-
 drivers/hwmon/sht3x.c                   |  8 +--
 drivers/hwmon/sht4x.c                   |  4 +-
 drivers/hwmon/shtc1.c                   |  6 +-
 drivers/hwmon/smsc47m192.c              |  2 +-
 drivers/hwmon/spd5118.c                 |  2 +-
 drivers/hwmon/stts751.c                 |  2 +-
 drivers/hwmon/tc654.c                   |  6 +-
 drivers/hwmon/tc74.c                    |  4 +-
 drivers/hwmon/thmc50.c                  |  4 +-
 drivers/hwmon/tmp102.c                  |  2 +-
 drivers/hwmon/tmp103.c                  |  2 +-
 drivers/hwmon/tmp108.c                  |  8 +--
 drivers/hwmon/tmp401.c                  | 10 +--
 drivers/hwmon/tmp421.c                  | 10 +--
 drivers/hwmon/tmp464.c                  |  4 +-
 drivers/hwmon/tmp513.c                  |  4 +-
 drivers/hwmon/tsc1641.c                 |  2 +-
 drivers/hwmon/w83773g.c                 |  2 +-
 drivers/hwmon/w83781d.c                 |  8 +--
 drivers/hwmon/w83791d.c                 |  2 +-
 drivers/hwmon/w83792d.c                 |  2 +-
 drivers/hwmon/w83793.c                  |  2 +-
 drivers/hwmon/w83795.c                  |  4 +-
 drivers/hwmon/w83l785ts.c               |  2 +-
 drivers/hwmon/w83l786ng.c               |  2 +-
 188 files changed, 687 insertions(+), 687 deletions(-)


base-commit: 254f49634ee16a731174d2ae34bc50bd5f45e731
-- 
2.47.3


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-05-13 22:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-13 16:44 [PATCH v1 0/2] hwmon: Rework initialization of i2c_device_ids Uwe Kleine-König (The Capable Hub)
2026-05-13 16:44 ` [PATCH v1 1/2] hwmon: Drop unused i2c driver_data Uwe Kleine-König (The Capable Hub)
2026-05-13 22:40   ` Chris Packham
2026-05-13 16:44 ` [PATCH v1 2/2] hwmon: Use named initializers for arrays of i2c_device_data Uwe Kleine-König (The Capable Hub)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox