Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging

* 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
  i2c-core: i2c bus should support PM entries in struct dev_pm_ops
  i2c: Get rid of I2C_CLIENT_MODULE_PARM
  i2c: Drop I2C_CLIENT_INSMOD_2 to 8
  i2c: Drop I2C_CLIENT_INSMOD_1
  i2c: Get rid of struct i2c_client_address_data
  i2c: Drop the kind parameter from detect callbacks
This commit is contained in:
Linus Torvalds 2009-12-14 14:11:56 -08:00
commit 5443040754
50 changed files with 232 additions and 411 deletions

View File

@ -44,7 +44,7 @@ static struct i2c_driver foo_driver = {
/* if device autodetection is needed: */ /* if device autodetection is needed: */
.class = I2C_CLASS_SOMETHING, .class = I2C_CLASS_SOMETHING,
.detect = foo_detect, .detect = foo_detect,
.address_data = &addr_data, .address_list = normal_i2c,
.shutdown = foo_shutdown, /* optional */ .shutdown = foo_shutdown, /* optional */
.suspend = foo_suspend, /* optional */ .suspend = foo_suspend, /* optional */

View File

@ -34,9 +34,8 @@
static const unsigned short normal_i2c[] = { static const unsigned short normal_i2c[] = {
0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e, I2C_CLIENT_END }; 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e, I2C_CLIENT_END };
/* Insmod parameters */ enum chips {
I2C_CLIENT_INSMOD_8(adm1021, adm1023, max1617, max1617a, thmc10, lm84, gl523sm, adm1021, adm1023, max1617, max1617a, thmc10, lm84, gl523sm, mc1066 };
mc1066);
/* adm1021 constants specified below */ /* adm1021 constants specified below */
@ -97,7 +96,7 @@ struct adm1021_data {
static int adm1021_probe(struct i2c_client *client, static int adm1021_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int adm1021_detect(struct i2c_client *client, int kind, static int adm1021_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static void adm1021_init_client(struct i2c_client *client); static void adm1021_init_client(struct i2c_client *client);
static int adm1021_remove(struct i2c_client *client); static int adm1021_remove(struct i2c_client *client);
@ -130,7 +129,7 @@ static struct i2c_driver adm1021_driver = {
.remove = adm1021_remove, .remove = adm1021_remove,
.id_table = adm1021_id, .id_table = adm1021_id,
.detect = adm1021_detect, .detect = adm1021_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static ssize_t show_temp(struct device *dev, static ssize_t show_temp(struct device *dev,
@ -284,7 +283,7 @@ static const struct attribute_group adm1021_group = {
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int adm1021_detect(struct i2c_client *client, int kind, static int adm1021_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -64,11 +64,7 @@
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END };
/* enum chips { adm1025, ne1619 };
* Insmod parameters
*/
I2C_CLIENT_INSMOD_2(adm1025, ne1619);
/* /*
* The ADM1025 registers * The ADM1025 registers
@ -111,7 +107,7 @@ static const int in_scale[6] = { 2500, 2250, 3300, 5000, 12000, 3300 };
static int adm1025_probe(struct i2c_client *client, static int adm1025_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int adm1025_detect(struct i2c_client *client, int kind, static int adm1025_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static void adm1025_init_client(struct i2c_client *client); static void adm1025_init_client(struct i2c_client *client);
static int adm1025_remove(struct i2c_client *client); static int adm1025_remove(struct i2c_client *client);
@ -137,7 +133,7 @@ static struct i2c_driver adm1025_driver = {
.remove = adm1025_remove, .remove = adm1025_remove,
.id_table = adm1025_id, .id_table = adm1025_id,
.detect = adm1025_detect, .detect = adm1025_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -409,7 +405,7 @@ static const struct attribute_group adm1025_group_in4 = {
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int adm1025_detect(struct i2c_client *client, int kind, static int adm1025_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -37,9 +37,6 @@
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(adm1026);
static int gpio_input[17] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, static int gpio_input[17] = { -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1 }; -1, -1, -1, -1, -1, -1, -1, -1 };
static int gpio_output[17] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, static int gpio_output[17] = { -1, -1, -1, -1, -1, -1, -1, -1, -1,
@ -293,7 +290,7 @@ struct adm1026_data {
static int adm1026_probe(struct i2c_client *client, static int adm1026_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int adm1026_detect(struct i2c_client *client, int kind, static int adm1026_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int adm1026_remove(struct i2c_client *client); static int adm1026_remove(struct i2c_client *client);
static int adm1026_read_value(struct i2c_client *client, u8 reg); static int adm1026_read_value(struct i2c_client *client, u8 reg);
@ -305,7 +302,7 @@ static void adm1026_init_client(struct i2c_client *client);
static const struct i2c_device_id adm1026_id[] = { static const struct i2c_device_id adm1026_id[] = {
{ "adm1026", adm1026 }, { "adm1026", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, adm1026_id); MODULE_DEVICE_TABLE(i2c, adm1026_id);
@ -319,7 +316,7 @@ static struct i2c_driver adm1026_driver = {
.remove = adm1026_remove, .remove = adm1026_remove,
.id_table = adm1026_id, .id_table = adm1026_id,
.detect = adm1026_detect, .detect = adm1026_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static int adm1026_read_value(struct i2c_client *client, u8 reg) static int adm1026_read_value(struct i2c_client *client, u8 reg)
@ -1650,7 +1647,7 @@ static const struct attribute_group adm1026_group_in8_9 = {
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int adm1026_detect(struct i2c_client *client, int kind, static int adm1026_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -43,12 +43,6 @@ static const unsigned short normal_i2c[] = { 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,
0x2e, 0x2f, I2C_CLIENT_END 0x2e, 0x2f, I2C_CLIENT_END
}; };
/*
* Insmod parameters
*/
I2C_CLIENT_INSMOD_1(adm1029);
/* /*
* The ADM1029 registers * The ADM1029 registers
* Manufacturer ID is 0x41 for Analog Devices * Manufacturer ID is 0x41 for Analog Devices
@ -117,7 +111,7 @@ static const u8 ADM1029_REG_FAN_DIV[] = {
static int adm1029_probe(struct i2c_client *client, static int adm1029_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int adm1029_detect(struct i2c_client *client, int kind, static int adm1029_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int adm1029_remove(struct i2c_client *client); static int adm1029_remove(struct i2c_client *client);
static struct adm1029_data *adm1029_update_device(struct device *dev); static struct adm1029_data *adm1029_update_device(struct device *dev);
@ -128,7 +122,7 @@ static int adm1029_init_client(struct i2c_client *client);
*/ */
static const struct i2c_device_id adm1029_id[] = { static const struct i2c_device_id adm1029_id[] = {
{ "adm1029", adm1029 }, { "adm1029", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, adm1029_id); MODULE_DEVICE_TABLE(i2c, adm1029_id);
@ -142,7 +136,7 @@ static struct i2c_driver adm1029_driver = {
.remove = adm1029_remove, .remove = adm1029_remove,
.id_table = adm1029_id, .id_table = adm1029_id,
.detect = adm1029_detect, .detect = adm1029_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -297,7 +291,7 @@ static const struct attribute_group adm1029_group = {
*/ */
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int adm1029_detect(struct i2c_client *client, int kind, static int adm1029_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -64,8 +64,7 @@
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END };
/* Insmod parameters */ enum chips { adm1030, adm1031 };
I2C_CLIENT_INSMOD_2(adm1030, adm1031);
typedef u8 auto_chan_table_t[8][2]; typedef u8 auto_chan_table_t[8][2];
@ -102,7 +101,7 @@ struct adm1031_data {
static int adm1031_probe(struct i2c_client *client, static int adm1031_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int adm1031_detect(struct i2c_client *client, int kind, static int adm1031_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static void adm1031_init_client(struct i2c_client *client); static void adm1031_init_client(struct i2c_client *client);
static int adm1031_remove(struct i2c_client *client); static int adm1031_remove(struct i2c_client *client);
@ -125,7 +124,7 @@ static struct i2c_driver adm1031_driver = {
.remove = adm1031_remove, .remove = adm1031_remove,
.id_table = adm1031_id, .id_table = adm1031_id,
.detect = adm1031_detect, .detect = adm1031_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static inline u8 adm1031_read_value(struct i2c_client *client, u8 reg) static inline u8 adm1031_read_value(struct i2c_client *client, u8 reg)
@ -813,7 +812,7 @@ static const struct attribute_group adm1031_group_opt = {
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int adm1031_detect(struct i2c_client *client, int kind, static int adm1031_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -55,8 +55,7 @@
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, 0x2f, static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, 0x2f,
I2C_CLIENT_END }; I2C_CLIENT_END };
/* Insmod parameters */ enum chips { adm9240, ds1780, lm81 };
I2C_CLIENT_INSMOD_3(adm9240, ds1780, lm81);
/* ADM9240 registers */ /* ADM9240 registers */
#define ADM9240_REG_MAN_ID 0x3e #define ADM9240_REG_MAN_ID 0x3e
@ -132,7 +131,7 @@ static inline unsigned int AOUT_FROM_REG(u8 reg)
static int adm9240_probe(struct i2c_client *client, static int adm9240_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int adm9240_detect(struct i2c_client *client, int kind, static int adm9240_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static void adm9240_init_client(struct i2c_client *client); static void adm9240_init_client(struct i2c_client *client);
static int adm9240_remove(struct i2c_client *client); static int adm9240_remove(struct i2c_client *client);
@ -156,7 +155,7 @@ static struct i2c_driver adm9240_driver = {
.remove = adm9240_remove, .remove = adm9240_remove,
.id_table = adm9240_id, .id_table = adm9240_id,
.detect = adm9240_detect, .detect = adm9240_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* per client data */ /* per client data */
@ -545,7 +544,7 @@ static const struct attribute_group adm9240_group = {
/*** sensor chip detect and driver install ***/ /*** sensor chip detect and driver install ***/
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int adm9240_detect(struct i2c_client *new_client, int kind, static int adm9240_detect(struct i2c_client *new_client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = new_client->adapter; struct i2c_adapter *adapter = new_client->adapter;

View File

@ -47,10 +47,7 @@
static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b, static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b,
I2C_CLIENT_END }; I2C_CLIENT_END };
/* Insmod parameters */ /* Module parameters */
I2C_CLIENT_INSMOD_1(ads7828);
/* Other module parameters */
static int se_input = 1; /* Default is SE, 0 == diff */ static int se_input = 1; /* Default is SE, 0 == diff */
static int int_vref = 1; /* Default is internal ref ON */ static int int_vref = 1; /* Default is internal ref ON */
static int vref_mv = ADS7828_INT_VREF_MV; /* set if vref != 2.5V */ static int vref_mv = ADS7828_INT_VREF_MV; /* set if vref != 2.5V */
@ -72,7 +69,7 @@ struct ads7828_data {
}; };
/* Function declaration - necessary due to function dependencies */ /* Function declaration - necessary due to function dependencies */
static int ads7828_detect(struct i2c_client *client, int kind, static int ads7828_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int ads7828_probe(struct i2c_client *client, static int ads7828_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
@ -168,7 +165,7 @@ static int ads7828_remove(struct i2c_client *client)
} }
static const struct i2c_device_id ads7828_id[] = { static const struct i2c_device_id ads7828_id[] = {
{ "ads7828", ads7828 }, { "ads7828", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, ads7828_id); MODULE_DEVICE_TABLE(i2c, ads7828_id);
@ -183,11 +180,11 @@ static struct i2c_driver ads7828_driver = {
.remove = ads7828_remove, .remove = ads7828_remove,
.id_table = ads7828_id, .id_table = ads7828_id,
.detect = ads7828_detect, .detect = ads7828_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int ads7828_detect(struct i2c_client *client, int kind, static int ads7828_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -32,9 +32,6 @@
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = { 0x58, 0x5C, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x58, 0x5C, I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(adt7462);
/* ADT7462 registers */ /* ADT7462 registers */
#define ADT7462_REG_DEVICE 0x3D #define ADT7462_REG_DEVICE 0x3D
#define ADT7462_REG_VENDOR 0x3E #define ADT7462_REG_VENDOR 0x3E
@ -237,12 +234,12 @@ struct adt7462_data {
static int adt7462_probe(struct i2c_client *client, static int adt7462_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int adt7462_detect(struct i2c_client *client, int kind, static int adt7462_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int adt7462_remove(struct i2c_client *client); static int adt7462_remove(struct i2c_client *client);
static const struct i2c_device_id adt7462_id[] = { static const struct i2c_device_id adt7462_id[] = {
{ "adt7462", adt7462 }, { "adt7462", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, adt7462_id); MODULE_DEVICE_TABLE(i2c, adt7462_id);
@ -256,7 +253,7 @@ static struct i2c_driver adt7462_driver = {
.remove = adt7462_remove, .remove = adt7462_remove,
.id_table = adt7462_id, .id_table = adt7462_id,
.detect = adt7462_detect, .detect = adt7462_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -1902,7 +1899,7 @@ static struct attribute *adt7462_attr[] =
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int adt7462_detect(struct i2c_client *client, int kind, static int adt7462_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -33,9 +33,6 @@
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = { 0x2C, 0x2E, 0x2F, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2C, 0x2E, 0x2F, I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(adt7470);
/* ADT7470 registers */ /* ADT7470 registers */
#define ADT7470_REG_BASE_ADDR 0x20 #define ADT7470_REG_BASE_ADDR 0x20
#define ADT7470_REG_TEMP_BASE_ADDR 0x20 #define ADT7470_REG_TEMP_BASE_ADDR 0x20
@ -177,12 +174,12 @@ struct adt7470_data {
static int adt7470_probe(struct i2c_client *client, static int adt7470_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int adt7470_detect(struct i2c_client *client, int kind, static int adt7470_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int adt7470_remove(struct i2c_client *client); static int adt7470_remove(struct i2c_client *client);
static const struct i2c_device_id adt7470_id[] = { static const struct i2c_device_id adt7470_id[] = {
{ "adt7470", adt7470 }, { "adt7470", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, adt7470_id); MODULE_DEVICE_TABLE(i2c, adt7470_id);
@ -196,7 +193,7 @@ static struct i2c_driver adt7470_driver = {
.remove = adt7470_remove, .remove = adt7470_remove,
.id_table = adt7470_id, .id_table = adt7470_id,
.detect = adt7470_detect, .detect = adt7470_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -1225,7 +1222,7 @@ static struct attribute *adt7470_attr[] =
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int adt7470_detect(struct i2c_client *client, int kind, static int adt7470_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -32,9 +32,6 @@
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = { 0x2C, 0x2D, 0x2E, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2C, 0x2D, 0x2E, I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(adt7473);
/* ADT7473 registers */ /* ADT7473 registers */
#define ADT7473_REG_BASE_ADDR 0x20 #define ADT7473_REG_BASE_ADDR 0x20
@ -166,12 +163,12 @@ struct adt7473_data {
static int adt7473_probe(struct i2c_client *client, static int adt7473_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int adt7473_detect(struct i2c_client *client, int kind, static int adt7473_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int adt7473_remove(struct i2c_client *client); static int adt7473_remove(struct i2c_client *client);
static const struct i2c_device_id adt7473_id[] = { static const struct i2c_device_id adt7473_id[] = {
{ "adt7473", adt7473 }, { "adt7473", 0 },
{ } { }
}; };
@ -184,7 +181,7 @@ static struct i2c_driver adt7473_driver = {
.remove = adt7473_remove, .remove = adt7473_remove,
.id_table = adt7473_id, .id_table = adt7473_id,
.detect = adt7473_detect, .detect = adt7473_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -1085,7 +1082,7 @@ static struct attribute *adt7473_attr[] =
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int adt7473_detect(struct i2c_client *client, int kind, static int adt7473_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -148,7 +148,7 @@
static unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END }; static unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END };
I2C_CLIENT_INSMOD_4(adt7473, adt7475, adt7476, adt7490); enum chips { adt7473, adt7475, adt7476, adt7490 };
static const struct i2c_device_id adt7475_id[] = { static const struct i2c_device_id adt7475_id[] = {
{ "adt7473", adt7473 }, { "adt7473", adt7473 },
@ -1172,7 +1172,7 @@ static struct attribute_group in4_attr_group = { .attrs = in4_attrs };
static struct attribute_group in5_attr_group = { .attrs = in5_attrs }; static struct attribute_group in5_attr_group = { .attrs = in5_attrs };
static struct attribute_group vid_attr_group = { .attrs = vid_attrs }; static struct attribute_group vid_attr_group = { .attrs = vid_attrs };
static int adt7475_detect(struct i2c_client *client, int kind, static int adt7475_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;
@ -1412,7 +1412,7 @@ static struct i2c_driver adt7475_driver = {
.remove = adt7475_remove, .remove = adt7475_remove,
.id_table = adt7475_id, .id_table = adt7475_id,
.detect = adt7475_detect, .detect = adt7475_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static void adt7475_read_hystersis(struct i2c_client *client) static void adt7475_read_hystersis(struct i2c_client *client)

View File

@ -51,9 +51,6 @@
/* I2C addresses to scan */ /* I2C addresses to scan */
static const unsigned short normal_i2c[] = { 0x2d, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2d, I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(asb100);
static unsigned short force_subclients[4]; static unsigned short force_subclients[4];
module_param_array(force_subclients, short, NULL, 0); module_param_array(force_subclients, short, NULL, 0);
MODULE_PARM_DESC(force_subclients, "List of subclient addresses: " MODULE_PARM_DESC(force_subclients, "List of subclient addresses: "
@ -209,14 +206,14 @@ static void asb100_write_value(struct i2c_client *client, u16 reg, u16 val);
static int asb100_probe(struct i2c_client *client, static int asb100_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int asb100_detect(struct i2c_client *client, int kind, static int asb100_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int asb100_remove(struct i2c_client *client); static int asb100_remove(struct i2c_client *client);
static struct asb100_data *asb100_update_device(struct device *dev); static struct asb100_data *asb100_update_device(struct device *dev);
static void asb100_init_client(struct i2c_client *client); static void asb100_init_client(struct i2c_client *client);
static const struct i2c_device_id asb100_id[] = { static const struct i2c_device_id asb100_id[] = {
{ "asb100", asb100 }, { "asb100", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, asb100_id); MODULE_DEVICE_TABLE(i2c, asb100_id);
@ -230,7 +227,7 @@ static struct i2c_driver asb100_driver = {
.remove = asb100_remove, .remove = asb100_remove,
.id_table = asb100_id, .id_table = asb100_id,
.detect = asb100_detect, .detect = asb100_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* 7 Voltages */ /* 7 Voltages */
@ -697,7 +694,7 @@ ERROR_SC_2:
} }
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int asb100_detect(struct i2c_client *client, int kind, static int asb100_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -44,17 +44,14 @@ MODULE_AUTHOR("Sebastian Witt <se.witt@gmx.net>");
static const unsigned short normal_i2c[] = { 0x37, 0x4e, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x37, 0x4e, I2C_CLIENT_END };
I2C_CLIENT_INSMOD_1(atxp1);
static int atxp1_probe(struct i2c_client *client, static int atxp1_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int atxp1_remove(struct i2c_client *client); static int atxp1_remove(struct i2c_client *client);
static struct atxp1_data * atxp1_update_device(struct device *dev); static struct atxp1_data * atxp1_update_device(struct device *dev);
static int atxp1_detect(struct i2c_client *client, int kind, static int atxp1_detect(struct i2c_client *client, struct i2c_board_info *info);
struct i2c_board_info *info);
static const struct i2c_device_id atxp1_id[] = { static const struct i2c_device_id atxp1_id[] = {
{ "atxp1", atxp1 }, { "atxp1", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, atxp1_id); MODULE_DEVICE_TABLE(i2c, atxp1_id);
@ -68,7 +65,7 @@ static struct i2c_driver atxp1_driver = {
.remove = atxp1_remove, .remove = atxp1_remove,
.id_table = atxp1_id, .id_table = atxp1_id,
.detect = atxp1_detect, .detect = atxp1_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
struct atxp1_data { struct atxp1_data {
@ -275,7 +272,7 @@ static const struct attribute_group atxp1_group = {
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int atxp1_detect(struct i2c_client *new_client, int kind, static int atxp1_detect(struct i2c_client *new_client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = new_client->adapter; struct i2c_adapter *adapter = new_client->adapter;

View File

@ -57,11 +57,7 @@ MODULE_PARM_DESC(probe_all_addr, "Include probing of non-standard LPC "
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = {0x2c, 0x2d, 0x2e, I2C_CLIENT_END}; static const unsigned short normal_i2c[] = {0x2c, 0x2d, 0x2e, I2C_CLIENT_END};
/* Insmod parameters */ enum chips { dme1737, sch5027, sch311x };
I2C_CLIENT_INSMOD_2(dme1737, sch5027);
/* ISA chip types */
enum isa_chips { sch311x = sch5027 + 1 };
/* --------------------------------------------------------------------- /* ---------------------------------------------------------------------
* Registers * Registers
@ -2208,7 +2204,7 @@ exit:
} }
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int dme1737_i2c_detect(struct i2c_client *client, int kind, static int dme1737_i2c_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;
@ -2318,7 +2314,7 @@ static struct i2c_driver dme1737_i2c_driver = {
.remove = dme1737_i2c_remove, .remove = dme1737_i2c_remove,
.id_table = dme1737_id, .id_table = dme1737_id,
.detect = dme1737_i2c_detect, .detect = dme1737_i2c_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* --------------------------------------------------------------------- /* ---------------------------------------------------------------------

View File

@ -38,7 +38,6 @@ static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b, 0x4c,
0x4d, 0x4e, 0x4f, I2C_CLIENT_END }; 0x4d, 0x4e, 0x4f, I2C_CLIENT_END };
/* Insmod parameters */ /* Insmod parameters */
I2C_CLIENT_INSMOD_1(ds1621);
static int polarity = -1; static int polarity = -1;
module_param(polarity, int, 0); module_param(polarity, int, 0);
MODULE_PARM_DESC(polarity, "Output's polarity: 0 = active high, 1 = active low"); MODULE_PARM_DESC(polarity, "Output's polarity: 0 = active high, 1 = active low");
@ -224,7 +223,7 @@ static const struct attribute_group ds1621_group = {
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int ds1621_detect(struct i2c_client *client, int kind, static int ds1621_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;
@ -305,8 +304,8 @@ static int ds1621_remove(struct i2c_client *client)
} }
static const struct i2c_device_id ds1621_id[] = { static const struct i2c_device_id ds1621_id[] = {
{ "ds1621", ds1621 }, { "ds1621", 0 },
{ "ds1625", ds1621 }, { "ds1625", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, ds1621_id); MODULE_DEVICE_TABLE(i2c, ds1621_id);
@ -321,7 +320,7 @@ static struct i2c_driver ds1621_driver = {
.remove = ds1621_remove, .remove = ds1621_remove,
.id_table = ds1621_id, .id_table = ds1621_id,
.detect = ds1621_detect, .detect = ds1621_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static int __init ds1621_init(void) static int __init ds1621_init(void)

View File

@ -39,8 +39,7 @@
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = { 0x2d, 0x2e, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2d, 0x2e, I2C_CLIENT_END };
/* Insmod parameters */ enum chips { f75373, f75375 };
I2C_CLIENT_INSMOD_2(f75373, f75375);
/* Fintek F75375 registers */ /* Fintek F75375 registers */
#define F75375_REG_CONFIG0 0x0 #define F75375_REG_CONFIG0 0x0
@ -113,7 +112,7 @@ struct f75375_data {
s8 temp_max_hyst[2]; s8 temp_max_hyst[2];
}; };
static int f75375_detect(struct i2c_client *client, int kind, static int f75375_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int f75375_probe(struct i2c_client *client, static int f75375_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
@ -135,7 +134,7 @@ static struct i2c_driver f75375_driver = {
.remove = f75375_remove, .remove = f75375_remove,
.id_table = f75375_id, .id_table = f75375_id,
.detect = f75375_detect, .detect = f75375_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static inline int f75375_read8(struct i2c_client *client, u8 reg) static inline int f75375_read8(struct i2c_client *client, u8 reg)
@ -677,7 +676,7 @@ static int f75375_remove(struct i2c_client *client)
} }
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int f75375_detect(struct i2c_client *client, int kind, static int f75375_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -56,7 +56,8 @@ static int nowayout = WATCHDOG_NOWAYOUT;
module_param(nowayout, int, 0); module_param(nowayout, int, 0);
MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default="
__MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
I2C_CLIENT_INSMOD_7(fscpos, fscher, fscscy, fschrc, fschmd, fschds, fscsyl);
enum chips { fscpos, fscher, fscscy, fschrc, fschmd, fschds, fscsyl };
/* /*
* The FSCHMD registers and other defines * The FSCHMD registers and other defines
@ -221,7 +222,7 @@ static const int FSCHMD_NO_TEMP_SENSORS[7] = { 3, 3, 4, 3, 5, 5, 11 };
static int fschmd_probe(struct i2c_client *client, static int fschmd_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int fschmd_detect(struct i2c_client *client, int kind, static int fschmd_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int fschmd_remove(struct i2c_client *client); static int fschmd_remove(struct i2c_client *client);
static struct fschmd_data *fschmd_update_device(struct device *dev); static struct fschmd_data *fschmd_update_device(struct device *dev);
@ -251,7 +252,7 @@ static struct i2c_driver fschmd_driver = {
.remove = fschmd_remove, .remove = fschmd_remove,
.id_table = fschmd_id, .id_table = fschmd_id,
.detect = fschmd_detect, .detect = fschmd_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -1000,7 +1001,7 @@ static void fschmd_dmi_decode(const struct dmi_header *header, void *dummy)
} }
} }
static int fschmd_detect(struct i2c_client *client, int _kind, static int fschmd_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
enum chips kind; enum chips kind;

View File

@ -46,8 +46,7 @@
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END };
/* Insmod parameters */ enum chips { gl518sm_r00, gl518sm_r80 };
I2C_CLIENT_INSMOD_2(gl518sm_r00, gl518sm_r80);
/* Many GL518 constants specified below */ /* Many GL518 constants specified below */
@ -139,8 +138,7 @@ struct gl518_data {
static int gl518_probe(struct i2c_client *client, static int gl518_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int gl518_detect(struct i2c_client *client, int kind, static int gl518_detect(struct i2c_client *client, struct i2c_board_info *info);
struct i2c_board_info *info);
static void gl518_init_client(struct i2c_client *client); static void gl518_init_client(struct i2c_client *client);
static int gl518_remove(struct i2c_client *client); static int gl518_remove(struct i2c_client *client);
static int gl518_read_value(struct i2c_client *client, u8 reg); static int gl518_read_value(struct i2c_client *client, u8 reg);
@ -163,7 +161,7 @@ static struct i2c_driver gl518_driver = {
.remove = gl518_remove, .remove = gl518_remove,
.id_table = gl518_id, .id_table = gl518_id,
.detect = gl518_detect, .detect = gl518_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -484,8 +482,7 @@ static const struct attribute_group gl518_group_r80 = {
*/ */
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int gl518_detect(struct i2c_client *client, int kind, static int gl518_detect(struct i2c_client *client, struct i2c_board_info *info)
struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;
int rev; int rev;

View File

@ -41,9 +41,6 @@ MODULE_PARM_DESC(extra_sensor_type, "Type of extra sensor (0=autodetect, 1=tempe
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(gl520sm);
/* Many GL520 constants specified below /* Many GL520 constants specified below
One of the inputs can be configured as either temp or voltage. One of the inputs can be configured as either temp or voltage.
That's why _TEMP2 and _IN4 access the same register That's why _TEMP2 and _IN4 access the same register
@ -81,8 +78,7 @@ static const u8 GL520_REG_TEMP_MAX_HYST[] = { 0x06, 0x18 };
static int gl520_probe(struct i2c_client *client, static int gl520_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int gl520_detect(struct i2c_client *client, int kind, static int gl520_detect(struct i2c_client *client, struct i2c_board_info *info);
struct i2c_board_info *info);
static void gl520_init_client(struct i2c_client *client); static void gl520_init_client(struct i2c_client *client);
static int gl520_remove(struct i2c_client *client); static int gl520_remove(struct i2c_client *client);
static int gl520_read_value(struct i2c_client *client, u8 reg); static int gl520_read_value(struct i2c_client *client, u8 reg);
@ -91,7 +87,7 @@ static struct gl520_data *gl520_update_device(struct device *dev);
/* Driver data */ /* Driver data */
static const struct i2c_device_id gl520_id[] = { static const struct i2c_device_id gl520_id[] = {
{ "gl520sm", gl520sm }, { "gl520sm", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, gl520_id); MODULE_DEVICE_TABLE(i2c, gl520_id);
@ -105,7 +101,7 @@ static struct i2c_driver gl520_driver = {
.remove = gl520_remove, .remove = gl520_remove,
.id_table = gl520_id, .id_table = gl520_id,
.detect = gl520_detect, .detect = gl520_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* Client data */ /* Client data */
@ -681,8 +677,7 @@ static const struct attribute_group gl520_group_opt = {
*/ */
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int gl520_detect(struct i2c_client *client, int kind, static int gl520_detect(struct i2c_client *client, struct i2c_board_info *info)
struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -55,12 +55,6 @@
static const unsigned short normal_i2c[] = { 0x4c, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x4c, I2C_CLIENT_END };
/*
* Insmod parameters
*/
I2C_CLIENT_INSMOD_1(lm63);
/* /*
* The LM63 registers * The LM63 registers
*/ */
@ -134,8 +128,7 @@ static int lm63_remove(struct i2c_client *client);
static struct lm63_data *lm63_update_device(struct device *dev); static struct lm63_data *lm63_update_device(struct device *dev);
static int lm63_detect(struct i2c_client *client, int kind, static int lm63_detect(struct i2c_client *client, struct i2c_board_info *info);
struct i2c_board_info *info);
static void lm63_init_client(struct i2c_client *client); static void lm63_init_client(struct i2c_client *client);
/* /*
@ -143,7 +136,7 @@ static void lm63_init_client(struct i2c_client *client);
*/ */
static const struct i2c_device_id lm63_id[] = { static const struct i2c_device_id lm63_id[] = {
{ "lm63", lm63 }, { "lm63", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, lm63_id); MODULE_DEVICE_TABLE(i2c, lm63_id);
@ -157,7 +150,7 @@ static struct i2c_driver lm63_driver = {
.remove = lm63_remove, .remove = lm63_remove,
.id_table = lm63_id, .id_table = lm63_id,
.detect = lm63_detect, .detect = lm63_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -423,7 +416,7 @@ static const struct attribute_group lm63_group_fan1 = {
*/ */
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int lm63_detect(struct i2c_client *new_client, int kind, static int lm63_detect(struct i2c_client *new_client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = new_client->adapter; struct i2c_adapter *adapter = new_client->adapter;

View File

@ -27,9 +27,6 @@
static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4c, static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4c,
0x4d, 0x4e, I2C_CLIENT_END }; 0x4d, 0x4e, I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(lm73);
/* LM73 registers */ /* LM73 registers */
#define LM73_REG_INPUT 0x00 #define LM73_REG_INPUT 0x00
#define LM73_REG_CONF 0x01 #define LM73_REG_CONF 0x01
@ -145,13 +142,13 @@ static int lm73_remove(struct i2c_client *client)
} }
static const struct i2c_device_id lm73_ids[] = { static const struct i2c_device_id lm73_ids[] = {
{ "lm73", lm73 }, { "lm73", 0 },
{ /* LIST END */ } { /* LIST END */ }
}; };
MODULE_DEVICE_TABLE(i2c, lm73_ids); MODULE_DEVICE_TABLE(i2c, lm73_ids);
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int lm73_detect(struct i2c_client *new_client, int kind, static int lm73_detect(struct i2c_client *new_client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = new_client->adapter; struct i2c_adapter *adapter = new_client->adapter;
@ -182,7 +179,7 @@ static struct i2c_driver lm73_driver = {
.remove = lm73_remove, .remove = lm73_remove,
.id_table = lm73_ids, .id_table = lm73_ids,
.detect = lm73_detect, .detect = lm73_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* module glue */ /* module glue */

View File

@ -32,15 +32,12 @@
/* /*
* This driver handles the LM75 and compatible digital temperature sensors. * This driver handles the LM75 and compatible digital temperature sensors.
* Only types which are _not_ listed in I2C_CLIENT_INSMOD_*() need to be
* listed here. We start at 9 since I2C_CLIENT_INSMOD_*() currently allow
* definition of up to 8 chip types (plus zero).
*/ */
enum lm75_type { /* keep sorted in alphabetical order */ enum lm75_type { /* keep sorted in alphabetical order */
ds1775 = 9, ds1775,
ds75, ds75,
/* lm75 -- in I2C_CLIENT_INSMOD_1() */ lm75,
lm75a, lm75a,
max6625, max6625,
max6626, max6626,
@ -58,9 +55,6 @@ enum lm75_type { /* keep sorted in alphabetical order */
static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b, 0x4c, static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b, 0x4c,
0x4d, 0x4e, 0x4f, I2C_CLIENT_END }; 0x4d, 0x4e, 0x4f, I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(lm75);
/* The LM75 registers */ /* The LM75 registers */
#define LM75_REG_CONF 0x01 #define LM75_REG_CONF 0x01
@ -234,7 +228,7 @@ static const struct i2c_device_id lm75_ids[] = {
MODULE_DEVICE_TABLE(i2c, lm75_ids); MODULE_DEVICE_TABLE(i2c, lm75_ids);
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int lm75_detect(struct i2c_client *new_client, int kind, static int lm75_detect(struct i2c_client *new_client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = new_client->adapter; struct i2c_adapter *adapter = new_client->adapter;
@ -295,7 +289,7 @@ static struct i2c_driver lm75_driver = {
.remove = lm75_remove, .remove = lm75_remove,
.id_table = lm75_ids, .id_table = lm75_ids,
.detect = lm75_detect, .detect = lm75_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/*-----------------------------------------------------------------------*/ /*-----------------------------------------------------------------------*/

View File

@ -39,9 +39,6 @@
static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b, static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b,
I2C_CLIENT_END }; I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(lm77);
/* The LM77 registers */ /* The LM77 registers */
#define LM77_REG_TEMP 0x00 #define LM77_REG_TEMP 0x00
#define LM77_REG_CONF 0x01 #define LM77_REG_CONF 0x01
@ -66,8 +63,7 @@ struct lm77_data {
static int lm77_probe(struct i2c_client *client, static int lm77_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int lm77_detect(struct i2c_client *client, int kind, static int lm77_detect(struct i2c_client *client, struct i2c_board_info *info);
struct i2c_board_info *info);
static void lm77_init_client(struct i2c_client *client); static void lm77_init_client(struct i2c_client *client);
static int lm77_remove(struct i2c_client *client); static int lm77_remove(struct i2c_client *client);
static u16 lm77_read_value(struct i2c_client *client, u8 reg); static u16 lm77_read_value(struct i2c_client *client, u8 reg);
@ -77,7 +73,7 @@ static struct lm77_data *lm77_update_device(struct device *dev);
static const struct i2c_device_id lm77_id[] = { static const struct i2c_device_id lm77_id[] = {
{ "lm77", lm77 }, { "lm77", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, lm77_id); MODULE_DEVICE_TABLE(i2c, lm77_id);
@ -92,7 +88,7 @@ static struct i2c_driver lm77_driver = {
.remove = lm77_remove, .remove = lm77_remove,
.id_table = lm77_id, .id_table = lm77_id,
.detect = lm77_detect, .detect = lm77_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* straight from the datasheet */ /* straight from the datasheet */
@ -245,7 +241,7 @@ static const struct attribute_group lm77_group = {
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int lm77_detect(struct i2c_client *new_client, int kind, static int lm77_detect(struct i2c_client *new_client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = new_client->adapter; struct i2c_adapter *adapter = new_client->adapter;

View File

@ -41,8 +41,7 @@ static const unsigned short normal_i2c[] = { 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,
0x2e, 0x2f, I2C_CLIENT_END }; 0x2e, 0x2f, I2C_CLIENT_END };
static unsigned short isa_address = 0x290; static unsigned short isa_address = 0x290;
/* Insmod parameters */ enum chips { lm78, lm79 };
I2C_CLIENT_INSMOD_2(lm78, lm79);
/* Many LM78 constants specified below */ /* Many LM78 constants specified below */
@ -142,7 +141,7 @@ struct lm78_data {
}; };
static int lm78_i2c_detect(struct i2c_client *client, int kind, static int lm78_i2c_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int lm78_i2c_probe(struct i2c_client *client, static int lm78_i2c_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
@ -173,7 +172,7 @@ static struct i2c_driver lm78_driver = {
.remove = lm78_i2c_remove, .remove = lm78_i2c_remove,
.id_table = lm78_i2c_id, .id_table = lm78_i2c_id,
.detect = lm78_i2c_detect, .detect = lm78_i2c_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static struct platform_driver lm78_isa_driver = { static struct platform_driver lm78_isa_driver = {
@ -558,7 +557,7 @@ static int lm78_alias_detect(struct i2c_client *client, u8 chipid)
return 1; return 1;
} }
static int lm78_i2c_detect(struct i2c_client *client, int kind, static int lm78_i2c_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
int i; int i;

View File

@ -35,9 +35,6 @@
static const unsigned short normal_i2c[] = { 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, static const unsigned short normal_i2c[] = { 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,
0x2e, 0x2f, I2C_CLIENT_END }; 0x2e, 0x2f, I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(lm80);
/* Many LM80 constants specified below */ /* Many LM80 constants specified below */
/* The LM80 registers */ /* The LM80 registers */
@ -133,8 +130,7 @@ struct lm80_data {
static int lm80_probe(struct i2c_client *client, static int lm80_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int lm80_detect(struct i2c_client *client, int kind, static int lm80_detect(struct i2c_client *client, struct i2c_board_info *info);
struct i2c_board_info *info);
static void lm80_init_client(struct i2c_client *client); static void lm80_init_client(struct i2c_client *client);
static int lm80_remove(struct i2c_client *client); static int lm80_remove(struct i2c_client *client);
static struct lm80_data *lm80_update_device(struct device *dev); static struct lm80_data *lm80_update_device(struct device *dev);
@ -146,7 +142,7 @@ static int lm80_write_value(struct i2c_client *client, u8 reg, u8 value);
*/ */
static const struct i2c_device_id lm80_id[] = { static const struct i2c_device_id lm80_id[] = {
{ "lm80", lm80 }, { "lm80", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, lm80_id); MODULE_DEVICE_TABLE(i2c, lm80_id);
@ -160,7 +156,7 @@ static struct i2c_driver lm80_driver = {
.remove = lm80_remove, .remove = lm80_remove,
.id_table = lm80_id, .id_table = lm80_id,
.detect = lm80_detect, .detect = lm80_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -447,8 +443,7 @@ static const struct attribute_group lm80_group = {
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int lm80_detect(struct i2c_client *client, int kind, static int lm80_detect(struct i2c_client *client, struct i2c_board_info *info)
struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;
int i, cur; int i, cur;

View File

@ -51,11 +51,7 @@
static const unsigned short normal_i2c[] = { static const unsigned short normal_i2c[] = {
0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e, I2C_CLIENT_END }; 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e, I2C_CLIENT_END };
/* enum chips { lm83, lm82 };
* Insmod parameters
*/
I2C_CLIENT_INSMOD_2(lm83, lm82);
/* /*
* The LM83 registers * The LM83 registers
@ -118,7 +114,7 @@ static const u8 LM83_REG_W_HIGH[] = {
* Functions declaration * Functions declaration
*/ */
static int lm83_detect(struct i2c_client *new_client, int kind, static int lm83_detect(struct i2c_client *new_client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int lm83_probe(struct i2c_client *client, static int lm83_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
@ -145,7 +141,7 @@ static struct i2c_driver lm83_driver = {
.remove = lm83_remove, .remove = lm83_remove,
.id_table = lm83_id, .id_table = lm83_id,
.detect = lm83_detect, .detect = lm83_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -291,7 +287,7 @@ static const struct attribute_group lm83_group_opt = {
*/ */
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int lm83_detect(struct i2c_client *new_client, int kind, static int lm83_detect(struct i2c_client *new_client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = new_client->adapter; struct i2c_adapter *adapter = new_client->adapter;

View File

@ -38,9 +38,11 @@
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END };
/* Insmod parameters */ enum chips {
I2C_CLIENT_INSMOD_7(lm85b, lm85c, adm1027, adt7463, adt7468, emc6d100, any_chip, lm85b, lm85c,
emc6d102); adm1027, adt7463, adt7468,
emc6d100, emc6d102
};
/* The LM85 registers */ /* The LM85 registers */
@ -323,8 +325,7 @@ struct lm85_data {
struct lm85_zone zone[3]; struct lm85_zone zone[3];
}; };
static int lm85_detect(struct i2c_client *client, int kind, static int lm85_detect(struct i2c_client *client, struct i2c_board_info *info);
struct i2c_board_info *info);
static int lm85_probe(struct i2c_client *client, static int lm85_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int lm85_remove(struct i2c_client *client); static int lm85_remove(struct i2c_client *client);
@ -357,7 +358,7 @@ static struct i2c_driver lm85_driver = {
.remove = lm85_remove, .remove = lm85_remove,
.id_table = lm85_id, .id_table = lm85_id,
.detect = lm85_detect, .detect = lm85_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
@ -1156,8 +1157,7 @@ static int lm85_is_fake(struct i2c_client *client)
} }
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int lm85_detect(struct i2c_client *client, int kind, static int lm85_detect(struct i2c_client *client, struct i2c_board_info *info)
struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;
int address = client->addr; int address = client->addr;

View File

@ -74,11 +74,7 @@
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END };
/* enum chips { lm87, adm1024 };
* Insmod parameters
*/
I2C_CLIENT_INSMOD_2(lm87, adm1024);
/* /*
* The LM87 registers * The LM87 registers
@ -158,7 +154,7 @@ static u8 LM87_REG_TEMP_LOW[3] = { 0x3A, 0x38, 0x2C };
static int lm87_probe(struct i2c_client *client, static int lm87_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int lm87_detect(struct i2c_client *new_client, int kind, static int lm87_detect(struct i2c_client *new_client,
struct i2c_board_info *info); struct i2c_board_info *info);
static void lm87_init_client(struct i2c_client *client); static void lm87_init_client(struct i2c_client *client);
static int lm87_remove(struct i2c_client *client); static int lm87_remove(struct i2c_client *client);
@ -184,7 +180,7 @@ static struct i2c_driver lm87_driver = {
.remove = lm87_remove, .remove = lm87_remove,
.id_table = lm87_id, .id_table = lm87_id,
.detect = lm87_detect, .detect = lm87_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -662,7 +658,7 @@ static const struct attribute_group lm87_group_opt = {
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int lm87_detect(struct i2c_client *new_client, int kind, static int lm87_detect(struct i2c_client *new_client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = new_client->adapter; struct i2c_adapter *adapter = new_client->adapter;

View File

@ -93,12 +93,7 @@
static const unsigned short normal_i2c[] = { static const unsigned short normal_i2c[] = {
0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e, I2C_CLIENT_END }; 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e, I2C_CLIENT_END };
/* enum chips { lm90, adm1032, lm99, lm86, max6657, adt7461, max6680, max6646 };
* Insmod parameters
*/
I2C_CLIENT_INSMOD_8(lm90, adm1032, lm99, lm86, max6657, adt7461, max6680,
max6646);
/* /*
* The LM90 registers * The LM90 registers
@ -152,8 +147,7 @@ I2C_CLIENT_INSMOD_8(lm90, adm1032, lm99, lm86, max6657, adt7461, max6680,
* Functions declaration * Functions declaration
*/ */
static int lm90_detect(struct i2c_client *client, int kind, static int lm90_detect(struct i2c_client *client, struct i2c_board_info *info);
struct i2c_board_info *info);
static int lm90_probe(struct i2c_client *client, static int lm90_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static void lm90_init_client(struct i2c_client *client); static void lm90_init_client(struct i2c_client *client);
@ -192,7 +186,7 @@ static struct i2c_driver lm90_driver = {
.remove = lm90_remove, .remove = lm90_remove,
.id_table = lm90_id, .id_table = lm90_id,
.detect = lm90_detect, .detect = lm90_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -656,7 +650,7 @@ static int lm90_read_reg(struct i2c_client* client, u8 reg, u8 *value)
} }
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int lm90_detect(struct i2c_client *new_client, int kind, static int lm90_detect(struct i2c_client *new_client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = new_client->adapter; struct i2c_adapter *adapter = new_client->adapter;

View File

@ -54,9 +54,6 @@
static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b, static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b,
I2C_CLIENT_END }; I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(lm92);
/* The LM92 registers */ /* The LM92 registers */
#define LM92_REG_CONFIG 0x01 /* 8-bit, RW */ #define LM92_REG_CONFIG 0x01 /* 8-bit, RW */
#define LM92_REG_TEMP 0x00 /* 16-bit, RO */ #define LM92_REG_TEMP 0x00 /* 16-bit, RO */
@ -319,7 +316,7 @@ static const struct attribute_group lm92_group = {
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int lm92_detect(struct i2c_client *new_client, int kind, static int lm92_detect(struct i2c_client *new_client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = new_client->adapter; struct i2c_adapter *adapter = new_client->adapter;
@ -401,7 +398,7 @@ static int lm92_remove(struct i2c_client *client)
*/ */
static const struct i2c_device_id lm92_id[] = { static const struct i2c_device_id lm92_id[] = {
{ "lm92", lm92 }, { "lm92", 0 },
/* max6635 could be added here */ /* max6635 could be added here */
{ } { }
}; };
@ -416,7 +413,7 @@ static struct i2c_driver lm92_driver = {
.remove = lm92_remove, .remove = lm92_remove,
.id_table = lm92_id, .id_table = lm92_id,
.detect = lm92_detect, .detect = lm92_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static int __init sensors_lm92_init(void) static int __init sensors_lm92_init(void)

View File

@ -145,7 +145,6 @@
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END };
/* Insmod parameters */ /* Insmod parameters */
I2C_CLIENT_INSMOD_1(lm93);
static int disable_block; static int disable_block;
module_param(disable_block, bool, 0); module_param(disable_block, bool, 0);
@ -2501,8 +2500,7 @@ static void lm93_init_client(struct i2c_client *client)
} }
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int lm93_detect(struct i2c_client *client, int kind, static int lm93_detect(struct i2c_client *client, struct i2c_board_info *info)
struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;
int mfr, ver; int mfr, ver;
@ -2603,7 +2601,7 @@ static int lm93_remove(struct i2c_client *client)
} }
static const struct i2c_device_id lm93_id[] = { static const struct i2c_device_id lm93_id[] = {
{ "lm93", lm93 }, { "lm93", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, lm93_id); MODULE_DEVICE_TABLE(i2c, lm93_id);
@ -2617,7 +2615,7 @@ static struct i2c_driver lm93_driver = {
.remove = lm93_remove, .remove = lm93_remove,
.id_table = lm93_id, .id_table = lm93_id,
.detect = lm93_detect, .detect = lm93_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static int __init lm93_init(void) static int __init lm93_init(void)

View File

@ -39,9 +39,6 @@
static const unsigned short normal_i2c[] = { static const unsigned short normal_i2c[] = {
0x19, 0x2a, 0x2b, I2C_CLIENT_END}; 0x19, 0x2a, 0x2b, I2C_CLIENT_END};
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(lm95241);
/* LM95241 registers */ /* LM95241 registers */
#define LM95241_REG_R_MAN_ID 0xFE #define LM95241_REG_R_MAN_ID 0xFE
#define LM95241_REG_R_CHIP_ID 0xFF #define LM95241_REG_R_CHIP_ID 0xFF
@ -310,7 +307,7 @@ static const struct attribute_group lm95241_group = {
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int lm95241_detect(struct i2c_client *new_client, int kind, static int lm95241_detect(struct i2c_client *new_client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = new_client->adapter; struct i2c_adapter *adapter = new_client->adapter;
@ -446,7 +443,7 @@ static struct lm95241_data *lm95241_update_device(struct device *dev)
/* Driver data (common to all clients) */ /* Driver data (common to all clients) */
static const struct i2c_device_id lm95241_id[] = { static const struct i2c_device_id lm95241_id[] = {
{ "lm95241", lm95241 }, { "lm95241", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, lm95241_id); MODULE_DEVICE_TABLE(i2c, lm95241_id);
@ -460,7 +457,7 @@ static struct i2c_driver lm95241_driver = {
.remove = lm95241_remove, .remove = lm95241_remove,
.id_table = lm95241_id, .id_table = lm95241_id,
.detect = lm95241_detect, .detect = lm95241_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static int __init sensors_lm95241_init(void) static int __init sensors_lm95241_init(void)

View File

@ -40,12 +40,6 @@
static const unsigned short normal_i2c[] = { static const unsigned short normal_i2c[] = {
0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e, I2C_CLIENT_END }; 0x18, 0x19, 0x1a, 0x29, 0x2a, 0x2b, 0x4c, 0x4d, 0x4e, I2C_CLIENT_END };
/*
* Insmod parameters
*/
I2C_CLIENT_INSMOD_1(max1619);
/* /*
* The MAX1619 registers * The MAX1619 registers
*/ */
@ -88,7 +82,7 @@ static int temp_to_reg(int val)
static int max1619_probe(struct i2c_client *client, static int max1619_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int max1619_detect(struct i2c_client *client, int kind, static int max1619_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static void max1619_init_client(struct i2c_client *client); static void max1619_init_client(struct i2c_client *client);
static int max1619_remove(struct i2c_client *client); static int max1619_remove(struct i2c_client *client);
@ -99,7 +93,7 @@ static struct max1619_data *max1619_update_device(struct device *dev);
*/ */
static const struct i2c_device_id max1619_id[] = { static const struct i2c_device_id max1619_id[] = {
{ "max1619", max1619 }, { "max1619", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, max1619_id); MODULE_DEVICE_TABLE(i2c, max1619_id);
@ -113,7 +107,7 @@ static struct i2c_driver max1619_driver = {
.remove = max1619_remove, .remove = max1619_remove,
.id_table = max1619_id, .id_table = max1619_id,
.detect = max1619_detect, .detect = max1619_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -226,7 +220,7 @@ static const struct attribute_group max1619_group = {
*/ */
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int max1619_detect(struct i2c_client *client, int kind, static int max1619_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -62,8 +62,6 @@ module_param(fan_voltage, int, S_IRUGO);
module_param(prescaler, int, S_IRUGO); module_param(prescaler, int, S_IRUGO);
module_param(clock, int, S_IRUGO); module_param(clock, int, S_IRUGO);
I2C_CLIENT_INSMOD_1(max6650);
/* /*
* MAX 6650/6651 registers * MAX 6650/6651 registers
*/ */
@ -116,7 +114,7 @@ I2C_CLIENT_INSMOD_1(max6650);
static int max6650_probe(struct i2c_client *client, static int max6650_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int max6650_detect(struct i2c_client *client, int kind, static int max6650_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int max6650_init_client(struct i2c_client *client); static int max6650_init_client(struct i2c_client *client);
static int max6650_remove(struct i2c_client *client); static int max6650_remove(struct i2c_client *client);
@ -127,7 +125,7 @@ static struct max6650_data *max6650_update_device(struct device *dev);
*/ */
static const struct i2c_device_id max6650_id[] = { static const struct i2c_device_id max6650_id[] = {
{ "max6650", max6650 }, { "max6650", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, max6650_id); MODULE_DEVICE_TABLE(i2c, max6650_id);
@ -141,7 +139,7 @@ static struct i2c_driver max6650_driver = {
.remove = max6650_remove, .remove = max6650_remove,
.id_table = max6650_id, .id_table = max6650_id,
.detect = max6650_detect, .detect = max6650_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -528,7 +526,7 @@ static struct attribute_group max6650_attr_grp = {
*/ */
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int max6650_detect(struct i2c_client *client, int kind, static int max6650_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -29,7 +29,6 @@ static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4b, 0x4c,
0x4d, 0x4e, 0x4f, I2C_CLIENT_END }; 0x4d, 0x4e, 0x4f, I2C_CLIENT_END };
/* Insmod parameters */ /* Insmod parameters */
I2C_CLIENT_INSMOD_1(pcf8591);
static int input_mode; static int input_mode;
module_param(input_mode, int, 0); module_param(input_mode, int, 0);
@ -169,7 +168,7 @@ static const struct attribute_group pcf8591_attr_group_opt = {
*/ */
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int pcf8591_detect(struct i2c_client *client, int kind, static int pcf8591_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;
@ -299,7 +298,7 @@ static struct i2c_driver pcf8591_driver = {
.class = I2C_CLASS_HWMON, /* Nearest choice */ .class = I2C_CLASS_HWMON, /* Nearest choice */
.detect = pcf8591_detect, .detect = pcf8591_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static int __init pcf8591_init(void) static int __init pcf8591_init(void)

View File

@ -36,9 +36,6 @@
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2c, 0x2d, I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(smsc47m192);
/* SMSC47M192 registers */ /* SMSC47M192 registers */
#define SMSC47M192_REG_IN(nr) ((nr)<6 ? (0x20 + (nr)) : \ #define SMSC47M192_REG_IN(nr) ((nr)<6 ? (0x20 + (nr)) : \
(0x50 + (nr) - 6)) (0x50 + (nr) - 6))
@ -115,13 +112,13 @@ struct smsc47m192_data {
static int smsc47m192_probe(struct i2c_client *client, static int smsc47m192_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int smsc47m192_detect(struct i2c_client *client, int kind, static int smsc47m192_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int smsc47m192_remove(struct i2c_client *client); static int smsc47m192_remove(struct i2c_client *client);
static struct smsc47m192_data *smsc47m192_update_device(struct device *dev); static struct smsc47m192_data *smsc47m192_update_device(struct device *dev);
static const struct i2c_device_id smsc47m192_id[] = { static const struct i2c_device_id smsc47m192_id[] = {
{ "smsc47m192", smsc47m192 }, { "smsc47m192", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, smsc47m192_id); MODULE_DEVICE_TABLE(i2c, smsc47m192_id);
@ -135,7 +132,7 @@ static struct i2c_driver smsc47m192_driver = {
.remove = smsc47m192_remove, .remove = smsc47m192_remove,
.id_table = smsc47m192_id, .id_table = smsc47m192_id,
.detect = smsc47m192_detect, .detect = smsc47m192_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* Voltages */ /* Voltages */
@ -481,7 +478,7 @@ static void smsc47m192_init_client(struct i2c_client *client)
} }
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int smsc47m192_detect(struct i2c_client *client, int kind, static int smsc47m192_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -35,7 +35,7 @@ MODULE_LICENSE("GPL");
static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END };
/* Insmod parameters */ /* Insmod parameters */
I2C_CLIENT_INSMOD_2(thmc50, adm1022); enum chips { thmc50, adm1022 };
static unsigned short adm1022_temp3[16]; static unsigned short adm1022_temp3[16];
static unsigned int adm1022_temp3_num; static unsigned int adm1022_temp3_num;
@ -84,7 +84,7 @@ struct thmc50_data {
u8 alarms; u8 alarms;
}; };
static int thmc50_detect(struct i2c_client *client, int kind, static int thmc50_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int thmc50_probe(struct i2c_client *client, static int thmc50_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
@ -108,7 +108,7 @@ static struct i2c_driver thmc50_driver = {
.remove = thmc50_remove, .remove = thmc50_remove,
.id_table = thmc50_id, .id_table = thmc50_id,
.detect = thmc50_detect, .detect = thmc50_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static ssize_t show_analog_out(struct device *dev, static ssize_t show_analog_out(struct device *dev,
@ -286,7 +286,7 @@ static const struct attribute_group temp3_group = {
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int thmc50_detect(struct i2c_client *client, int kind, static int thmc50_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
unsigned company; unsigned company;

View File

@ -42,8 +42,7 @@
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = { 0x4c, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x4c, I2C_CLIENT_END };
/* Insmod parameters */ enum chips { tmp401, tmp411 };
I2C_CLIENT_INSMOD_2(tmp401, tmp411);
/* /*
* The TMP401 registers, note some registers have different addresses for * The TMP401 registers, note some registers have different addresses for
@ -98,7 +97,7 @@ static const u8 TMP411_TEMP_HIGHEST_LSB[2] = { 0x33, 0x37 };
static int tmp401_probe(struct i2c_client *client, static int tmp401_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int tmp401_detect(struct i2c_client *client, int kind, static int tmp401_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int tmp401_remove(struct i2c_client *client); static int tmp401_remove(struct i2c_client *client);
static struct tmp401_data *tmp401_update_device(struct device *dev); static struct tmp401_data *tmp401_update_device(struct device *dev);
@ -123,7 +122,7 @@ static struct i2c_driver tmp401_driver = {
.remove = tmp401_remove, .remove = tmp401_remove,
.id_table = tmp401_id, .id_table = tmp401_id,
.detect = tmp401_detect, .detect = tmp401_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -488,7 +487,7 @@ static void tmp401_init_client(struct i2c_client *client)
i2c_smbus_write_byte_data(client, TMP401_CONFIG_WRITE, config); i2c_smbus_write_byte_data(client, TMP401_CONFIG_WRITE, config);
} }
static int tmp401_detect(struct i2c_client *client, int _kind, static int tmp401_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
enum chips kind; enum chips kind;

View File

@ -39,8 +39,7 @@
static unsigned short normal_i2c[] = { 0x2a, 0x4c, 0x4d, 0x4e, 0x4f, static unsigned short normal_i2c[] = { 0x2a, 0x4c, 0x4d, 0x4e, 0x4f,
I2C_CLIENT_END }; I2C_CLIENT_END };
/* Insmod parameters */ enum chips { tmp421, tmp422, tmp423 };
I2C_CLIENT_INSMOD_3(tmp421, tmp422, tmp423);
/* The TMP421 registers */ /* The TMP421 registers */
#define TMP421_CONFIG_REG_1 0x09 #define TMP421_CONFIG_REG_1 0x09
@ -223,7 +222,7 @@ static int tmp421_init_client(struct i2c_client *client)
return 0; return 0;
} }
static int tmp421_detect(struct i2c_client *client, int _kind, static int tmp421_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
enum chips kind; enum chips kind;
@ -322,7 +321,7 @@ static struct i2c_driver tmp421_driver = {
.remove = tmp421_remove, .remove = tmp421_remove,
.id_table = tmp421_id, .id_table = tmp421_id,
.detect = tmp421_detect, .detect = tmp421_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static int __init tmp421_init(void) static int __init tmp421_init(void)

View File

@ -56,9 +56,10 @@
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = { 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, static const unsigned short normal_i2c[] = { 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,
0x2e, 0x2f, I2C_CLIENT_END }; 0x2e, 0x2f, I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_4(w83781d, w83782d, w83783s, as99127f);
enum chips { w83781d, w83782d, w83783s, as99127f };
/* Insmod parameters */
static unsigned short force_subclients[4]; static unsigned short force_subclients[4];
module_param_array(force_subclients, short, NULL, 0); module_param_array(force_subclients, short, NULL, 0);
MODULE_PARM_DESC(force_subclients, "List of subclient addresses: " MODULE_PARM_DESC(force_subclients, "List of subclient addresses: "
@ -1051,8 +1052,7 @@ w83781d_create_files(struct device *dev, int kind, int is_isa)
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int static int
w83781d_detect(struct i2c_client *client, int kind, w83781d_detect(struct i2c_client *client, struct i2c_board_info *info)
struct i2c_board_info *info)
{ {
int val1, val2; int val1, val2;
struct w83781d_data *isa = w83781d_data_if_isa(); struct w83781d_data *isa = w83781d_data_if_isa();
@ -1537,7 +1537,7 @@ static struct i2c_driver w83781d_driver = {
.remove = w83781d_remove, .remove = w83781d_remove,
.id_table = w83781d_ids, .id_table = w83781d_ids,
.detect = w83781d_detect, .detect = w83781d_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*

View File

@ -52,7 +52,6 @@ static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, 0x2f,
I2C_CLIENT_END }; I2C_CLIENT_END };
/* Insmod parameters */ /* Insmod parameters */
I2C_CLIENT_INSMOD_1(w83791d);
static unsigned short force_subclients[4]; static unsigned short force_subclients[4];
module_param_array(force_subclients, short, NULL, 0); module_param_array(force_subclients, short, NULL, 0);
@ -326,7 +325,7 @@ struct w83791d_data {
static int w83791d_probe(struct i2c_client *client, static int w83791d_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int w83791d_detect(struct i2c_client *client, int kind, static int w83791d_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int w83791d_remove(struct i2c_client *client); static int w83791d_remove(struct i2c_client *client);
@ -341,7 +340,7 @@ static void w83791d_print_debug(struct w83791d_data *data, struct device *dev);
static void w83791d_init_client(struct i2c_client *client); static void w83791d_init_client(struct i2c_client *client);
static const struct i2c_device_id w83791d_id[] = { static const struct i2c_device_id w83791d_id[] = {
{ "w83791d", w83791d }, { "w83791d", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, w83791d_id); MODULE_DEVICE_TABLE(i2c, w83791d_id);
@ -355,7 +354,7 @@ static struct i2c_driver w83791d_driver = {
.remove = w83791d_remove, .remove = w83791d_remove,
.id_table = w83791d_id, .id_table = w83791d_id,
.detect = w83791d_detect, .detect = w83791d_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* following are the sysfs callback functions */ /* following are the sysfs callback functions */
@ -1259,7 +1258,7 @@ error_sc_0:
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int w83791d_detect(struct i2c_client *client, int kind, static int w83791d_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -50,7 +50,6 @@ static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, 0x2f,
I2C_CLIENT_END }; I2C_CLIENT_END };
/* Insmod parameters */ /* Insmod parameters */
I2C_CLIENT_INSMOD_1(w83792d);
static unsigned short force_subclients[4]; static unsigned short force_subclients[4];
module_param_array(force_subclients, short, NULL, 0); module_param_array(force_subclients, short, NULL, 0);
@ -302,7 +301,7 @@ struct w83792d_data {
static int w83792d_probe(struct i2c_client *client, static int w83792d_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int w83792d_detect(struct i2c_client *client, int kind, static int w83792d_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int w83792d_remove(struct i2c_client *client); static int w83792d_remove(struct i2c_client *client);
static struct w83792d_data *w83792d_update_device(struct device *dev); static struct w83792d_data *w83792d_update_device(struct device *dev);
@ -314,7 +313,7 @@ static void w83792d_print_debug(struct w83792d_data *data, struct device *dev);
static void w83792d_init_client(struct i2c_client *client); static void w83792d_init_client(struct i2c_client *client);
static const struct i2c_device_id w83792d_id[] = { static const struct i2c_device_id w83792d_id[] = {
{ "w83792d", w83792d }, { "w83792d", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, w83792d_id); MODULE_DEVICE_TABLE(i2c, w83792d_id);
@ -328,7 +327,7 @@ static struct i2c_driver w83792d_driver = {
.remove = w83792d_remove, .remove = w83792d_remove,
.id_table = w83792d_id, .id_table = w83792d_id,
.detect = w83792d_detect, .detect = w83792d_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static inline long in_count_from_reg(int nr, struct w83792d_data *data) static inline long in_count_from_reg(int nr, struct w83792d_data *data)
@ -1263,7 +1262,7 @@ static const struct attribute_group w83792d_group = {
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int static int
w83792d_detect(struct i2c_client *client, int kind, struct i2c_board_info *info) w83792d_detect(struct i2c_client *client, struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;
int val1, val2; int val1, val2;

View File

@ -41,7 +41,6 @@ static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, 0x2f,
I2C_CLIENT_END }; I2C_CLIENT_END };
/* Insmod parameters */ /* Insmod parameters */
I2C_CLIENT_INSMOD_1(w83793);
static unsigned short force_subclients[4]; static unsigned short force_subclients[4];
module_param_array(force_subclients, short, NULL, 0); module_param_array(force_subclients, short, NULL, 0);
@ -230,7 +229,7 @@ static u8 w83793_read_value(struct i2c_client *client, u16 reg);
static int w83793_write_value(struct i2c_client *client, u16 reg, u8 value); static int w83793_write_value(struct i2c_client *client, u16 reg, u8 value);
static int w83793_probe(struct i2c_client *client, static int w83793_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int w83793_detect(struct i2c_client *client, int kind, static int w83793_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int w83793_remove(struct i2c_client *client); static int w83793_remove(struct i2c_client *client);
static void w83793_init_client(struct i2c_client *client); static void w83793_init_client(struct i2c_client *client);
@ -238,7 +237,7 @@ static void w83793_update_nonvolatile(struct device *dev);
static struct w83793_data *w83793_update_device(struct device *dev); static struct w83793_data *w83793_update_device(struct device *dev);
static const struct i2c_device_id w83793_id[] = { static const struct i2c_device_id w83793_id[] = {
{ "w83793", w83793 }, { "w83793", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, w83793_id); MODULE_DEVICE_TABLE(i2c, w83793_id);
@ -252,7 +251,7 @@ static struct i2c_driver w83793_driver = {
.remove = w83793_remove, .remove = w83793_remove,
.id_table = w83793_id, .id_table = w83793_id,
.detect = w83793_detect, .detect = w83793_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static ssize_t static ssize_t
@ -1161,7 +1160,7 @@ ERROR_SC_0:
} }
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int w83793_detect(struct i2c_client *client, int kind, static int w83793_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
u8 tmp, bank, chip_id; u8 tmp, bank, chip_id;

View File

@ -51,12 +51,6 @@
static const unsigned short normal_i2c[] = { 0x2e, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2e, I2C_CLIENT_END };
/*
* Insmod parameters
*/
I2C_CLIENT_INSMOD_1(w83l785ts);
/* /*
* The W83L785TS-S registers * The W83L785TS-S registers
* Manufacturer ID is 0x5CA3 for Winbond. * Manufacturer ID is 0x5CA3 for Winbond.
@ -83,7 +77,7 @@ I2C_CLIENT_INSMOD_1(w83l785ts);
static int w83l785ts_probe(struct i2c_client *client, static int w83l785ts_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int w83l785ts_detect(struct i2c_client *client, int kind, static int w83l785ts_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int w83l785ts_remove(struct i2c_client *client); static int w83l785ts_remove(struct i2c_client *client);
static u8 w83l785ts_read_value(struct i2c_client *client, u8 reg, u8 defval); static u8 w83l785ts_read_value(struct i2c_client *client, u8 reg, u8 defval);
@ -94,7 +88,7 @@ static struct w83l785ts_data *w83l785ts_update_device(struct device *dev);
*/ */
static const struct i2c_device_id w83l785ts_id[] = { static const struct i2c_device_id w83l785ts_id[] = {
{ "w83l785ts", w83l785ts }, { "w83l785ts", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, w83l785ts_id); MODULE_DEVICE_TABLE(i2c, w83l785ts_id);
@ -108,7 +102,7 @@ static struct i2c_driver w83l785ts_driver = {
.remove = w83l785ts_remove, .remove = w83l785ts_remove,
.id_table = w83l785ts_id, .id_table = w83l785ts_id,
.detect = w83l785ts_detect, .detect = w83l785ts_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
/* /*
@ -146,7 +140,7 @@ static SENSOR_DEVICE_ATTR(temp1_max, S_IRUGO, show_temp, NULL, 1);
*/ */
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int w83l785ts_detect(struct i2c_client *client, int kind, static int w83l785ts_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -38,7 +38,6 @@
static const unsigned short normal_i2c[] = { 0x2e, 0x2f, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x2e, 0x2f, I2C_CLIENT_END };
/* Insmod parameters */ /* Insmod parameters */
I2C_CLIENT_INSMOD_1(w83l786ng);
static int reset; static int reset;
module_param(reset, bool, 0); module_param(reset, bool, 0);
@ -147,14 +146,14 @@ struct w83l786ng_data {
static int w83l786ng_probe(struct i2c_client *client, static int w83l786ng_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int w83l786ng_detect(struct i2c_client *client, int kind, static int w83l786ng_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int w83l786ng_remove(struct i2c_client *client); static int w83l786ng_remove(struct i2c_client *client);
static void w83l786ng_init_client(struct i2c_client *client); static void w83l786ng_init_client(struct i2c_client *client);
static struct w83l786ng_data *w83l786ng_update_device(struct device *dev); static struct w83l786ng_data *w83l786ng_update_device(struct device *dev);
static const struct i2c_device_id w83l786ng_id[] = { static const struct i2c_device_id w83l786ng_id[] = {
{ "w83l786ng", w83l786ng }, { "w83l786ng", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, w83l786ng_id); MODULE_DEVICE_TABLE(i2c, w83l786ng_id);
@ -168,7 +167,7 @@ static struct i2c_driver w83l786ng_driver = {
.remove = w83l786ng_remove, .remove = w83l786ng_remove,
.id_table = w83l786ng_id, .id_table = w83l786ng_id,
.detect = w83l786ng_detect, .detect = w83l786ng_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static u8 static u8
@ -586,8 +585,7 @@ static const struct attribute_group w83l786ng_group = {
}; };
static int static int
w83l786ng_detect(struct i2c_client *client, int kind, w83l786ng_detect(struct i2c_client *client, struct i2c_board_info *info)
struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;
u16 man_id; u16 man_id;

View File

@ -155,6 +155,35 @@ static void i2c_device_shutdown(struct device *dev)
driver->shutdown(client); driver->shutdown(client);
} }
#ifdef CONFIG_SUSPEND
static int i2c_device_pm_suspend(struct device *dev)
{
const struct dev_pm_ops *pm;
if (!dev->driver)
return 0;
pm = dev->driver->pm;
if (!pm || !pm->suspend)
return 0;
return pm->suspend(dev);
}
static int i2c_device_pm_resume(struct device *dev)
{
const struct dev_pm_ops *pm;
if (!dev->driver)
return 0;
pm = dev->driver->pm;
if (!pm || !pm->resume)
return 0;
return pm->resume(dev);
}
#else
#define i2c_device_pm_suspend NULL
#define i2c_device_pm_resume NULL
#endif
static int i2c_device_suspend(struct device *dev, pm_message_t mesg) static int i2c_device_suspend(struct device *dev, pm_message_t mesg)
{ {
struct i2c_client *client = i2c_verify_client(dev); struct i2c_client *client = i2c_verify_client(dev);
@ -219,6 +248,11 @@ static const struct attribute_group *i2c_dev_attr_groups[] = {
NULL NULL
}; };
const static struct dev_pm_ops i2c_device_pm_ops = {
.suspend = i2c_device_pm_suspend,
.resume = i2c_device_pm_resume,
};
struct bus_type i2c_bus_type = { struct bus_type i2c_bus_type = {
.name = "i2c", .name = "i2c",
.match = i2c_device_match, .match = i2c_device_match,
@ -227,6 +261,7 @@ struct bus_type i2c_bus_type = {
.shutdown = i2c_device_shutdown, .shutdown = i2c_device_shutdown,
.suspend = i2c_device_suspend, .suspend = i2c_device_suspend,
.resume = i2c_device_resume, .resume = i2c_device_resume,
.pm = &i2c_device_pm_ops,
}; };
EXPORT_SYMBOL_GPL(i2c_bus_type); EXPORT_SYMBOL_GPL(i2c_bus_type);
@ -1184,7 +1219,7 @@ static int i2c_detect_address(struct i2c_client *temp_client,
/* Finally call the custom detection function */ /* Finally call the custom detection function */
memset(&info, 0, sizeof(struct i2c_board_info)); memset(&info, 0, sizeof(struct i2c_board_info));
info.addr = addr; info.addr = addr;
err = driver->detect(temp_client, -1, &info); err = driver->detect(temp_client, &info);
if (err) { if (err) {
/* -ENODEV is returned if the detection fails. We catch it /* -ENODEV is returned if the detection fails. We catch it
here as this isn't an error. */ here as this isn't an error. */
@ -1214,13 +1249,13 @@ static int i2c_detect_address(struct i2c_client *temp_client,
static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver) static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
{ {
const struct i2c_client_address_data *address_data; const unsigned short *address_list;
struct i2c_client *temp_client; struct i2c_client *temp_client;
int i, err = 0; int i, err = 0;
int adap_id = i2c_adapter_id(adapter); int adap_id = i2c_adapter_id(adapter);
address_data = driver->address_data; address_list = driver->address_list;
if (!driver->detect || !address_data) if (!driver->detect || !address_list)
return 0; return 0;
/* Set up a temporary client to help detect callback */ /* Set up a temporary client to help detect callback */
@ -1235,7 +1270,7 @@ static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
/* Stop here if we can't use SMBUS_QUICK */ /* Stop here if we can't use SMBUS_QUICK */
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_QUICK)) { if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_QUICK)) {
if (address_data->normal_i2c[0] == I2C_CLIENT_END) if (address_list[0] == I2C_CLIENT_END)
goto exit_free; goto exit_free;
dev_warn(&adapter->dev, "SMBus Quick command not supported, " dev_warn(&adapter->dev, "SMBus Quick command not supported, "
@ -1244,11 +1279,10 @@ static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
goto exit_free; goto exit_free;
} }
for (i = 0; address_data->normal_i2c[i] != I2C_CLIENT_END; i += 1) { for (i = 0; address_list[i] != I2C_CLIENT_END; i += 1) {
dev_dbg(&adapter->dev, "found normal entry for adapter %d, " dev_dbg(&adapter->dev, "found normal entry for adapter %d, "
"addr 0x%02x\n", adap_id, "addr 0x%02x\n", adap_id, address_list[i]);
address_data->normal_i2c[i]); temp_client->addr = address_list[i];
temp_client->addr = address_data->normal_i2c[i];
err = i2c_detect_address(temp_client, driver); err = i2c_detect_address(temp_client, driver);
if (err) if (err)
goto exit_free; goto exit_free;

View File

@ -32,9 +32,6 @@
static const unsigned short normal_i2c[] = { 0x50, 0x51, 0x52, 0x53, 0x54, static const unsigned short normal_i2c[] = { 0x50, 0x51, 0x52, 0x53, 0x54,
0x55, 0x56, 0x57, I2C_CLIENT_END }; 0x55, 0x56, 0x57, I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(eeprom);
/* Size of EEPROM in bytes */ /* Size of EEPROM in bytes */
#define EEPROM_SIZE 256 #define EEPROM_SIZE 256
@ -135,8 +132,7 @@ static struct bin_attribute eeprom_attr = {
}; };
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int eeprom_detect(struct i2c_client *client, int kind, static int eeprom_detect(struct i2c_client *client, struct i2c_board_info *info)
struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;
@ -233,7 +229,7 @@ static struct i2c_driver eeprom_driver = {
.class = I2C_CLASS_DDC | I2C_CLASS_SPD, .class = I2C_CLASS_DDC | I2C_CLASS_SPD,
.detect = eeprom_detect, .detect = eeprom_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static int __init eeprom_init(void) static int __init eeprom_init(void)

View File

@ -30,9 +30,6 @@
/* Addresses to scan */ /* Addresses to scan */
static const unsigned short normal_i2c[] = { 0x69, I2C_CLIENT_END }; static const unsigned short normal_i2c[] = { 0x69, I2C_CLIENT_END };
/* Insmod parameters */
I2C_CLIENT_INSMOD_1(ics932s401);
/* ICS932S401 registers */ /* ICS932S401 registers */
#define ICS932S401_REG_CFG2 0x01 #define ICS932S401_REG_CFG2 0x01
#define ICS932S401_CFG1_SPREAD 0x01 #define ICS932S401_CFG1_SPREAD 0x01
@ -106,12 +103,12 @@ struct ics932s401_data {
static int ics932s401_probe(struct i2c_client *client, static int ics932s401_probe(struct i2c_client *client,
const struct i2c_device_id *id); const struct i2c_device_id *id);
static int ics932s401_detect(struct i2c_client *client, int kind, static int ics932s401_detect(struct i2c_client *client,
struct i2c_board_info *info); struct i2c_board_info *info);
static int ics932s401_remove(struct i2c_client *client); static int ics932s401_remove(struct i2c_client *client);
static const struct i2c_device_id ics932s401_id[] = { static const struct i2c_device_id ics932s401_id[] = {
{ "ics932s401", ics932s401 }, { "ics932s401", 0 },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, ics932s401_id); MODULE_DEVICE_TABLE(i2c, ics932s401_id);
@ -125,7 +122,7 @@ static struct i2c_driver ics932s401_driver = {
.remove = ics932s401_remove, .remove = ics932s401_remove,
.id_table = ics932s401_id, .id_table = ics932s401_id,
.detect = ics932s401_detect, .detect = ics932s401_detect,
.address_data = &addr_data, .address_list = normal_i2c,
}; };
static struct ics932s401_data *ics932s401_update_device(struct device *dev) static struct ics932s401_data *ics932s401_update_device(struct device *dev)
@ -413,7 +410,7 @@ static ssize_t show_spread(struct device *dev,
} }
/* Return 0 if detection is successful, -ENODEV otherwise */ /* Return 0 if detection is successful, -ENODEV otherwise */
static int ics932s401_detect(struct i2c_client *client, int kind, static int ics932s401_detect(struct i2c_client *client,
struct i2c_board_info *info) struct i2c_board_info *info)
{ {
struct i2c_adapter *adapter = client->adapter; struct i2c_adapter *adapter = client->adapter;

View File

@ -110,7 +110,7 @@ extern s32 i2c_smbus_write_i2c_block_data(struct i2c_client *client,
* @driver: Device driver model driver * @driver: Device driver model driver
* @id_table: List of I2C devices supported by this driver * @id_table: List of I2C devices supported by this driver
* @detect: Callback for device detection * @detect: Callback for device detection
* @address_data: The I2C addresses to probe (for detect) * @address_list: The I2C addresses to probe (for detect)
* @clients: List of detected clients we created (for i2c-core use only) * @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. * The driver.owner field should be set to the module owner of this driver.
@ -161,8 +161,8 @@ struct i2c_driver {
const struct i2c_device_id *id_table; const struct i2c_device_id *id_table;
/* Device detection callback for automatic device creation */ /* Device detection callback for automatic device creation */
int (*detect)(struct i2c_client *, int kind, struct i2c_board_info *); int (*detect)(struct i2c_client *, struct i2c_board_info *);
const struct i2c_client_address_data *address_data; const unsigned short *address_list;
struct list_head clients; struct list_head clients;
}; };
#define to_i2c_driver(d) container_of(d, struct i2c_driver, driver) #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)
#define I2C_CLASS_DDC (1<<3) /* DDC bus on graphics adapters */ #define I2C_CLASS_DDC (1<<3) /* DDC bus on graphics adapters */
#define I2C_CLASS_SPD (1<<7) /* SPD EEPROMs and similar */ #define I2C_CLASS_SPD (1<<7) /* SPD EEPROMs and similar */
/* i2c_client_address_data is the struct for holding default client
* addresses for a driver and for the parameters supplied on the
* command line
*/
struct i2c_client_address_data {
const unsigned short *normal_i2c;
};
/* Internal numbers to terminate lists */ /* Internal numbers to terminate lists */
#define I2C_CLIENT_END 0xfffeU #define I2C_CLIENT_END 0xfffeU
@ -576,82 +568,4 @@ union i2c_smbus_data {
#define I2C_SMBUS_BLOCK_PROC_CALL 7 /* SMBus 2.0 */ #define I2C_SMBUS_BLOCK_PROC_CALL 7 /* SMBus 2.0 */
#define I2C_SMBUS_I2C_BLOCK_DATA 8 #define I2C_SMBUS_I2C_BLOCK_DATA 8
#ifdef __KERNEL__
/* These defines are used for probing i2c client addresses */
/* The length of the option lists */
#define I2C_CLIENT_MAX_OPTS 48
/* Default fill of many variables */
#define I2C_CLIENT_DEFAULTS {I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END, \
I2C_CLIENT_END, I2C_CLIENT_END, I2C_CLIENT_END}
/* I2C_CLIENT_MODULE_PARM creates a module parameter, and puts it in the
module header */
#define I2C_CLIENT_MODULE_PARM(var,desc) \
static unsigned short var[I2C_CLIENT_MAX_OPTS] = I2C_CLIENT_DEFAULTS; \
static unsigned int var##_num; \
module_param_array(var, short, &var##_num, 0); \
MODULE_PARM_DESC(var, desc)
#define I2C_CLIENT_INSMOD_COMMON \
static const struct i2c_client_address_data addr_data = { \
.normal_i2c = normal_i2c, \
}
/* 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_INSMOD_COMMON
#define I2C_CLIENT_INSMOD_1(chip1) \
enum chips { any_chip, chip1 }; \
I2C_CLIENT_INSMOD_COMMON
#define I2C_CLIENT_INSMOD_2(chip1, chip2) \
enum chips { any_chip, chip1, chip2 }; \
I2C_CLIENT_INSMOD_COMMON
#define I2C_CLIENT_INSMOD_3(chip1, chip2, chip3) \
enum chips { any_chip, chip1, chip2, chip3 }; \
I2C_CLIENT_INSMOD_COMMON
#define I2C_CLIENT_INSMOD_4(chip1, chip2, chip3, chip4) \
enum chips { any_chip, chip1, chip2, chip3, chip4 }; \
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_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_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_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_INSMOD_COMMON
#endif /* __KERNEL__ */
#endif /* _LINUX_I2C_H */ #endif /* _LINUX_I2C_H */