Commit 590e8534 authored by Jean Delvare's avatar Jean Delvare Committed by Guenter Roeck

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: default avatarJean Delvare <jdelvare@suse.de>
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent c0214f98
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* Copyright (c) 2002, 2003 Philip Pokorny <ppokorny@penguincomputing.com> * Copyright (c) 2002, 2003 Philip Pokorny <ppokorny@penguincomputing.com>
* Copyright (c) 2003 Margit Schubert-While <margitsw@t-online.de> * Copyright (c) 2003 Margit Schubert-While <margitsw@t-online.de>
* Copyright (c) 2004 Justin Thiessen <jthiessen@penguincomputing.com> * Copyright (c) 2004 Justin Thiessen <jthiessen@penguincomputing.com>
* Copyright (C) 2007--2009 Jean Delvare <jdelvare@suse.de> * Copyright (C) 2007--2014 Jean Delvare <jdelvare@suse.de>
* *
* Chip details at <http://www.national.com/ds/LM/LM85.pdf> * Chip details at <http://www.national.com/ds/LM/LM85.pdf>
* *
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,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 { enum chips {
any_chip, lm85b, lm85c, lm85,
adm1027, adt7463, adt7468, adm1027, adt7463, adt7468,
emc6d100, emc6d102, emc6d103, emc6d103s emc6d100, emc6d102, emc6d103, emc6d103s
}; };
...@@ -75,9 +75,6 @@ enum chips { ...@@ -75,9 +75,6 @@ enum chips {
#define LM85_COMPANY_NATIONAL 0x01 #define LM85_COMPANY_NATIONAL 0x01
#define LM85_COMPANY_ANALOG_DEV 0x41 #define LM85_COMPANY_ANALOG_DEV 0x41
#define LM85_COMPANY_SMSC 0x5c #define LM85_COMPANY_SMSC 0x5c
#define LM85_VERSTEP_VMASK 0xf0
#define LM85_VERSTEP_GENERIC 0x60
#define LM85_VERSTEP_GENERIC2 0x70
#define LM85_VERSTEP_LM85C 0x60 #define LM85_VERSTEP_LM85C 0x60
#define LM85_VERSTEP_LM85B 0x62 #define LM85_VERSTEP_LM85B 0x62
#define LM85_VERSTEP_LM96000_1 0x68 #define LM85_VERSTEP_LM96000_1 0x68
...@@ -351,9 +348,9 @@ static const struct i2c_device_id lm85_id[] = { ...@@ -351,9 +348,9 @@ static const struct i2c_device_id lm85_id[] = {
{ "adm1027", adm1027 }, { "adm1027", adm1027 },
{ "adt7463", adt7463 }, { "adt7463", adt7463 },
{ "adt7468", adt7468 }, { "adt7468", adt7468 },
{ "lm85", any_chip }, { "lm85", lm85 },
{ "lm85b", lm85b }, { "lm85b", lm85 },
{ "lm85c", lm85c }, { "lm85c", lm85 },
{ "emc6d100", emc6d100 }, { "emc6d100", emc6d100 },
{ "emc6d101", emc6d100 }, { "emc6d101", emc6d100 },
{ "emc6d102", emc6d102 }, { "emc6d102", emc6d102 },
...@@ -1281,7 +1278,7 @@ static int lm85_detect(struct i2c_client *client, struct i2c_board_info *info) ...@@ -1281,7 +1278,7 @@ static int lm85_detect(struct i2c_client *client, 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;
const char *type_name; const char *type_name = NULL;
int company, verstep; int company, verstep;
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) { 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,16 +1294,6 @@ static int lm85_detect(struct i2c_client *client, struct i2c_board_info *info)
"Detecting device at 0x%02x with COMPANY: 0x%02x and VERSTEP: 0x%02x\n", "Detecting device at 0x%02x with COMPANY: 0x%02x and VERSTEP: 0x%02x\n",
address, company, verstep); address, company, verstep);
/* All supported chips have the version in common */
if ((verstep & LM85_VERSTEP_VMASK) != LM85_VERSTEP_GENERIC &&
(verstep & LM85_VERSTEP_VMASK) != LM85_VERSTEP_GENERIC2) {
dev_dbg(&adapter->dev,
"Autodetection failed: unsupported version\n");
return -ENODEV;
}
type_name = "lm85";
/* Now, refine the detection */
if (company == LM85_COMPANY_NATIONAL) { if (company == LM85_COMPANY_NATIONAL) {
switch (verstep) { switch (verstep) {
case LM85_VERSTEP_LM85C: case LM85_VERSTEP_LM85C:
...@@ -1323,6 +1310,7 @@ static int lm85_detect(struct i2c_client *client, struct i2c_board_info *info) ...@@ -1323,6 +1310,7 @@ static int lm85_detect(struct i2c_client *client, struct i2c_board_info *info)
"Found Winbond WPCD377I, ignoring\n"); "Found Winbond WPCD377I, ignoring\n");
return -ENODEV; return -ENODEV;
} }
type_name = "lm85";
break; break;
} }
} else if (company == LM85_COMPANY_ANALOG_DEV) { } 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,12 +1345,11 @@ static int lm85_detect(struct i2c_client *client, struct i2c_board_info *info)
type_name = "emc6d103s"; type_name = "emc6d103s";
break; break;
} }
} else {
dev_dbg(&adapter->dev,
"Autodetection failed: unknown vendor\n");
return -ENODEV;
} }
if (!type_name)
return -ENODEV;
strlcpy(info->type, type_name, I2C_NAME_SIZE); strlcpy(info->type, type_name, I2C_NAME_SIZE);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment