mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-22 06:41:39 +00:00
i2c: Drop probe, ignore and force module parameters
The legacy probe and force module parameters are obsolete now, the same can be achieved using the new_device sysfs interface, which is both more flexible and cheaper (it is implemented by i2c-core rather than replicated in every driver module.) The legacy ignore module parameters can be dropped as well. Ignoring can be done by instantiating a "dummy" device at the problematic address. This is the first step of a huge cleanup to i2c-core's i2c_detect function, i2c.h's I2C_CLIENT_INSMOD* macros, and all drivers that made use of them. Signed-off-by: Jean Delvare <khali@linux-fr.org>
This commit is contained in:
parent
abe38388e5
commit
c7b25a9e96
3 changed files with 46 additions and 154 deletions
|
@ -110,7 +110,7 @@ extern s32 i2c_smbus_write_i2c_block_data(struct i2c_client *client,
|
|||
* @driver: Device driver model driver
|
||||
* @id_table: List of I2C devices supported by this driver
|
||||
* @detect: Callback for device detection
|
||||
* @address_data: The I2C addresses to probe, ignore or force (for detect)
|
||||
* @address_data: The I2C addresses to probe (for detect)
|
||||
* @clients: List of detected clients we created (for i2c-core use only)
|
||||
*
|
||||
* The driver.owner field should be set to the module owner of this driver.
|
||||
|
@ -397,9 +397,6 @@ static inline void i2c_unlock_adapter(struct i2c_adapter *adapter)
|
|||
*/
|
||||
struct i2c_client_address_data {
|
||||
const unsigned short *normal_i2c;
|
||||
const unsigned short *probe;
|
||||
const unsigned short *ignore;
|
||||
const unsigned short * const *forces;
|
||||
};
|
||||
|
||||
/* Internal numbers to terminate lists */
|
||||
|
@ -613,134 +610,48 @@ union i2c_smbus_data {
|
|||
module_param_array(var, short, &var##_num, 0); \
|
||||
MODULE_PARM_DESC(var, desc)
|
||||
|
||||
#define I2C_CLIENT_MODULE_PARM_FORCE(name) \
|
||||
I2C_CLIENT_MODULE_PARM(force_##name, \
|
||||
"List of adapter,address pairs which are " \
|
||||
"unquestionably assumed to contain a `" \
|
||||
# name "' chip")
|
||||
|
||||
|
||||
#define I2C_CLIENT_INSMOD_COMMON \
|
||||
I2C_CLIENT_MODULE_PARM(probe, "List of adapter,address pairs to scan " \
|
||||
"additionally"); \
|
||||
I2C_CLIENT_MODULE_PARM(ignore, "List of adapter,address pairs not to " \
|
||||
"scan"); \
|
||||
static const struct i2c_client_address_data addr_data = { \
|
||||
.normal_i2c = normal_i2c, \
|
||||
.probe = probe, \
|
||||
.ignore = ignore, \
|
||||
.forces = forces, \
|
||||
}
|
||||
|
||||
#define I2C_CLIENT_FORCE_TEXT \
|
||||
"List of adapter,address pairs to boldly assume to be present"
|
||||
|
||||
/* These are the ones you want to use in your own drivers. Pick the one
|
||||
which matches the number of devices the driver differenciates between. */
|
||||
#define I2C_CLIENT_INSMOD \
|
||||
I2C_CLIENT_MODULE_PARM(force, I2C_CLIENT_FORCE_TEXT); \
|
||||
static const unsigned short * const forces[] = { force, NULL }; \
|
||||
I2C_CLIENT_INSMOD_COMMON
|
||||
|
||||
#define I2C_CLIENT_INSMOD_1(chip1) \
|
||||
enum chips { any_chip, chip1 }; \
|
||||
I2C_CLIENT_MODULE_PARM(force, I2C_CLIENT_FORCE_TEXT); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip1); \
|
||||
static const unsigned short * const forces[] = { force, \
|
||||
force_##chip1, NULL }; \
|
||||
I2C_CLIENT_INSMOD_COMMON
|
||||
|
||||
#define I2C_CLIENT_INSMOD_2(chip1, chip2) \
|
||||
enum chips { any_chip, chip1, chip2 }; \
|
||||
I2C_CLIENT_MODULE_PARM(force, I2C_CLIENT_FORCE_TEXT); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip1); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip2); \
|
||||
static const unsigned short * const forces[] = { force, \
|
||||
force_##chip1, force_##chip2, NULL }; \
|
||||
I2C_CLIENT_INSMOD_COMMON
|
||||
|
||||
#define I2C_CLIENT_INSMOD_3(chip1, chip2, chip3) \
|
||||
enum chips { any_chip, chip1, chip2, chip3 }; \
|
||||
I2C_CLIENT_MODULE_PARM(force, I2C_CLIENT_FORCE_TEXT); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip1); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip2); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip3); \
|
||||
static const unsigned short * const forces[] = { force, \
|
||||
force_##chip1, force_##chip2, force_##chip3, NULL }; \
|
||||
I2C_CLIENT_INSMOD_COMMON
|
||||
|
||||
#define I2C_CLIENT_INSMOD_4(chip1, chip2, chip3, chip4) \
|
||||
enum chips { any_chip, chip1, chip2, chip3, chip4 }; \
|
||||
I2C_CLIENT_MODULE_PARM(force, I2C_CLIENT_FORCE_TEXT); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip1); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip2); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip3); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip4); \
|
||||
static const unsigned short * const forces[] = { force, \
|
||||
force_##chip1, force_##chip2, force_##chip3, \
|
||||
force_##chip4, NULL}; \
|
||||
I2C_CLIENT_INSMOD_COMMON
|
||||
|
||||
#define I2C_CLIENT_INSMOD_5(chip1, chip2, chip3, chip4, chip5) \
|
||||
enum chips { any_chip, chip1, chip2, chip3, chip4, chip5 }; \
|
||||
I2C_CLIENT_MODULE_PARM(force, I2C_CLIENT_FORCE_TEXT); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip1); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip2); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip3); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip4); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip5); \
|
||||
static const unsigned short * const forces[] = { force, \
|
||||
force_##chip1, force_##chip2, force_##chip3, \
|
||||
force_##chip4, force_##chip5, NULL }; \
|
||||
I2C_CLIENT_INSMOD_COMMON
|
||||
|
||||
#define I2C_CLIENT_INSMOD_6(chip1, chip2, chip3, chip4, chip5, chip6) \
|
||||
enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6 }; \
|
||||
I2C_CLIENT_MODULE_PARM(force, I2C_CLIENT_FORCE_TEXT); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip1); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip2); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip3); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip4); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip5); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip6); \
|
||||
static const unsigned short * const forces[] = { force, \
|
||||
force_##chip1, force_##chip2, force_##chip3, \
|
||||
force_##chip4, force_##chip5, force_##chip6, NULL }; \
|
||||
I2C_CLIENT_INSMOD_COMMON
|
||||
|
||||
#define I2C_CLIENT_INSMOD_7(chip1, chip2, chip3, chip4, chip5, chip6, chip7) \
|
||||
enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, \
|
||||
chip7 }; \
|
||||
I2C_CLIENT_MODULE_PARM(force, I2C_CLIENT_FORCE_TEXT); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip1); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip2); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip3); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip4); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip5); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip6); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip7); \
|
||||
static const unsigned short * const forces[] = { force, \
|
||||
force_##chip1, force_##chip2, force_##chip3, \
|
||||
force_##chip4, force_##chip5, force_##chip6, \
|
||||
force_##chip7, NULL }; \
|
||||
I2C_CLIENT_INSMOD_COMMON
|
||||
|
||||
#define I2C_CLIENT_INSMOD_8(chip1, chip2, chip3, chip4, chip5, chip6, chip7, chip8) \
|
||||
enum chips { any_chip, chip1, chip2, chip3, chip4, chip5, chip6, \
|
||||
chip7, chip8 }; \
|
||||
I2C_CLIENT_MODULE_PARM(force, I2C_CLIENT_FORCE_TEXT); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip1); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip2); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip3); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip4); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip5); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip6); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip7); \
|
||||
I2C_CLIENT_MODULE_PARM_FORCE(chip8); \
|
||||
static const unsigned short * const forces[] = { force, \
|
||||
force_##chip1, force_##chip2, force_##chip3, \
|
||||
force_##chip4, force_##chip5, force_##chip6, \
|
||||
force_##chip7, force_##chip8, NULL }; \
|
||||
I2C_CLIENT_INSMOD_COMMON
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _LINUX_I2C_H */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue