aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean Delvare <jdelvare@suse.de>2014-06-11 12:35:56 -0400
committerGuenter Roeck <linux@roeck-us.net>2014-06-12 11:36:30 -0400
commit590e8534447ce9f2f5e5e64681764079530ee8c7 (patch)
tree47731f746bb1b036a9fb8e8c36375104335e8928
parentc0214f98943b1fe43f7be61b7782b0c8f0836f28 (diff)
hwmon: (lm85) Drop generic detection
Generic detection leads to too many false positives, so drop it. FWIW sensors-detect does not have such generic detection. If the user wants to force the driver to bind to a not yet supported chip, he/she can still do so using sysfs attribute new_device. Signed-off-by: Jean Delvare <jdelvare@suse.de> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
-rw-r--r--drivers/hwmon/lm85.c33
1 files changed, 10 insertions, 23 deletions
diff --git a/drivers/hwmon/lm85.c b/drivers/hwmon/lm85.c
index bed4af358308..b0129a54e1a6 100644
--- a/drivers/hwmon/lm85.c
+++ b/drivers/hwmon/lm85.c
@@ -5,7 +5,7 @@
5 * Copyright (c) 2002, 2003 Philip Pokorny <ppokorny@penguincomputing.com> 5 * Copyright (c) 2002, 2003 Philip Pokorny <ppokorny@penguincomputing.com>
6 * Copyright (c) 2003 Margit Schubert-While <margitsw@t-online.de> 6 * Copyright (c) 2003 Margit Schubert-While <margitsw@t-online.de>
7 * Copyright (c) 2004 Justin Thiessen <jthiessen@penguincomputing.com> 7 * Copyright (c) 2004 Justin Thiessen <jthiessen@penguincomputing.com>
8 * Copyright (C) 2007--2009 Jean Delvare <jdelvare@suse.de> 8 * Copyright (C) 2007--2014 Jean Delvare <jdelvare@suse.de>
9 * 9 *
10 * Chip details at <http://www.national.com/ds/LM/LM85.pdf> 10 * Chip details at <http://www.national.com/ds/LM/LM85.pdf>
11 * 11 *
@@ -39,7 +39,7 @@
39static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END }; 39static const unsigned short normal_i2c[] = { 0x2c, 0x2d, 0x2e, I2C_CLIENT_END };
40 40
41enum chips { 41enum chips {
42 any_chip, lm85b, lm85c, 42 lm85,
43 adm1027, adt7463, adt7468, 43 adm1027, adt7463, adt7468,
44 emc6d100, emc6d102, emc6d103, emc6d103s 44 emc6d100, emc6d102, emc6d103, emc6d103s
45}; 45};
@@ -75,9 +75,6 @@ enum chips {
75#define LM85_COMPANY_NATIONAL 0x01 75#define LM85_COMPANY_NATIONAL 0x01
76#define LM85_COMPANY_ANALOG_DEV 0x41 76#define LM85_COMPANY_ANALOG_DEV 0x41
77#define LM85_COMPANY_SMSC 0x5c 77#define LM85_COMPANY_SMSC 0x5c
78#define LM85_VERSTEP_VMASK 0xf0
79#define LM85_VERSTEP_GENERIC 0x60
80#define LM85_VERSTEP_GENERIC2 0x70
81#define LM85_VERSTEP_LM85C 0x60 78#define LM85_VERSTEP_LM85C 0x60
82#define LM85_VERSTEP_LM85B 0x62 79#define LM85_VERSTEP_LM85B 0x62
83#define LM85_VERSTEP_LM96000_1 0x68 80#define LM85_VERSTEP_LM96000_1 0x68
@@ -351,9 +348,9 @@ static const struct i2c_device_id lm85_id[] = {
351 { "adm1027", adm1027 }, 348 { "adm1027", adm1027 },
352 { "adt7463", adt7463 }, 349 { "adt7463", adt7463 },
353 { "adt7468", adt7468 }, 350 { "adt7468", adt7468 },
354 { "lm85", any_chip }, 351 { "lm85", lm85 },
355 { "lm85b", lm85b }, 352 { "lm85b", lm85 },
356 { "lm85c", lm85c }, 353 { "lm85c", lm85 },
357 { "emc6d100", emc6d100 }, 354 { "emc6d100", emc6d100 },
358 { "emc6d101", emc6d100 }, 355 { "emc6d101", emc6d100 },
359 { "emc6d102", emc6d102 }, 356 { "emc6d102", emc6d102 },
@@ -1281,7 +1278,7 @@ static int lm85_detect(struct i2c_client *client, struct i2c_board_info *info)
1281{ 1278{
1282 struct i2c_adapter *adapter = client->adapter; 1279 struct i2c_adapter *adapter = client->adapter;
1283 int address = client->addr; 1280 int address = client->addr;
1284 const char *type_name; 1281 const char *type_name = NULL;
1285 int company, verstep; 1282 int company, verstep;
1286 1283
1287 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) { 1284 if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) {
@@ -1297,16 +1294,6 @@ static int lm85_detect(struct i2c_client *client, struct i2c_board_info *info)
1297 "Detecting device at 0x%02x with COMPANY: 0x%02x and VERSTEP: 0x%02x\n", 1294 "Detecting device at 0x%02x with COMPANY: 0x%02x and VERSTEP: 0x%02x\n",
1298 address, company, verstep); 1295 address, company, verstep);
1299 1296
1300 /* All supported chips have the version in common */
1301 if ((verstep & LM85_VERSTEP_VMASK) != LM85_VERSTEP_GENERIC &&
1302 (verstep & LM85_VERSTEP_VMASK) != LM85_VERSTEP_GENERIC2) {
1303 dev_dbg(&adapter->dev,
1304 "Autodetection failed: unsupported version\n");
1305 return -ENODEV;
1306 }
1307 type_name = "lm85";
1308
1309 /* Now, refine the detection */
1310 if (company == LM85_COMPANY_NATIONAL) { 1297 if (company == LM85_COMPANY_NATIONAL) {
1311 switch (verstep) { 1298 switch (verstep) {
1312 case LM85_VERSTEP_LM85C: 1299 case LM85_VERSTEP_LM85C:
@@ -1323,6 +1310,7 @@ static int lm85_detect(struct i2c_client *client, struct i2c_board_info *info)
1323 "Found Winbond WPCD377I, ignoring\n"); 1310 "Found Winbond WPCD377I, ignoring\n");
1324 return -ENODEV; 1311 return -ENODEV;
1325 } 1312 }
1313 type_name = "lm85";
1326 break; 1314 break;
1327 } 1315 }
1328 } else if (company == LM85_COMPANY_ANALOG_DEV) { 1316 } else if (company == LM85_COMPANY_ANALOG_DEV) {
@@ -1357,12 +1345,11 @@ static int lm85_detect(struct i2c_client *client, struct i2c_board_info *info)
1357 type_name = "emc6d103s"; 1345 type_name = "emc6d103s";
1358 break; 1346 break;
1359 } 1347 }
1360 } else {
1361 dev_dbg(&adapter->dev,
1362 "Autodetection failed: unknown vendor\n");
1363 return -ENODEV;
1364 } 1348 }
1365 1349
1350 if (!type_name)
1351 return -ENODEV;
1352
1366 strlcpy(info->type, type_name, I2C_NAME_SIZE); 1353 strlcpy(info->type, type_name, I2C_NAME_SIZE);
1367 1354
1368 return 0; 1355 return 0;