hwmon: (lm75) Per-chip configuration register initialization
authorJean Delvare <khali@linux-fr.org>
Sat, 4 May 2013 12:49:36 +0000 (14:49 +0200)
committerJean Delvare <khali@endymion.delvare>
Sat, 4 May 2013 12:49:36 +0000 (14:49 +0200)
There is no standard for the configuration register bits of LM75-like
chips. We shouldn't blindly clear bits setting the resolution as they
are either unused or used for something else on some of the supported
chips.

So, switch to per-chip configuration initialization. This will allow
for better tuning later, for example using more resolution bits when
available.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/lm75.c

index 291edfff55bfa033191448f69846603e5336eca6..4670fbef6a9c84d9b1ee3fa34dcbc11e2bbe4da5 100644 (file)
@@ -167,8 +167,28 @@ lm75_probe(struct i2c_client *client, const struct i2c_device_id *id)
         * Then tweak to be more precise when appropriate.
         */
        set_mask = 0;
-       clr_mask = (1 << 0)                     /* continuous conversions */
-               | (1 << 6) | (1 << 5);          /* 9-bit mode */
+       clr_mask = LM75_SHUTDOWN;               /* continuous conversions */
+
+       switch (id->driver_data) {
+       case adt75:
+               clr_mask |= 1 << 5;             /* not one-shot mode */
+               break;
+       case ds1775:
+       case ds75:
+       case stds75:
+               clr_mask |= 3 << 5;             /* 9-bit mode */
+               break;
+       case mcp980x:
+       case tmp100:
+       case tmp101:
+       case tmp105:
+       case tmp175:
+       case tmp275:
+       case tmp75:
+               clr_mask |= 3 << 5;             /* 9-bit mode */
+               clr_mask |= 1 << 7;             /* not one-shot mode */
+               break;
+       }
 
        /* configure as specified */
        status = lm75_read_value(client, LM75_REG_CONF);