hwmon: (w83795) Fix LSB reading of fan speeds
authorJean Delvare <khali@linux-fr.org>
Thu, 28 Oct 2010 18:31:46 +0000 (20:31 +0200)
committerJean Delvare <khali@endymion.delvare>
Thu, 28 Oct 2010 18:31:46 +0000 (20:31 +0200)
Misplaced parentheses caused the wrong register value to be read,
resulting in random LSB for fan speed values and limits.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
drivers/hwmon/w83795.c

index b797b9ce2907648e5ddbded083c20052b96da9df..24e44245e548090808dc6ae7e5a2f663f0fc3f38 100644 (file)
@@ -272,7 +272,7 @@ static inline u16 in_to_reg(u8 index, u16 val)
 
 static inline unsigned long fan_from_reg(u16 val)
 {
-       if ((val >= 0xff0) || (val == 0))
+       if ((val == 0xfff) || (val == 0))
                return 0;
        return 1350000UL / val;
 }
@@ -456,7 +456,7 @@ static struct w83795_data *w83795_update_device(struct device *dev)
                        continue;
                data->fan[i] = w83795_read(client, W83795_REG_FAN(i)) << 4;
                data->fan[i] |=
-                 (w83795_read(client, W83795_REG_VRLSB >> 4)) & 0x0F;
+                 (w83795_read(client, W83795_REG_VRLSB) >> 4) & 0x0F;
        }
 
        /* Update temperature */
@@ -1940,11 +1940,11 @@ static int w83795_probe(struct i2c_client *client,
                data->fan_min[i] =
                        w83795_read(client, W83795_REG_FAN_MIN_HL(i)) << 4;
                data->fan_min[i] |=
-                 (w83795_read(client, W83795_REG_FAN_MIN_LSB(i) >>
-                       W83795_REG_FAN_MIN_LSB_SHIFT(i))) & 0x0F;
+                 (w83795_read(client, W83795_REG_FAN_MIN_LSB(i)) >>
+                       W83795_REG_FAN_MIN_LSB_SHIFT(i)) & 0x0F;
                data->fan[i] = w83795_read(client, W83795_REG_FAN(i)) << 4;
                data->fan[i] |=
-                 (w83795_read(client, W83795_REG_VRLSB >> 4)) & 0x0F;
+                 (w83795_read(client, W83795_REG_VRLSB) >> 4) & 0x0F;
        }
 
        /* temperature and limits */