aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon/it87.c
diff options
context:
space:
mode:
authorJean Delvare <khali@linux-fr.org>2005-07-19 17:56:35 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2005-09-05 12:14:10 -0400
commit2d8672c5a6ba0d3f1d8d3ad61ef67868941364f0 (patch)
treef01f038198bad63fee4c7d23af806ad0ab4e5071 /drivers/hwmon/it87.c
parent5042c7d752fe72c6924037058367f63902e68c5c (diff)
[PATCH] I2C: Separate non-i2c hwmon drivers from i2c-core (5/9)
Call the ISA chip drivers detection function directly instead of relying on i2c_detect. The net effect is that address lists won't be handled anymore, but they were mostly useless in the ISA case anyway (pc87360, smsc47m1, smsc47b397 had already dropped them). We don't need to handle multiple devices, all we may need is a way to force a given address instead of the original one (some drivers already do: sis5595, via686a, w83627hf), and, for drivers supporting multiple chips, a way to force one given kind. All this may be added later on demand, but I actually don't think there will be much demand. Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/hwmon/it87.c')
-rw-r--r--drivers/hwmon/it87.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c
index a438adb4b09f..722ef0cd5c00 100644
--- a/drivers/hwmon/it87.c
+++ b/drivers/hwmon/it87.c
@@ -48,7 +48,8 @@
48/* Addresses to scan */ 48/* Addresses to scan */
49static unsigned short normal_i2c[] = { 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 49static unsigned short normal_i2c[] = { 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,
50 0x2e, 0x2f, I2C_CLIENT_END }; 50 0x2e, 0x2f, I2C_CLIENT_END };
51static unsigned int normal_isa[] = { 0x0290, I2C_CLIENT_ISA_END }; 51static unsigned int normal_isa[] = { I2C_CLIENT_ISA_END };
52static unsigned short isa_address = 0x290;
52 53
53/* Insmod parameters */ 54/* Insmod parameters */
54SENSORS_INSMOD_2(it87, it8712); 55SENSORS_INSMOD_2(it87, it8712);
@@ -222,7 +223,7 @@ struct it87_data {
222 223
223 224
224static int it87_attach_adapter(struct i2c_adapter *adapter); 225static int it87_attach_adapter(struct i2c_adapter *adapter);
225static int it87_find(int *address); 226static int it87_isa_attach_adapter(struct i2c_adapter *adapter);
226static int it87_detect(struct i2c_adapter *adapter, int address, int kind); 227static int it87_detect(struct i2c_adapter *adapter, int address, int kind);
227static int it87_detach_client(struct i2c_client *client); 228static int it87_detach_client(struct i2c_client *client);
228 229
@@ -246,7 +247,7 @@ static struct i2c_driver it87_driver = {
246static struct i2c_driver it87_isa_driver = { 247static struct i2c_driver it87_isa_driver = {
247 .owner = THIS_MODULE, 248 .owner = THIS_MODULE,
248 .name = "it87-isa", 249 .name = "it87-isa",
249 .attach_adapter = it87_attach_adapter, 250 .attach_adapter = it87_isa_attach_adapter,
250 .detach_client = it87_detach_client, 251 .detach_client = it87_detach_client,
251}; 252};
252 253
@@ -701,7 +702,12 @@ static int it87_attach_adapter(struct i2c_adapter *adapter)
701 return i2c_detect(adapter, &addr_data, it87_detect); 702 return i2c_detect(adapter, &addr_data, it87_detect);
702} 703}
703 704
704/* SuperIO detection - will change normal_isa[0] if a chip is found */ 705static int it87_isa_attach_adapter(struct i2c_adapter *adapter)
706{
707 return it87_detect(adapter, isa_address, -1);
708}
709
710/* SuperIO detection - will change isa_address if a chip is found */
705static int it87_find(int *address) 711static int it87_find(int *address)
706{ 712{
707 int err = -ENODEV; 713 int err = -ENODEV;
@@ -1184,7 +1190,7 @@ static int __init sm_it87_init(void)
1184 int addr, res; 1190 int addr, res;
1185 1191
1186 if (!it87_find(&addr)) { 1192 if (!it87_find(&addr)) {
1187 normal_isa[0] = addr; 1193 isa_address = addr;
1188 } 1194 }
1189 1195
1190 res = i2c_add_driver(&it87_driver); 1196 res = i2c_add_driver(&it87_driver);