The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: "Uwe Kleine-König (The Capable Hub)" <u.kleine-koenig@baylibre.com>
To: Guenter Roeck <linux@roeck-us.net>
Cc: "Cedric Encarnacion" <cedricjustine.encarnacion@analog.com>,
	"Igor Reznichenko" <igor@reznichenko.net>,
	"Chris Packham" <chris.packham@alliedtelesis.co.nz>,
	linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org,
	"Jean Delvare" <jdelvare@suse.com>,
	"Corentin Labbe" <clabbe.montjoie@gmail.com>,
	"Michael Hennerich" <Michael.Hennerich@analog.com>,
	"George Joseph" <george.joseph@fairview5.com>,
	"Javier Carrasco" <javier.carrasco.cruz@gmail.com>,
	"Juerg Haefliger" <juergh@proton.me>,
	"Steve Glendinning" <steve.glendinning@shawell.net>,
	"Riku Voipio" <riku.voipio@iki.fi>,
	"Andre Werner" <andre.werner@systec-electronic.com>,
	"Andrei Lalaev" <andrey.lalaev@gmail.com>,
	"Carsten Spieß" <mail@carsten-spiess.de>,
	"Guillaume Ligneul" <guillaume.ligneul@gmail.com>,
	"Nuno Sá" <nuno.sa@analog.com>,
	"Antoniu Miclaus" <antoniu.miclaus@analog.com>,
	"Zev Weiss" <zev@bewilderbeest.net>,
	"Ninad Palsule" <ninad@linux.ibm.com>,
	"Robert Marko" <robert.marko@sartura.hr>,
	"Vasileios Amoiridis" <vasileios.amoiridis@cern.ch>,
	"Leo Yang" <leo.yang.sy0@gmail.com>,
	"Daniel Nilsson" <daniel.nilsson@flex.com>,
	"Kim Seer Paller" <kimseer.paller@analog.com>,
	"Noah Wang" <noahwang.wang@outlook.com>,
	"Wensheng Wang" <wenswang@yeah.net>,
	"Yuxi Wang" <Yuxi.Wang@monolithicpower.com>,
	"Cosmo Chou" <chou.cosmo@gmail.com>,
	"Saravanan Sekar" <sravanhome@gmail.com>,
	"Charles Hsu" <hsu.yungteng@gmail.com>,
	"Jerome Brunet" <jbrunet@baylibre.com>,
	"Duke Du" <dukedu83@gmail.com>,
	"Eric Tremblay" <etremblay@distech-controls.com>,
	"Marc Hulsman" <m.hulsman@tudelft.nl>,
	"Rudolf Marek" <r.marek@assembler.cz>,
	"ChiShih Tsai" <tomtsai764@gmail.com>,
	"Andrew Davis" <afd@ti.com>,
	"Sanman Pradhan" <psanman@juniper.net>,
	"Dawei Liu" <dawei.liu.jy@renesas.com>,
	"Grant Peltier" <grantpeltier93@gmail.com>,
	"Chiang Brian" <chiang.brian@inventec.com>,
	"Jeff Lin" <jefflin994697@gmail.com>,
	"Alexis Czezar Torreno" <alexisczezar.torreno@analog.com>,
	"Carl Lee" <carl.lee@amd.com>,
	"Randy Dunlap" <rdunlap@infradead.org>,
	"Andy Shevchenko" <andriy.shevchenko@intel.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Colin Huang" <u8813345@gmail.com>,
	"Torben Nielsen" <t8927095@gmail.com>,
	"Bartosz Golaszewski" <brgl@kernel.org>,
	"Ashish Yadav" <ashish.yadav@infineon.com>,
	"Markus Schneider-Pargmann" <msp@baylibre.com>
Subject: [PATCH v1 0/2] hwmon: Rework initialization of i2c_device_ids
Date: Wed, 13 May 2026 18:44:56 +0200	[thread overview]
Message-ID: <cover.1778688802.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;
	+	};
	 };
	 
	 /* 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


             reply	other threads:[~2026-05-13 16:45 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-13 16:44 Uwe Kleine-König (The Capable Hub) [this message]
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)

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.1778688802.git.u.kleine-koenig@baylibre.com \
    --to=u.kleine-koenig@baylibre.com \
    --cc=Michael.Hennerich@analog.com \
    --cc=Yuxi.Wang@monolithicpower.com \
    --cc=afd@ti.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexisczezar.torreno@analog.com \
    --cc=andre.werner@systec-electronic.com \
    --cc=andrey.lalaev@gmail.com \
    --cc=andriy.shevchenko@intel.com \
    --cc=antoniu.miclaus@analog.com \
    --cc=ashish.yadav@infineon.com \
    --cc=brgl@kernel.org \
    --cc=carl.lee@amd.com \
    --cc=cedricjustine.encarnacion@analog.com \
    --cc=chiang.brian@inventec.com \
    --cc=chou.cosmo@gmail.com \
    --cc=chris.packham@alliedtelesis.co.nz \
    --cc=clabbe.montjoie@gmail.com \
    --cc=daniel.nilsson@flex.com \
    --cc=dawei.liu.jy@renesas.com \
    --cc=dukedu83@gmail.com \
    --cc=etremblay@distech-controls.com \
    --cc=george.joseph@fairview5.com \
    --cc=grantpeltier93@gmail.com \
    --cc=guillaume.ligneul@gmail.com \
    --cc=hsu.yungteng@gmail.com \
    --cc=igor@reznichenko.net \
    --cc=javier.carrasco.cruz@gmail.com \
    --cc=jbrunet@baylibre.com \
    --cc=jdelvare@suse.com \
    --cc=jefflin994697@gmail.com \
    --cc=juergh@proton.me \
    --cc=kimseer.paller@analog.com \
    --cc=leo.yang.sy0@gmail.com \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=m.hulsman@tudelft.nl \
    --cc=mail@carsten-spiess.de \
    --cc=msp@baylibre.com \
    --cc=ninad@linux.ibm.com \
    --cc=noahwang.wang@outlook.com \
    --cc=nuno.sa@analog.com \
    --cc=psanman@juniper.net \
    --cc=r.marek@assembler.cz \
    --cc=rdunlap@infradead.org \
    --cc=riku.voipio@iki.fi \
    --cc=robert.marko@sartura.hr \
    --cc=sravanhome@gmail.com \
    --cc=steve.glendinning@shawell.net \
    --cc=t8927095@gmail.com \
    --cc=tomtsai764@gmail.com \
    --cc=u8813345@gmail.com \
    --cc=vasileios.amoiridis@cern.ch \
    --cc=wenswang@yeah.net \
    --cc=zev@bewilderbeest.net \
    /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