Commit c3813d6af177fab19e322f3114b1f64fbcf08d71
1 parent
310ec79210
Exists in
master
and in
7 other branches
i2c: Get rid of struct i2c_client_address_data
Struct i2c_client_address_data only contains one field at this point, which makes its usefulness questionable. Get rid of it and pass simple address lists around instead. Signed-off-by: Jean Delvare <khali@linux-fr.org> Tested-by: Wolfram Sang <w.sang@pengutronix.de>
Showing 50 changed files with 66 additions and 89 deletions Side-by-side Diff
- Documentation/i2c/writing-clients
- drivers/hwmon/adm1021.c
- drivers/hwmon/adm1025.c
- drivers/hwmon/adm1026.c
- drivers/hwmon/adm1029.c
- drivers/hwmon/adm1031.c
- drivers/hwmon/adm9240.c
- drivers/hwmon/ads7828.c
- drivers/hwmon/adt7462.c
- drivers/hwmon/adt7470.c
- drivers/hwmon/adt7473.c
- drivers/hwmon/adt7475.c
- drivers/hwmon/asb100.c
- drivers/hwmon/atxp1.c
- drivers/hwmon/dme1737.c
- drivers/hwmon/ds1621.c
- drivers/hwmon/f75375s.c
- drivers/hwmon/fschmd.c
- drivers/hwmon/gl518sm.c
- drivers/hwmon/gl520sm.c
- drivers/hwmon/lm63.c
- drivers/hwmon/lm73.c
- drivers/hwmon/lm75.c
- drivers/hwmon/lm77.c
- drivers/hwmon/lm78.c
- drivers/hwmon/lm80.c
- drivers/hwmon/lm83.c
- drivers/hwmon/lm85.c
- drivers/hwmon/lm87.c
- drivers/hwmon/lm90.c
- drivers/hwmon/lm92.c
- drivers/hwmon/lm93.c
- drivers/hwmon/lm95241.c
- drivers/hwmon/max1619.c
- drivers/hwmon/max6650.c
- drivers/hwmon/pcf8591.c
- drivers/hwmon/smsc47m192.c
- drivers/hwmon/thmc50.c
- drivers/hwmon/tmp401.c
- drivers/hwmon/tmp421.c
- drivers/hwmon/w83781d.c
- drivers/hwmon/w83791d.c
- drivers/hwmon/w83792d.c
- drivers/hwmon/w83793.c
- drivers/hwmon/w83l785ts.c
- drivers/hwmon/w83l786ng.c
- drivers/i2c/i2c-core.c
- drivers/misc/eeprom/eeprom.c
- drivers/misc/ics932s401.c
- include/linux/i2c.h
Documentation/i2c/writing-clients
... | ... | @@ -44,7 +44,7 @@ |
44 | 44 | /* if device autodetection is needed: */ |
45 | 45 | .class = I2C_CLASS_SOMETHING, |
46 | 46 | .detect = foo_detect, |
47 | - .address_data = &addr_data, | |
47 | + .address_list = normal_i2c, | |
48 | 48 | |
49 | 49 | .shutdown = foo_shutdown, /* optional */ |
50 | 50 | .suspend = foo_suspend, /* optional */ |
drivers/hwmon/adm1021.c
drivers/hwmon/adm1025.c
drivers/hwmon/adm1026.c
drivers/hwmon/adm1029.c
drivers/hwmon/adm1031.c
drivers/hwmon/adm9240.c
drivers/hwmon/ads7828.c
drivers/hwmon/adt7462.c
drivers/hwmon/adt7470.c
drivers/hwmon/adt7473.c
drivers/hwmon/adt7475.c
... | ... | @@ -1412,7 +1412,7 @@ |
1412 | 1412 | .remove = adt7475_remove, |
1413 | 1413 | .id_table = adt7475_id, |
1414 | 1414 | .detect = adt7475_detect, |
1415 | - .address_data = &addr_data, | |
1415 | + .address_list = normal_i2c, | |
1416 | 1416 | }; |
1417 | 1417 | |
1418 | 1418 | static void adt7475_read_hystersis(struct i2c_client *client) |
drivers/hwmon/asb100.c
drivers/hwmon/atxp1.c
drivers/hwmon/dme1737.c
... | ... | @@ -2318,7 +2318,7 @@ |
2318 | 2318 | .remove = dme1737_i2c_remove, |
2319 | 2319 | .id_table = dme1737_id, |
2320 | 2320 | .detect = dme1737_i2c_detect, |
2321 | - .address_data = &addr_data, | |
2321 | + .address_list = normal_i2c, | |
2322 | 2322 | }; |
2323 | 2323 | |
2324 | 2324 | /* --------------------------------------------------------------------- |
drivers/hwmon/ds1621.c
drivers/hwmon/f75375s.c
drivers/hwmon/fschmd.c
drivers/hwmon/gl518sm.c
drivers/hwmon/gl520sm.c
drivers/hwmon/lm63.c
drivers/hwmon/lm73.c
drivers/hwmon/lm75.c
drivers/hwmon/lm77.c
drivers/hwmon/lm78.c
drivers/hwmon/lm80.c
drivers/hwmon/lm83.c
drivers/hwmon/lm85.c
drivers/hwmon/lm87.c
drivers/hwmon/lm90.c
drivers/hwmon/lm92.c
drivers/hwmon/lm93.c
drivers/hwmon/lm95241.c
drivers/hwmon/max1619.c
drivers/hwmon/max6650.c
drivers/hwmon/pcf8591.c
drivers/hwmon/smsc47m192.c
drivers/hwmon/thmc50.c
drivers/hwmon/tmp401.c
drivers/hwmon/tmp421.c
drivers/hwmon/w83781d.c
drivers/hwmon/w83791d.c
drivers/hwmon/w83792d.c
drivers/hwmon/w83793.c
drivers/hwmon/w83l785ts.c
drivers/hwmon/w83l786ng.c
drivers/i2c/i2c-core.c
... | ... | @@ -1214,13 +1214,13 @@ |
1214 | 1214 | |
1215 | 1215 | static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver) |
1216 | 1216 | { |
1217 | - const struct i2c_client_address_data *address_data; | |
1217 | + const unsigned short *address_list; | |
1218 | 1218 | struct i2c_client *temp_client; |
1219 | 1219 | int i, err = 0; |
1220 | 1220 | int adap_id = i2c_adapter_id(adapter); |
1221 | 1221 | |
1222 | - address_data = driver->address_data; | |
1223 | - if (!driver->detect || !address_data) | |
1222 | + address_list = driver->address_list; | |
1223 | + if (!driver->detect || !address_list) | |
1224 | 1224 | return 0; |
1225 | 1225 | |
1226 | 1226 | /* Set up a temporary client to help detect callback */ |
... | ... | @@ -1235,7 +1235,7 @@ |
1235 | 1235 | |
1236 | 1236 | /* Stop here if we can't use SMBUS_QUICK */ |
1237 | 1237 | if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_QUICK)) { |
1238 | - if (address_data->normal_i2c[0] == I2C_CLIENT_END) | |
1238 | + if (address_list[0] == I2C_CLIENT_END) | |
1239 | 1239 | goto exit_free; |
1240 | 1240 | |
1241 | 1241 | dev_warn(&adapter->dev, "SMBus Quick command not supported, " |
1242 | 1242 | |
... | ... | @@ -1244,11 +1244,10 @@ |
1244 | 1244 | goto exit_free; |
1245 | 1245 | } |
1246 | 1246 | |
1247 | - for (i = 0; address_data->normal_i2c[i] != I2C_CLIENT_END; i += 1) { | |
1247 | + for (i = 0; address_list[i] != I2C_CLIENT_END; i += 1) { | |
1248 | 1248 | dev_dbg(&adapter->dev, "found normal entry for adapter %d, " |
1249 | - "addr 0x%02x\n", adap_id, | |
1250 | - address_data->normal_i2c[i]); | |
1251 | - temp_client->addr = address_data->normal_i2c[i]; | |
1249 | + "addr 0x%02x\n", adap_id, address_list[i]); | |
1250 | + temp_client->addr = address_list[i]; | |
1252 | 1251 | err = i2c_detect_address(temp_client, driver); |
1253 | 1252 | if (err) |
1254 | 1253 | goto exit_free; |
drivers/misc/eeprom/eeprom.c
drivers/misc/ics932s401.c
... | ... | @@ -125,7 +125,7 @@ |
125 | 125 | .remove = ics932s401_remove, |
126 | 126 | .id_table = ics932s401_id, |
127 | 127 | .detect = ics932s401_detect, |
128 | - .address_data = &addr_data, | |
128 | + .address_list = normal_i2c, | |
129 | 129 | }; |
130 | 130 | |
131 | 131 | static struct ics932s401_data *ics932s401_update_device(struct device *dev) |
include/linux/i2c.h
... | ... | @@ -110,7 +110,7 @@ |
110 | 110 | * @driver: Device driver model driver |
111 | 111 | * @id_table: List of I2C devices supported by this driver |
112 | 112 | * @detect: Callback for device detection |
113 | - * @address_data: The I2C addresses to probe (for detect) | |
113 | + * @address_list: The I2C addresses to probe (for detect) | |
114 | 114 | * @clients: List of detected clients we created (for i2c-core use only) |
115 | 115 | * |
116 | 116 | * The driver.owner field should be set to the module owner of this driver. |
... | ... | @@ -162,7 +162,7 @@ |
162 | 162 | |
163 | 163 | /* Device detection callback for automatic device creation */ |
164 | 164 | int (*detect)(struct i2c_client *, struct i2c_board_info *); |
165 | - const struct i2c_client_address_data *address_data; | |
165 | + const unsigned short *address_list; | |
166 | 166 | struct list_head clients; |
167 | 167 | }; |
168 | 168 | #define to_i2c_driver(d) container_of(d, struct i2c_driver, driver) |
... | ... | @@ -391,14 +391,6 @@ |
391 | 391 | #define I2C_CLASS_DDC (1<<3) /* DDC bus on graphics adapters */ |
392 | 392 | #define I2C_CLASS_SPD (1<<7) /* SPD EEPROMs and similar */ |
393 | 393 | |
394 | -/* i2c_client_address_data is the struct for holding default client | |
395 | - * addresses for a driver and for the parameters supplied on the | |
396 | - * command line | |
397 | - */ | |
398 | -struct i2c_client_address_data { | |
399 | - const unsigned short *normal_i2c; | |
400 | -}; | |
401 | - | |
402 | 394 | /* Internal numbers to terminate lists */ |
403 | 395 | #define I2C_CLIENT_END 0xfffeU |
404 | 396 | |
405 | 397 | |
406 | 398 | |
407 | 399 | |
408 | 400 | |
409 | 401 | |
410 | 402 | |
411 | 403 | |
412 | 404 | |
413 | 405 | |
... | ... | @@ -610,49 +602,35 @@ |
610 | 602 | module_param_array(var, short, &var##_num, 0); \ |
611 | 603 | MODULE_PARM_DESC(var, desc) |
612 | 604 | |
613 | -#define I2C_CLIENT_INSMOD_COMMON \ | |
614 | -static const struct i2c_client_address_data addr_data = { \ | |
615 | - .normal_i2c = normal_i2c, \ | |
616 | -} | |
617 | - | |
618 | 605 | /* These are the ones you want to use in your own drivers. Pick the one |
619 | 606 | which matches the number of devices the driver differenciates between. */ |
620 | -#define I2C_CLIENT_INSMOD \ | |
621 | -I2C_CLIENT_INSMOD_COMMON | |
607 | +#define I2C_CLIENT_INSMOD | |
622 | 608 | |
623 | 609 | #define I2C_CLIENT_INSMOD_1(chip1) \ |
624 | -enum chips { any_chip, chip1 }; \ | |
625 | -I2C_CLIENT_INSMOD_COMMON | |
610 | +enum chips { any_chip, chip1 } | |
626 | 611 | |
627 | 612 | #define I2C_CLIENT_INSMOD_2(chip1, chip2) \ |
628 | -enum chips { any_chip, chip1, chip2 }; \ | |
629 | -I2C_CLIENT_INSMOD_COMMON | |
613 | +enum chips { any_chip, chip1, chip2 } | |
630 | 614 | |
631 | 615 | #define I2C_CLIENT_INSMOD_3(chip1, chip2, chip3) \ |
632 | -enum chips { any_chip, chip1, chip2, chip3 }; \ | |
633 | -I2C_CLIENT_INSMOD_COMMON | |
616 | +enum chips { any_chip, chip1, chip2, chip3 } | |
634 | 617 | |
635 | 618 | #define I2C_CLIENT_INSMOD_4(chip1, chip2, chip3, chip4) \ |
636 | -enum chips { any_chip, chip1, chip2, chip3, chip4 }; \ | |
637 | -I2C_CLIENT_INSMOD_COMMON | |
619 | +enum chips { any_chip, chip1, chip2, chip3, chip4 } | |
638 | 620 | |
639 | 621 | #define I2C_CLIENT_INSMOD_5(chip1, chip2, chip3, chip4, chip5) \ |
640 | -enum chips { any_chip, chip1, chip2, chip3, chip4, chip5 }; \ | |
641 | -I2C_CLIENT_INSMOD_COMMON | |
622 | +enum chips { any_chip, chip1, chip2, chip3, chip4, chip5 } | |
642 | 623 | |
643 | 624 | #define I2C_CLIENT_INSMOD_6(chip1, chip2, chip3, chip4, chip5, chip6) \ |
644 | -enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6 }; \ | |
645 | -I2C_CLIENT_INSMOD_COMMON | |
625 | +enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6 } | |
646 | 626 | |
647 | 627 | #define I2C_CLIENT_INSMOD_7(chip1, chip2, chip3, chip4, chip5, chip6, chip7) \ |
648 | 628 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, \ |
649 | - chip7 }; \ | |
650 | -I2C_CLIENT_INSMOD_COMMON | |
629 | + chip7 } | |
651 | 630 | |
652 | 631 | #define I2C_CLIENT_INSMOD_8(chip1, chip2, chip3, chip4, chip5, chip6, chip7, chip8) \ |
653 | 632 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, \ |
654 | - chip7, chip8 }; \ | |
655 | -I2C_CLIENT_INSMOD_COMMON | |
633 | + chip7, chip8 } | |
656 | 634 | #endif /* __KERNEL__ */ |
657 | 635 | #endif /* _LINUX_I2C_H */ |