gpio: Initialize i2c_device_id arrays using member names
authorUwe Kleine-König (The Capable Hub) <u.kleine-koenig@baylibre.com>
Tue, 12 May 2026 15:21:25 +0000 (17:21 +0200)
committerBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Mon, 18 May 2026 07:47:18 +0000 (09:47 +0200)
While being less compact, using named initializers allows to more easily
see which members of the structs are assigned which value without having
to lookup the declaration of the struct. And it's also more robust
against changes to the struct definition.

The mentioned robustness is relevant for a planned change to struct
i2c_device_id that replaces .driver_data by an anonymous union.

This patch doesn't modify the compiled arrays, only their representation
in source form benefits. The former was confirmed with x86 and arm64
builds.

Signed-off-by: Uwe Kleine-König (The Capable Hub) <u.kleine-koenig@baylibre.com>
Link: https://patch.msgid.link/20260512152125.924433-2-u.kleine-koenig@baylibre.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
drivers/gpio/gpio-max732x.c
drivers/gpio/gpio-pca953x.c
drivers/gpio/gpio-pca9570.c
drivers/gpio/gpio-pcf857x.c

index 281ba17..24c67c9 100644 (file)
@@ -103,16 +103,16 @@ static uint64_t max732x_features[] = {
 };
 
 static const struct i2c_device_id max732x_id[] = {
-       { "max7319", MAX7319 },
-       { "max7320", MAX7320 },
-       { "max7321", MAX7321 },
-       { "max7322", MAX7322 },
-       { "max7323", MAX7323 },
-       { "max7324", MAX7324 },
-       { "max7325", MAX7325 },
-       { "max7326", MAX7326 },
-       { "max7327", MAX7327 },
-       { },
+       { .name = "max7319", .driver_data = MAX7319 },
+       { .name = "max7320", .driver_data = MAX7320 },
+       { .name = "max7321", .driver_data = MAX7321 },
+       { .name = "max7322", .driver_data = MAX7322 },
+       { .name = "max7323", .driver_data = MAX7323 },
+       { .name = "max7324", .driver_data = MAX7324 },
+       { .name = "max7325", .driver_data = MAX7325 },
+       { .name = "max7326", .driver_data = MAX7326 },
+       { .name = "max7327", .driver_data = MAX7327 },
+       { }
 };
 MODULE_DEVICE_TABLE(i2c, max732x_id);
 
index 1fef733..92fe40e 100644 (file)
 #define PCA_CHIP_TYPE(x)       ((x) & PCA_TYPE_MASK)
 
 static const struct i2c_device_id pca953x_id[] = {
-       { "pca6408", 8  | PCA953X_TYPE | PCA_INT, },
-       { "pca6416", 16 | PCA953X_TYPE | PCA_INT, },
-       { "pca9505", 40 | PCA953X_TYPE | PCA_INT, },
-       { "pca9506", 40 | PCA953X_TYPE | PCA_INT, },
-       { "pca9534", 8  | PCA953X_TYPE | PCA_INT, },
-       { "pca9535", 16 | PCA953X_TYPE | PCA_INT, },
-       { "pca9536", 4  | PCA953X_TYPE, },
-       { "pca9537", 4  | PCA953X_TYPE | PCA_INT, },
-       { "pca9538", 8  | PCA953X_TYPE | PCA_INT, },
-       { "pca9539", 16 | PCA953X_TYPE | PCA_INT, },
-       { "pca9554", 8  | PCA953X_TYPE | PCA_INT, },
-       { "pca9555", 16 | PCA953X_TYPE | PCA_INT, },
-       { "pca9556", 8  | PCA953X_TYPE, },
-       { "pca9557", 8  | PCA953X_TYPE, },
-       { "pca9574", 8  | PCA957X_TYPE | PCA_INT, },
-       { "pca9575", 16 | PCA957X_TYPE | PCA_INT, },
-       { "pca9698", 40 | PCA953X_TYPE, },
-
-       { "pcal6408", 8 | PCA953X_TYPE | PCA_LATCH_INT, },
-       { "pcal6416", 16 | PCA953X_TYPE | PCA_LATCH_INT, },
-       { "pcal6524", 24 | PCA953X_TYPE | PCA_LATCH_INT, },
-       { "pcal6534", 34 | PCAL653X_TYPE | PCA_LATCH_INT, },
-       { "pcal9535", 16 | PCA953X_TYPE | PCA_LATCH_INT, },
-       { "pcal9554b", 8  | PCA953X_TYPE | PCA_LATCH_INT, },
-       { "pcal9555a", 16 | PCA953X_TYPE | PCA_LATCH_INT, },
-
-       { "max7310", 8  | PCA953X_TYPE, },
-       { "max7312", 16 | PCA953X_TYPE | PCA_INT, },
-       { "max7313", 16 | PCA953X_TYPE | PCA_INT, },
-       { "max7315", 8  | PCA953X_TYPE | PCA_INT, },
-       { "max7318", 16 | PCA953X_TYPE | PCA_INT, },
-       { "pca6107", 8  | PCA953X_TYPE | PCA_INT, },
-       { "tca6408", 8  | PCA953X_TYPE | PCA_INT, },
-       { "tca6416", 16 | PCA953X_TYPE | PCA_INT, },
-       { "tca6418", 18 | TCA6418_TYPE | PCA_INT, },
-       { "tca6424", 24 | PCA953X_TYPE | PCA_INT, },
-       { "tca9538", 8  | PCA953X_TYPE | PCA_INT, },
-       { "tca9539", 16 | PCA953X_TYPE | PCA_INT, },
-       { "tca9554", 8  | PCA953X_TYPE | PCA_INT, },
-       { "xra1202", 8  | PCA953X_TYPE },
-
-       { "tcal6408", 8  | PCA953X_TYPE | PCA_LATCH_INT, },
-       { "tcal6416", 16 | PCA953X_TYPE | PCA_LATCH_INT, },
+       { .name = "pca6408", .driver_data = 8  | PCA953X_TYPE | PCA_INT },
+       { .name = "pca6416", .driver_data = 16 | PCA953X_TYPE | PCA_INT },
+       { .name = "pca9505", .driver_data = 40 | PCA953X_TYPE | PCA_INT },
+       { .name = "pca9506", .driver_data = 40 | PCA953X_TYPE | PCA_INT },
+       { .name = "pca9534", .driver_data = 8  | PCA953X_TYPE | PCA_INT },
+       { .name = "pca9535", .driver_data = 16 | PCA953X_TYPE | PCA_INT },
+       { .name = "pca9536", .driver_data = 4  | PCA953X_TYPE },
+       { .name = "pca9537", .driver_data = 4  | PCA953X_TYPE | PCA_INT },
+       { .name = "pca9538", .driver_data = 8  | PCA953X_TYPE | PCA_INT },
+       { .name = "pca9539", .driver_data = 16 | PCA953X_TYPE | PCA_INT },
+       { .name = "pca9554", .driver_data = 8  | PCA953X_TYPE | PCA_INT },
+       { .name = "pca9555", .driver_data = 16 | PCA953X_TYPE | PCA_INT },
+       { .name = "pca9556", .driver_data = 8  | PCA953X_TYPE },
+       { .name = "pca9557", .driver_data = 8  | PCA953X_TYPE },
+       { .name = "pca9574", .driver_data = 8  | PCA957X_TYPE | PCA_INT },
+       { .name = "pca9575", .driver_data = 16 | PCA957X_TYPE | PCA_INT },
+       { .name = "pca9698", .driver_data = 40 | PCA953X_TYPE },
+
+       { .name = "pcal6408",  .driver_data = 8  | PCA953X_TYPE | PCA_LATCH_INT },
+       { .name = "pcal6416",  .driver_data = 16 | PCA953X_TYPE | PCA_LATCH_INT },
+       { .name = "pcal6524",  .driver_data = 24 | PCA953X_TYPE | PCA_LATCH_INT },
+       { .name = "pcal6534",  .driver_data = 34 | PCAL653X_TYPE | PCA_LATCH_INT },
+       { .name = "pcal9535",  .driver_data = 16 | PCA953X_TYPE | PCA_LATCH_INT },
+       { .name = "pcal9554b", .driver_data = 8  | PCA953X_TYPE | PCA_LATCH_INT },
+       { .name = "pcal9555a", .driver_data = 16 | PCA953X_TYPE | PCA_LATCH_INT },
+
+       { .name = "max7310", .driver_data = 8  | PCA953X_TYPE },
+       { .name = "max7312", .driver_data = 16 | PCA953X_TYPE | PCA_INT },
+       { .name = "max7313", .driver_data = 16 | PCA953X_TYPE | PCA_INT },
+       { .name = "max7315", .driver_data = 8  | PCA953X_TYPE | PCA_INT },
+       { .name = "max7318", .driver_data = 16 | PCA953X_TYPE | PCA_INT },
+       { .name = "pca6107", .driver_data = 8  | PCA953X_TYPE | PCA_INT },
+       { .name = "tca6408", .driver_data = 8  | PCA953X_TYPE | PCA_INT },
+       { .name = "tca6416", .driver_data = 16 | PCA953X_TYPE | PCA_INT },
+       { .name = "tca6418", .driver_data = 18 | TCA6418_TYPE | PCA_INT },
+       { .name = "tca6424", .driver_data = 24 | PCA953X_TYPE | PCA_INT },
+       { .name = "tca9538", .driver_data = 8  | PCA953X_TYPE | PCA_INT },
+       { .name = "tca9539", .driver_data = 16 | PCA953X_TYPE | PCA_INT },
+       { .name = "tca9554", .driver_data = 8  | PCA953X_TYPE | PCA_INT },
+       { .name = "xra1202", .driver_data = 8  | PCA953X_TYPE },
+
+       { .name = "tcal6408", .driver_data = 8  | PCA953X_TYPE | PCA_LATCH_INT },
+       { .name = "tcal6416", .driver_data = 16 | PCA953X_TYPE | PCA_LATCH_INT },
        { }
 };
 MODULE_DEVICE_TABLE(i2c, pca953x_id);
index 4a36880..7a47a9a 100644 (file)
@@ -163,9 +163,9 @@ static const struct pca9570_chip_data slg7xl45106_gpio = {
 };
 
 static const struct i2c_device_id pca9570_id_table[] = {
-       { "pca9570", (kernel_ulong_t)&pca9570_gpio},
-       { "pca9571", (kernel_ulong_t)&pca9571_gpio },
-       { "slg7xl45106", (kernel_ulong_t)&slg7xl45106_gpio },
+       { .name = "pca9570", .driver_data = (kernel_ulong_t)&pca9570_gpio },
+       { .name = "pca9571", .driver_data = (kernel_ulong_t)&pca9571_gpio },
+       { .name = "slg7xl45106", .driver_data = (kernel_ulong_t)&slg7xl45106_gpio },
        { /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(i2c, pca9570_id_table);
index 3b9de8c..c942b95 100644 (file)
 #include <linux/spinlock.h>
 
 static const struct i2c_device_id pcf857x_id[] = {
-       { "pcf8574", 8 },
-       { "pcf8574a", 8 },
-       { "pca8574", 8 },
-       { "pca9670", 8 },
-       { "pca9672", 8 },
-       { "pca9674", 8 },
-       { "pcf8575", 16 },
-       { "pca8575", 16 },
-       { "pca9671", 16 },
-       { "pca9673", 16 },
-       { "pca9675", 16 },
-       { "max7328", 8 },
-       { "max7329", 8 },
+       { .name = "pcf8574", .driver_data = 8 },
+       { .name = "pcf8574a", .driver_data = 8 },
+       { .name = "pca8574", .driver_data = 8 },
+       { .name = "pca9670", .driver_data = 8 },
+       { .name = "pca9672", .driver_data = 8 },
+       { .name = "pca9674", .driver_data = 8 },
+       { .name = "pcf8575", .driver_data = 16 },
+       { .name = "pca8575", .driver_data = 16 },
+       { .name = "pca9671", .driver_data = 16 },
+       { .name = "pca9673", .driver_data = 16 },
+       { .name = "pca9675", .driver_data = 16 },
+       { .name = "max7328", .driver_data = 8 },
+       { .name = "max7329", .driver_data = 8 },
        { }
 };
 MODULE_DEVICE_TABLE(i2c, pcf857x_id);