hwmon: (lm75) Strengthen detect function
authorGuenter Roeck <linux@roeck-us.net>
Thu, 4 Dec 2014 17:58:15 +0000 (09:58 -0800)
committerGuenter Roeck <linux@roeck-us.net>
Fri, 5 Dec 2014 18:18:02 +0000 (10:18 -0800)
A chip returning 0x00 in all registers is erroneously detected
as LM75. Check hysteresis and temperature limit registers and
abort if both are 0 to reduce the likelyhood for this to happen.

Reviewed-by: Rob Coulson <rob.coulson@gmail.com>
Reviewed-by: Jean Delvare <jdelvare@suse.de>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/lm75.c

index f58439b817b5db244077c47a9dfbbdca99d62638..6753fd940c7623a0fbbd2790c7b7bf5af43f2a18 100644 (file)
@@ -415,6 +415,12 @@ static int lm75_detect(struct i2c_client *new_client,
                 || i2c_smbus_read_byte_data(new_client, 7) != os)
                        return -ENODEV;
        }
+       /*
+        * It is very unlikely that this is a LM75 if both
+        * hysteresis and temperature limit registers are 0.
+        */
+       if (hyst == 0 && os == 0)
+               return -ENODEV;
 
        /* Addresses cycling */
        for (i = 8; i <= 248; i += 40) {