diff options
Diffstat (limited to 'include/linux/i2c.h')
-rw-r--r-- | include/linux/i2c.h | 44 |
1 files changed, 11 insertions, 33 deletions
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index f6f2c080ba67..fb9df1416ad5 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h | |||
@@ -110,7 +110,7 @@ extern s32 i2c_smbus_write_i2c_block_data(struct i2c_client *client, | |||
110 | * @driver: Device driver model driver | 110 | * @driver: Device driver model driver |
111 | * @id_table: List of I2C devices supported by this driver | 111 | * @id_table: List of I2C devices supported by this driver |
112 | * @detect: Callback for device detection | 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 | * @clients: List of detected clients we created (for i2c-core use only) | 114 | * @clients: List of detected clients we created (for i2c-core use only) |
115 | * | 115 | * |
116 | * The driver.owner field should be set to the module owner of this driver. | 116 | * The driver.owner field should be set to the module owner of this driver. |
@@ -162,7 +162,7 @@ struct i2c_driver { | |||
162 | 162 | ||
163 | /* Device detection callback for automatic device creation */ | 163 | /* Device detection callback for automatic device creation */ |
164 | int (*detect)(struct i2c_client *, struct i2c_board_info *); | 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 | struct list_head clients; | 166 | struct list_head clients; |
167 | }; | 167 | }; |
168 | #define to_i2c_driver(d) container_of(d, struct i2c_driver, driver) | 168 | #define to_i2c_driver(d) container_of(d, struct i2c_driver, driver) |
@@ -391,14 +391,6 @@ static inline void i2c_unlock_adapter(struct i2c_adapter *adapter) | |||
391 | #define I2C_CLASS_DDC (1<<3) /* DDC bus on graphics adapters */ | 391 | #define I2C_CLASS_DDC (1<<3) /* DDC bus on graphics adapters */ |
392 | #define I2C_CLASS_SPD (1<<7) /* SPD EEPROMs and similar */ | 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 | /* Internal numbers to terminate lists */ | 394 | /* Internal numbers to terminate lists */ |
403 | #define I2C_CLIENT_END 0xfffeU | 395 | #define I2C_CLIENT_END 0xfffeU |
404 | 396 | ||
@@ -610,48 +602,34 @@ union i2c_smbus_data { | |||
610 | module_param_array(var, short, &var##_num, 0); \ | 602 | module_param_array(var, short, &var##_num, 0); \ |
611 | MODULE_PARM_DESC(var, desc) | 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 | /* These are the ones you want to use in your own drivers. Pick the one | 605 | /* These are the ones you want to use in your own drivers. Pick the one |
619 | which matches the number of devices the driver differenciates between. */ | 606 | which matches the number of devices the driver differenciates between. */ |
620 | #define I2C_CLIENT_INSMOD \ | 607 | #define I2C_CLIENT_INSMOD |
621 | I2C_CLIENT_INSMOD_COMMON | ||
622 | 608 | ||
623 | #define I2C_CLIENT_INSMOD_1(chip1) \ | 609 | #define I2C_CLIENT_INSMOD_1(chip1) \ |
624 | enum chips { any_chip, chip1 }; \ | 610 | enum chips { any_chip, chip1 } |
625 | I2C_CLIENT_INSMOD_COMMON | ||
626 | 611 | ||
627 | #define I2C_CLIENT_INSMOD_2(chip1, chip2) \ | 612 | #define I2C_CLIENT_INSMOD_2(chip1, chip2) \ |
628 | enum chips { any_chip, chip1, chip2 }; \ | 613 | enum chips { any_chip, chip1, chip2 } |
629 | I2C_CLIENT_INSMOD_COMMON | ||
630 | 614 | ||
631 | #define I2C_CLIENT_INSMOD_3(chip1, chip2, chip3) \ | 615 | #define I2C_CLIENT_INSMOD_3(chip1, chip2, chip3) \ |
632 | enum chips { any_chip, chip1, chip2, chip3 }; \ | 616 | enum chips { any_chip, chip1, chip2, chip3 } |
633 | I2C_CLIENT_INSMOD_COMMON | ||
634 | 617 | ||
635 | #define I2C_CLIENT_INSMOD_4(chip1, chip2, chip3, chip4) \ | 618 | #define I2C_CLIENT_INSMOD_4(chip1, chip2, chip3, chip4) \ |
636 | enum chips { any_chip, chip1, chip2, chip3, chip4 }; \ | 619 | enum chips { any_chip, chip1, chip2, chip3, chip4 } |
637 | I2C_CLIENT_INSMOD_COMMON | ||
638 | 620 | ||
639 | #define I2C_CLIENT_INSMOD_5(chip1, chip2, chip3, chip4, chip5) \ | 621 | #define I2C_CLIENT_INSMOD_5(chip1, chip2, chip3, chip4, chip5) \ |
640 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5 }; \ | 622 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5 } |
641 | I2C_CLIENT_INSMOD_COMMON | ||
642 | 623 | ||
643 | #define I2C_CLIENT_INSMOD_6(chip1, chip2, chip3, chip4, chip5, chip6) \ | 624 | #define I2C_CLIENT_INSMOD_6(chip1, chip2, chip3, chip4, chip5, chip6) \ |
644 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6 }; \ | 625 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6 } |
645 | I2C_CLIENT_INSMOD_COMMON | ||
646 | 626 | ||
647 | #define I2C_CLIENT_INSMOD_7(chip1, chip2, chip3, chip4, chip5, chip6, chip7) \ | 627 | #define I2C_CLIENT_INSMOD_7(chip1, chip2, chip3, chip4, chip5, chip6, chip7) \ |
648 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, \ | 628 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, \ |
649 | chip7 }; \ | 629 | chip7 } |
650 | I2C_CLIENT_INSMOD_COMMON | ||
651 | 630 | ||
652 | #define I2C_CLIENT_INSMOD_8(chip1, chip2, chip3, chip4, chip5, chip6, chip7, chip8) \ | 631 | #define I2C_CLIENT_INSMOD_8(chip1, chip2, chip3, chip4, chip5, chip6, chip7, chip8) \ |
653 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, \ | 632 | enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, \ |
654 | chip7, chip8 }; \ | 633 | chip7, chip8 } |
655 | I2C_CLIENT_INSMOD_COMMON | ||
656 | #endif /* __KERNEL__ */ | 634 | #endif /* __KERNEL__ */ |
657 | #endif /* _LINUX_I2C_H */ | 635 | #endif /* _LINUX_I2C_H */ |