diff options
Diffstat (limited to 'drivers/hwmon/dme1737.c')
-rw-r--r-- | drivers/hwmon/dme1737.c | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/drivers/hwmon/dme1737.c b/drivers/hwmon/dme1737.c index 27d62574284f..4377bb0cc526 100644 --- a/drivers/hwmon/dme1737.c +++ b/drivers/hwmon/dme1737.c | |||
@@ -2220,33 +2220,23 @@ static int dme1737_i2c_detect(struct i2c_client *client, int kind, | |||
2220 | return -ENODEV; | 2220 | return -ENODEV; |
2221 | } | 2221 | } |
2222 | 2222 | ||
2223 | /* A negative kind means that the driver was loaded with no force | 2223 | company = i2c_smbus_read_byte_data(client, DME1737_REG_COMPANY); |
2224 | * parameter (default), so we must identify the chip. */ | 2224 | verstep = i2c_smbus_read_byte_data(client, DME1737_REG_VERSTEP); |
2225 | if (kind < 0) { | ||
2226 | company = i2c_smbus_read_byte_data(client, DME1737_REG_COMPANY); | ||
2227 | verstep = i2c_smbus_read_byte_data(client, DME1737_REG_VERSTEP); | ||
2228 | |||
2229 | if (company == DME1737_COMPANY_SMSC && | ||
2230 | (verstep & DME1737_VERSTEP_MASK) == DME1737_VERSTEP) { | ||
2231 | kind = dme1737; | ||
2232 | } else if (company == DME1737_COMPANY_SMSC && | ||
2233 | verstep == SCH5027_VERSTEP) { | ||
2234 | kind = sch5027; | ||
2235 | } else { | ||
2236 | return -ENODEV; | ||
2237 | } | ||
2238 | } | ||
2239 | 2225 | ||
2240 | if (kind == sch5027) { | 2226 | if (company == DME1737_COMPANY_SMSC && |
2227 | verstep == SCH5027_VERSTEP) { | ||
2241 | name = "sch5027"; | 2228 | name = "sch5027"; |
2242 | } else { | 2229 | |
2243 | kind = dme1737; | 2230 | } else if (company == DME1737_COMPANY_SMSC && |
2231 | (verstep & DME1737_VERSTEP_MASK) == DME1737_VERSTEP) { | ||
2244 | name = "dme1737"; | 2232 | name = "dme1737"; |
2233 | } else { | ||
2234 | return -ENODEV; | ||
2245 | } | 2235 | } |
2246 | 2236 | ||
2247 | dev_info(dev, "Found a %s chip at 0x%02x (rev 0x%02x).\n", | 2237 | dev_info(dev, "Found a %s chip at 0x%02x (rev 0x%02x).\n", |
2248 | kind == sch5027 ? "SCH5027" : "DME1737", client->addr, | 2238 | verstep == SCH5027_VERSTEP ? "SCH5027" : "DME1737", |
2249 | verstep); | 2239 | client->addr, verstep); |
2250 | strlcpy(info->type, name, I2C_NAME_SIZE); | 2240 | strlcpy(info->type, name, I2C_NAME_SIZE); |
2251 | 2241 | ||
2252 | return 0; | 2242 | return 0; |