The attach_adapter callback of every i2c hwmon driver can be removed, now that the i2c core will implicitly call i2c_probe if the address data is present in the i2c_driver structure. Signed-off-by: Alessandro Zummo <a.zummo at towertech.it> Index: linux-i2c-test/drivers/hwmon/adm1021.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/adm1021.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/adm1021.c 2005-11-09 13:43:07.000000000 +0100 @@ -111,7 +111,6 @@ struct adm1021_data { u8 remote_temp_offset_prec; }; -static int adm1021_attach_adapter(struct i2c_adapter *adapter); static int adm1021_detect(struct i2c_adapter *adapter, int address, int kind); static void adm1021_init_client(struct i2c_client *client); static int adm1021_detach_client(struct i2c_client *client); @@ -129,8 +128,10 @@ static struct i2c_driver adm1021_driver .owner = THIS_MODULE, .name = "adm1021", .id = I2C_DRIVERID_ADM1021, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = adm1021_attach_adapter, + .address_data = &addr_data, + .detect_client = adm1021_detect, .detach_client = adm1021_detach_client, }; @@ -182,13 +183,6 @@ static DEVICE_ATTR(temp2_input, S_IRUGO, static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL); -static int adm1021_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, adm1021_detect); -} - static int adm1021_detect(struct i2c_adapter *adapter, int address, int kind) { int i; Index: linux-i2c-test/drivers/hwmon/adm1025.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/adm1025.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/adm1025.c 2005-11-09 13:43:07.000000000 +0100 @@ -107,7 +107,6 @@ static int in_scale[6] = { 2500, 2250, 3 * Functions declaration */ -static int adm1025_attach_adapter(struct i2c_adapter *adapter); static int adm1025_detect(struct i2c_adapter *adapter, int address, int kind); static void adm1025_init_client(struct i2c_client *client); static int adm1025_detach_client(struct i2c_client *client); @@ -121,8 +120,10 @@ static struct i2c_driver adm1025_driver .owner = THIS_MODULE, .name = "adm1025", .id = I2C_DRIVERID_ADM1025, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = adm1025_attach_adapter, + .address_data = &addr_data, + .detect_client = adm1025_detect, .detach_client = adm1025_detach_client, }; @@ -309,13 +310,6 @@ static DEVICE_ATTR(vrm, S_IRUGO | S_IWUS * Real code */ -static int adm1025_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, adm1025_detect); -} - /* * The following function does more than just detection. If detection * succeeds, it also registers the new chip. Index: linux-i2c-test/drivers/hwmon/adm1026.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/adm1026.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/adm1026.c 2005-11-09 13:43:07.000000000 +0100 @@ -294,7 +294,6 @@ struct adm1026_data { u8 config3; /* Register value */ }; -static int adm1026_attach_adapter(struct i2c_adapter *adapter); static int adm1026_detect(struct i2c_adapter *adapter, int address, int kind); static int adm1026_detach_client(struct i2c_client *client); @@ -310,19 +309,13 @@ static void adm1026_init_client(struct i static struct i2c_driver adm1026_driver = { .owner = THIS_MODULE, .name = "adm1026", - .flags = I2C_DF_NOTIFY, - .attach_adapter = adm1026_attach_adapter, + .class = I2C_CLASS_HWMON, + .flags = I2C_DF_NOTIFY, + .address_data = &addr_data, + .detect_client = adm1026_detect, .detach_client = adm1026_detach_client, }; -static int adm1026_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) { - return 0; - } - return i2c_probe(adapter, &addr_data, adm1026_detect); -} - static int adm1026_detach_client(struct i2c_client *client) { struct adm1026_data *data = i2c_get_clientdata(client); Index: linux-i2c-test/drivers/hwmon/adm1031.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/adm1031.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/adm1031.c 2005-11-09 13:43:07.000000000 +0100 @@ -97,7 +97,6 @@ struct adm1031_data { s8 temp_crit[3]; }; -static int adm1031_attach_adapter(struct i2c_adapter *adapter); static int adm1031_detect(struct i2c_adapter *adapter, int address, int kind); static void adm1031_init_client(struct i2c_client *client); static int adm1031_detach_client(struct i2c_client *client); @@ -107,8 +106,10 @@ static struct adm1031_data *adm1031_upda static struct i2c_driver adm1031_driver = { .owner = THIS_MODULE, .name = "adm1031", + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = adm1031_attach_adapter, + .address_data = &addr_data, + .detect_client = adm1031_detect, .detach_client = adm1031_detach_client, }; @@ -722,14 +723,6 @@ static ssize_t show_alarms(struct device static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL); -static int adm1031_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, adm1031_detect); -} - -/* This function is called by i2c_probe */ static int adm1031_detect(struct i2c_adapter *adapter, int address, int kind) { struct i2c_client *new_client; Index: linux-i2c-test/drivers/hwmon/adm9240.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/adm9240.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/adm9240.c 2005-11-09 13:43:07.000000000 +0100 @@ -129,7 +129,6 @@ static inline unsigned int AOUT_FROM_REG return SCALE(reg, 1250, 255); } -static int adm9240_attach_adapter(struct i2c_adapter *adapter); static int adm9240_detect(struct i2c_adapter *adapter, int address, int kind); static void adm9240_init_client(struct i2c_client *client); static int adm9240_detach_client(struct i2c_client *client); @@ -140,8 +139,10 @@ static struct i2c_driver adm9240_driver .owner = THIS_MODULE, .name = "adm9240", .id = I2C_DRIVERID_ADM9240, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = adm9240_attach_adapter, + .address_data = &addr_data, + .detect_client = adm9240_detect, .detach_client = adm9240_detach_client, }; @@ -621,13 +622,6 @@ exit: return err; } -static int adm9240_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, adm9240_detect); -} - static int adm9240_detach_client(struct i2c_client *client) { struct adm9240_data *data = i2c_get_clientdata(client); Index: linux-i2c-test/drivers/hwmon/asb100.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/asb100.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/asb100.c 2005-11-09 13:43:07.000000000 +0100 @@ -210,7 +210,6 @@ struct asb100_data { static int asb100_read_value(struct i2c_client *client, u16 reg); static void asb100_write_value(struct i2c_client *client, u16 reg, u16 val); -static int asb100_attach_adapter(struct i2c_adapter *adapter); static int asb100_detect(struct i2c_adapter *adapter, int address, int kind); static int asb100_detach_client(struct i2c_client *client); static struct asb100_data *asb100_update_device(struct device *dev); @@ -220,8 +219,10 @@ static struct i2c_driver asb100_driver = .owner = THIS_MODULE, .name = "asb100", .id = I2C_DRIVERID_ASB100, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = asb100_attach_adapter, + .address_data = &addr_data, + .detect_client = asb100_detect, .detach_client = asb100_detach_client, }; @@ -611,18 +612,6 @@ static DEVICE_ATTR(pwm1_enable, S_IRUGO device_create_file(&new_client->dev, &dev_attr_pwm1_enable); \ } while (0) -/* This function is called when: - asb100_driver is inserted (when this module is loaded), for each - available adapter - when a new adapter is inserted (and asb100_driver is still present) - */ -static int asb100_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, asb100_detect); -} - static int asb100_detect_subclients(struct i2c_adapter *adapter, int address, int kind, struct i2c_client *new_client) { Index: linux-i2c-test/drivers/hwmon/atxp1.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/atxp1.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/atxp1.c 2005-11-09 13:44:24.000000000 +0100 @@ -44,7 +44,6 @@ static unsigned short normal_i2c[] = { 0 I2C_CLIENT_INSMOD_1(atxp1); -static int atxp1_attach_adapter(struct i2c_adapter * adapter); static int atxp1_detach_client(struct i2c_client * client); static struct atxp1_data * atxp1_update_device(struct device *dev); static int atxp1_detect(struct i2c_adapter *adapter, int address, int kind); @@ -52,8 +51,10 @@ static int atxp1_detect(struct i2c_adapt static struct i2c_driver atxp1_driver = { .owner = THIS_MODULE, .name = "atxp1", + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = atxp1_attach_adapter, + .address_data = &addr_data, + .detect_client = atxp1_detect, .detach_client = atxp1_detach_client, }; @@ -250,14 +251,6 @@ static ssize_t atxp1_storegpio2(struct d */ static DEVICE_ATTR(gpio2, S_IRUGO | S_IWUSR, atxp1_showgpio2, atxp1_storegpio2); - -static int atxp1_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, &atxp1_detect); -}; - static int atxp1_detect(struct i2c_adapter *adapter, int address, int kind) { struct i2c_client * new_client; Index: linux-i2c-test/drivers/hwmon/ds1621.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/ds1621.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/ds1621.c 2005-11-09 13:43:49.000000000 +0100 @@ -80,7 +80,6 @@ struct ds1621_data { u8 conf; /* Register encoding, combined */ }; -static int ds1621_attach_adapter(struct i2c_adapter *adapter); static int ds1621_detect(struct i2c_adapter *adapter, int address, int kind); static void ds1621_init_client(struct i2c_client *client); @@ -91,9 +90,11 @@ static struct ds1621_data *ds1621_update static struct i2c_driver ds1621_driver = { .owner = THIS_MODULE, .name = "ds1621", + .class = I2C_CLASS_HWMON, .id = I2C_DRIVERID_DS1621, .flags = I2C_DF_NOTIFY, - .attach_adapter = ds1621_attach_adapter, + .address_data = &addr_data, + .detect_client = ds1621_detect, .detach_client = ds1621_detach_client, }; @@ -177,14 +178,6 @@ static DEVICE_ATTR(temp1_input, S_IRUGO static DEVICE_ATTR(temp1_min, S_IWUSR | S_IRUGO , show_temp_min, set_temp_min); static DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, show_temp_max, set_temp_max); - -static int ds1621_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, ds1621_detect); -} - /* This function is called by i2c_probe */ static int ds1621_detect(struct i2c_adapter *adapter, int address, int kind) Index: linux-i2c-test/drivers/hwmon/fscher.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/fscher.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/fscher.c 2005-11-09 13:43:07.000000000 +0100 @@ -104,7 +104,6 @@ I2C_CLIENT_INSMOD_1(fscher); * Functions declaration */ -static int fscher_attach_adapter(struct i2c_adapter *adapter); static int fscher_detect(struct i2c_adapter *adapter, int address, int kind); static int fscher_detach_client(struct i2c_client *client); static struct fscher_data *fscher_update_device(struct device *dev); @@ -121,8 +120,10 @@ static struct i2c_driver fscher_driver = .owner = THIS_MODULE, .name = "fscher", .id = I2C_DRIVERID_FSCHER, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = fscher_attach_adapter, + .address_data = &addr_data, + .detect_client = fscher_detect, .detach_client = fscher_detach_client, }; @@ -284,13 +285,6 @@ do { \ * Real code */ -static int fscher_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, fscher_detect); -} - static int fscher_detect(struct i2c_adapter *adapter, int address, int kind) { struct i2c_client *new_client; Index: linux-i2c-test/drivers/hwmon/fscpos.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/fscpos.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/fscpos.c 2005-11-09 13:43:07.000000000 +0100 @@ -85,7 +85,6 @@ static u8 FSCPOS_REG_TEMP_STATE[] = { 0x /* * Functions declaration */ -static int fscpos_attach_adapter(struct i2c_adapter *adapter); static int fscpos_detect(struct i2c_adapter *adapter, int address, int kind); static int fscpos_detach_client(struct i2c_client *client); @@ -103,8 +102,10 @@ static struct i2c_driver fscpos_driver = .owner = THIS_MODULE, .name = "fscpos", .id = I2C_DRIVERID_FSCPOS, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = fscpos_attach_adapter, + .address_data = &addr_data, + .detect_client = fscpos_detect, .detach_client = fscpos_detach_client, }; @@ -431,13 +432,6 @@ static DEVICE_ATTR(in0_input, S_IRUGO, s static DEVICE_ATTR(in1_input, S_IRUGO, show_volt_5, NULL); static DEVICE_ATTR(in2_input, S_IRUGO, show_volt_batt, NULL); -static int fscpos_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, fscpos_detect); -} - static int fscpos_detect(struct i2c_adapter *adapter, int address, int kind) { struct i2c_client *new_client; Index: linux-i2c-test/drivers/hwmon/gl518sm.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/gl518sm.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/gl518sm.c 2005-11-09 13:43:07.000000000 +0100 @@ -141,7 +141,6 @@ struct gl518_data { u8 beep_enable; /* Boolean */ }; -static int gl518_attach_adapter(struct i2c_adapter *adapter); static int gl518_detect(struct i2c_adapter *adapter, int address, int kind); static void gl518_init_client(struct i2c_client *client); static int gl518_detach_client(struct i2c_client *client); @@ -154,8 +153,10 @@ static struct i2c_driver gl518_driver = .owner = THIS_MODULE, .name = "gl518sm", .id = I2C_DRIVERID_GL518, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = gl518_attach_adapter, + .address_data = &addr_data, + .detect_client = gl518_detect, .detach_client = gl518_detach_client, }; @@ -343,13 +344,6 @@ static DEVICE_ATTR(beep_mask, S_IWUSR|S_ * Real code */ -static int gl518_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, gl518_detect); -} - static int gl518_detect(struct i2c_adapter *adapter, int address, int kind) { int i; Index: linux-i2c-test/drivers/hwmon/gl520sm.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/gl520sm.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/gl520sm.c 2005-11-09 13:43:07.000000000 +0100 @@ -99,7 +99,6 @@ That's why _TEMP2 and _IN4 access the sa * Function declarations */ -static int gl520_attach_adapter(struct i2c_adapter *adapter); static int gl520_detect(struct i2c_adapter *adapter, int address, int kind); static void gl520_init_client(struct i2c_client *client); static int gl520_detach_client(struct i2c_client *client); @@ -112,8 +111,10 @@ static struct i2c_driver gl520_driver = .owner = THIS_MODULE, .name = "gl520sm", .id = I2C_DRIVERID_GL520, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = gl520_attach_adapter, + .address_data = &addr_data, + .detect_client = gl520_detect, .detach_client = gl520_detach_client, }; @@ -515,13 +516,6 @@ static ssize_t set_beep_mask(struct i2c_ * Real code */ -static int gl520_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, gl520_detect); -} - static int gl520_detect(struct i2c_adapter *adapter, int address, int kind) { struct i2c_client *new_client; Index: linux-i2c-test/drivers/hwmon/lm92.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/lm92.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/lm92.c 2005-11-09 13:43:07.000000000 +0100 @@ -383,13 +383,6 @@ exit: return err; } -static int lm92_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, lm92_detect); -} - static int lm92_detach_client(struct i2c_client *client) { struct lm92_data *data = i2c_get_clientdata(client); @@ -413,8 +406,10 @@ static struct i2c_driver lm92_driver = { .owner = THIS_MODULE, .name = "lm92", .id = I2C_DRIVERID_LM92, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = lm92_attach_adapter, + .address_data = &addr_data, + .detect_client = lm92_detect, .detach_client = lm92_detach_client, }; Index: linux-i2c-test/drivers/hwmon/it87.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/it87.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/it87.c 2005-11-09 13:43:07.000000000 +0100 @@ -220,7 +220,6 @@ struct it87_data { }; -static int it87_attach_adapter(struct i2c_adapter *adapter); static int it87_isa_attach_adapter(struct i2c_adapter *adapter); static int it87_detect(struct i2c_adapter *adapter, int address, int kind); static int it87_detach_client(struct i2c_client *client); @@ -237,8 +236,10 @@ static struct i2c_driver it87_driver = { .owner = THIS_MODULE, .name = "it87", .id = I2C_DRIVERID_IT87, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = it87_attach_adapter, + .address_data = &addr_data, + .detect_client = it87_detect, .detach_client = it87_detach_client, }; @@ -689,17 +690,6 @@ static DEVICE_ATTR(cpu0_vid, S_IRUGO, sh #define device_create_file_vid(client) \ device_create_file(&client->dev, &dev_attr_cpu0_vid) -/* This function is called when: - * it87_driver is inserted (when this module is loaded), for each - available adapter - * when a new adapter is inserted (and it87_driver is still present) */ -static int it87_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, it87_detect); -} - static int it87_isa_attach_adapter(struct i2c_adapter *adapter) { return it87_detect(adapter, isa_address, -1); @@ -737,7 +727,6 @@ exit: return err; } -/* This function is called by i2c_probe */ static int it87_detect(struct i2c_adapter *adapter, int address, int kind) { int i; Index: linux-i2c-test/drivers/hwmon/lm63.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/lm63.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/lm63.c 2005-11-09 13:43:07.000000000 +0100 @@ -126,7 +126,6 @@ I2C_CLIENT_INSMOD_1(lm63); * Functions declaration */ -static int lm63_attach_adapter(struct i2c_adapter *adapter); static int lm63_detach_client(struct i2c_client *client); static struct lm63_data *lm63_update_device(struct device *dev); @@ -141,8 +140,10 @@ static void lm63_init_client(struct i2c_ static struct i2c_driver lm63_driver = { .owner = THIS_MODULE, .name = "lm63", + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = lm63_attach_adapter, + .address_data = &addr_data, + .detect_client = lm63_detect, .detach_client = lm63_detach_client, }; @@ -355,13 +356,6 @@ static DEVICE_ATTR(alarms, S_IRUGO, show * Real code */ -static int lm63_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, lm63_detect); -} - /* * The following function does more than just detection. If detection * succeeds, it also registers the new chip. Index: linux-i2c-test/drivers/hwmon/lm75.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/lm75.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/lm75.c 2005-11-09 13:43:07.000000000 +0100 @@ -55,7 +55,6 @@ struct lm75_data { u16 temp_hyst; }; -static int lm75_attach_adapter(struct i2c_adapter *adapter); static int lm75_detect(struct i2c_adapter *adapter, int address, int kind); static void lm75_init_client(struct i2c_client *client); static int lm75_detach_client(struct i2c_client *client); @@ -69,8 +68,10 @@ static struct i2c_driver lm75_driver = { .owner = THIS_MODULE, .name = "lm75", .id = I2C_DRIVERID_LM75, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = lm75_attach_adapter, + .address_data = &addr_data, + .detect_client = lm75_detect, .detach_client = lm75_detach_client, }; @@ -104,14 +105,6 @@ static DEVICE_ATTR(temp1_max, S_IWUSR | static DEVICE_ATTR(temp1_max_hyst, S_IWUSR | S_IRUGO, show_temp_hyst, set_temp_hyst); static DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_input, NULL); -static int lm75_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, lm75_detect); -} - -/* This function is called by i2c_probe */ static int lm75_detect(struct i2c_adapter *adapter, int address, int kind) { int i; Index: linux-i2c-test/drivers/hwmon/lm77.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/lm77.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/lm77.c 2005-11-09 13:43:07.000000000 +0100 @@ -62,7 +62,6 @@ struct lm77_data { u8 alarms; }; -static int lm77_attach_adapter(struct i2c_adapter *adapter); static int lm77_detect(struct i2c_adapter *adapter, int address, int kind); static void lm77_init_client(struct i2c_client *client); static int lm77_detach_client(struct i2c_client *client); @@ -76,8 +75,10 @@ static struct lm77_data *lm77_update_dev static struct i2c_driver lm77_driver = { .owner = THIS_MODULE, .name = "lm77", + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = lm77_attach_adapter, + .address_data = &addr_data, + .detect_client = lm77_detect, .detach_client = lm77_detach_client, }; @@ -204,14 +205,6 @@ static DEVICE_ATTR(temp1_max_hyst, S_IRU static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL); -static int lm77_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, lm77_detect); -} - -/* This function is called by i2c_probe */ static int lm77_detect(struct i2c_adapter *adapter, int address, int kind) { struct i2c_client *new_client; Index: linux-i2c-test/drivers/hwmon/lm78.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/lm78.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/lm78.c 2005-11-09 13:43:07.000000000 +0100 @@ -152,7 +152,6 @@ struct lm78_data { }; -static int lm78_attach_adapter(struct i2c_adapter *adapter); static int lm78_isa_attach_adapter(struct i2c_adapter *adapter); static int lm78_detect(struct i2c_adapter *adapter, int address, int kind); static int lm78_detach_client(struct i2c_client *client); @@ -167,8 +166,10 @@ static struct i2c_driver lm78_driver = { .owner = THIS_MODULE, .name = "lm78", .id = I2C_DRIVERID_LM78, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = lm78_attach_adapter, + .address_data = &addr_data, + .detect_client = lm78_detect, .detach_client = lm78_detach_client, }; @@ -463,23 +464,11 @@ static ssize_t show_alarms(struct device } static DEVICE_ATTR(alarms, S_IRUGO, show_alarms, NULL); -/* This function is called when: - * lm78_driver is inserted (when this module is loaded), for each - available adapter - * when a new adapter is inserted (and lm78_driver is still present) */ -static int lm78_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, lm78_detect); -} - static int lm78_isa_attach_adapter(struct i2c_adapter *adapter) { return lm78_detect(adapter, isa_address, -1); } -/* This function is called by i2c_probe */ static int lm78_detect(struct i2c_adapter *adapter, int address, int kind) { int i, err; Index: linux-i2c-test/drivers/hwmon/lm80.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/lm80.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/lm80.c 2005-11-09 13:43:07.000000000 +0100 @@ -130,7 +130,6 @@ struct lm80_data { * Functions declaration */ -static int lm80_attach_adapter(struct i2c_adapter *adapter); static int lm80_detect(struct i2c_adapter *adapter, int address, int kind); static void lm80_init_client(struct i2c_client *client); static int lm80_detach_client(struct i2c_client *client); @@ -146,8 +145,10 @@ static struct i2c_driver lm80_driver = { .owner = THIS_MODULE, .name = "lm80", .id = I2C_DRIVERID_LM80, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = lm80_attach_adapter, + .address_data = &addr_data, + .detect_client = lm80_detect, .detach_client = lm80_detach_client, }; @@ -386,13 +387,6 @@ static DEVICE_ATTR(alarms, S_IRUGO, show * Real code */ -static int lm80_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, lm80_detect); -} - static int lm80_detect(struct i2c_adapter *adapter, int address, int kind) { int i, cur; Index: linux-i2c-test/drivers/hwmon/lm83.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/lm83.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/lm83.c 2005-11-09 13:43:07.000000000 +0100 @@ -114,7 +114,6 @@ static const u8 LM83_REG_W_HIGH[] = { * Functions declaration */ -static int lm83_attach_adapter(struct i2c_adapter *adapter); static int lm83_detect(struct i2c_adapter *adapter, int address, int kind); static int lm83_detach_client(struct i2c_client *client); static struct lm83_data *lm83_update_device(struct device *dev); @@ -127,8 +126,10 @@ static struct i2c_driver lm83_driver = { .owner = THIS_MODULE, .name = "lm83", .id = I2C_DRIVERID_LM83, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = lm83_attach_adapter, + .address_data = &addr_data, + .detect_client = lm83_detect, .detach_client = lm83_detach_client, }; @@ -209,13 +210,6 @@ static DEVICE_ATTR(alarms, S_IRUGO, show * Real code */ -static int lm83_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, lm83_detect); -} - /* * The following function does more than just detection. If detection * succeeds, it also registers the new chip. Index: linux-i2c-test/drivers/hwmon/lm85.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/lm85.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/lm85.c 2005-11-09 13:43:07.000000000 +0100 @@ -368,7 +368,6 @@ struct lm85_data { struct lm85_zone zone[3]; }; -static int lm85_attach_adapter(struct i2c_adapter *adapter); static int lm85_detect(struct i2c_adapter *adapter, int address, int kind); static int lm85_detach_client(struct i2c_client *client); @@ -383,8 +382,10 @@ static struct i2c_driver lm85_driver = { .owner = THIS_MODULE, .name = "lm85", .id = I2C_DRIVERID_LM85, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = lm85_attach_adapter, + .address_data = &addr_data, + .detect_client = lm85_detect, .detach_client = lm85_detach_client, }; @@ -1007,13 +1008,6 @@ temp_auto(1); temp_auto(2); temp_auto(3); -static int lm85_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, lm85_detect); -} - static int lm85_detect(struct i2c_adapter *adapter, int address, int kind) { Index: linux-i2c-test/drivers/hwmon/lm87.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/lm87.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/lm87.c 2005-11-09 13:43:07.000000000 +0100 @@ -150,7 +150,6 @@ static u8 LM87_REG_TEMP_LOW[3] = { 0x3A, * Functions declaration */ -static int lm87_attach_adapter(struct i2c_adapter *adapter); static int lm87_detect(struct i2c_adapter *adapter, int address, int kind); static void lm87_init_client(struct i2c_client *client); static int lm87_detach_client(struct i2c_client *client); @@ -164,8 +163,10 @@ static struct i2c_driver lm87_driver = { .owner = THIS_MODULE, .name = "lm87", .id = I2C_DRIVERID_LM87, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = lm87_attach_adapter, + .address_data = &addr_data, + .detect_client = lm87_detect, .detach_client = lm87_detach_client, }; @@ -534,13 +535,6 @@ static DEVICE_ATTR(aout_output, S_IRUGO * Real code */ -static int lm87_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, lm87_detect); -} - /* * The following function does more than just detection. If detection * succeeds, it also registers the new chip. Index: linux-i2c-test/drivers/hwmon/lm90.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/lm90.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/lm90.c 2005-11-09 13:43:07.000000000 +0100 @@ -174,7 +174,6 @@ I2C_CLIENT_INSMOD_6(lm90, adm1032, lm99, * Functions declaration */ -static int lm90_attach_adapter(struct i2c_adapter *adapter); static int lm90_detect(struct i2c_adapter *adapter, int address, int kind); static void lm90_init_client(struct i2c_client *client); @@ -189,8 +188,10 @@ static struct i2c_driver lm90_driver = { .owner = THIS_MODULE, .name = "lm90", .id = I2C_DRIVERID_LM90, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = lm90_attach_adapter, + .address_data = &addr_data, + .detect_client = lm90_detect, .detach_client = lm90_detach_client, }; @@ -413,13 +414,6 @@ static int lm90_read_reg(struct i2c_clie return 0; } -static int lm90_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, lm90_detect); -} - /* * The following function does more than just detection. If detection * succeeds, it also registers the new chip. Index: linux-i2c-test/drivers/hwmon/max1619.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/max1619.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/max1619.c 2005-11-09 13:43:07.000000000 +0100 @@ -78,7 +78,6 @@ I2C_CLIENT_INSMOD_1(max1619); * Functions declaration */ -static int max1619_attach_adapter(struct i2c_adapter *adapter); static int max1619_detect(struct i2c_adapter *adapter, int address, int kind); static void max1619_init_client(struct i2c_client *client); @@ -92,8 +91,10 @@ static struct max1619_data *max1619_upda static struct i2c_driver max1619_driver = { .owner = THIS_MODULE, .name = "max1619", + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = max1619_attach_adapter, + .address_data = &addr_data, + .detect_client = max1619_detect, .detach_client = max1619_detach_client, }; @@ -175,13 +176,6 @@ static DEVICE_ATTR(alarms, S_IRUGO, show * Real code */ -static int max1619_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, max1619_detect); -} - /* * The following function does more than just detection. If detection * succeeds, it also registers the new chip. Index: linux-i2c-test/drivers/hwmon/w83781d.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/w83781d.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/w83781d.c 2005-11-09 13:43:07.000000000 +0100 @@ -257,7 +257,6 @@ struct w83781d_data { u8 vrm; }; -static int w83781d_attach_adapter(struct i2c_adapter *adapter); static int w83781d_isa_attach_adapter(struct i2c_adapter *adapter); static int w83781d_detect(struct i2c_adapter *adapter, int address, int kind); static int w83781d_detach_client(struct i2c_client *client); @@ -272,8 +271,10 @@ static struct i2c_driver w83781d_driver .owner = THIS_MODULE, .name = "w83781d", .id = I2C_DRIVERID_W83781D, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = w83781d_attach_adapter, + .address_data = &addr_data, + .detect_client = w83781d_detect, .detach_client = w83781d_detach_client, }; @@ -859,18 +860,6 @@ do { \ device_create_file(&client->dev, &dev_attr_temp##offset##_type); \ } while (0) -/* This function is called when: - * w83781d_driver is inserted (when this module is loaded), for each - available adapter - * when a new adapter is inserted (and w83781d_driver is still present) */ -static int -w83781d_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, w83781d_detect); -} - static int w83781d_isa_attach_adapter(struct i2c_adapter *adapter) { Index: linux-i2c-test/drivers/hwmon/w83792d.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/w83792d.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/w83792d.c 2005-11-09 13:43:07.000000000 +0100 @@ -300,7 +300,6 @@ struct w83792d_data { u8 sf2_levels[3][4]; /* Smart FanII: Fan1,2,3 duty cycle levels */ }; -static int w83792d_attach_adapter(struct i2c_adapter *adapter); static int w83792d_detect(struct i2c_adapter *adapter, int address, int kind); static int w83792d_detach_client(struct i2c_client *client); @@ -318,8 +317,10 @@ static void w83792d_init_client(struct i static struct i2c_driver w83792d_driver = { .owner = THIS_MODULE, .name = "w83792d", + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = w83792d_attach_adapter, + .address_data = &addr_data, + .detect_client = w83792d_detect, .detach_client = w83792d_detach_client, }; @@ -1065,19 +1066,6 @@ device_create_file(&client->dev, \ } while (0) -/* This function is called when: - * w83792d_driver is inserted (when this module is loaded), for each - available adapter - * when a new adapter is inserted (and w83792d_driver is still present) */ -static int -w83792d_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, w83792d_detect); -} - - static int w83792d_create_subclient(struct i2c_adapter *adapter, struct i2c_client *new_client, int addr, Index: linux-i2c-test/drivers/hwmon/w83l785ts.c =================================================================== --- linux-i2c-test.orig/drivers/hwmon/w83l785ts.c 2005-11-09 13:42:03.000000000 +0100 +++ linux-i2c-test/drivers/hwmon/w83l785ts.c 2005-11-09 13:43:07.000000000 +0100 @@ -80,7 +80,6 @@ I2C_CLIENT_INSMOD_1(w83l785ts); * Functions declaration */ -static int w83l785ts_attach_adapter(struct i2c_adapter *adapter); static int w83l785ts_detect(struct i2c_adapter *adapter, int address, int kind); static int w83l785ts_detach_client(struct i2c_client *client); @@ -95,8 +94,10 @@ static struct i2c_driver w83l785ts_drive .owner = THIS_MODULE, .name = "w83l785ts", .id = I2C_DRIVERID_W83L785TS, + .class = I2C_CLASS_HWMON, .flags = I2C_DF_NOTIFY, - .attach_adapter = w83l785ts_attach_adapter, + .address_data = &addr_data, + .detect_client = w83l785ts_detect, .detach_client = w83l785ts_detach_client, }; @@ -135,13 +136,6 @@ static SENSOR_DEVICE_ATTR(temp1_max, S_I * Real code */ -static int w83l785ts_attach_adapter(struct i2c_adapter *adapter) -{ - if (!(adapter->class & I2C_CLASS_HWMON)) - return 0; - return i2c_probe(adapter, &addr_data, w83l785ts_detect); -} - /* * The following function does more than just detection. If detection * succeeds, it also registers the new chip. -- Best regards, Alessandro Zummo, Tower Technologies - Turin, Italy http://www.towertech.it