aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hwmon/it87.c
diff options
context:
space:
mode:
authorJean Delvare <khali@linux-fr.org>2006-08-28 08:37:54 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2006-09-28 18:31:13 -0400
commitc5df9b7a7c7600e4365e81f64ea44beb5be8bfa7 (patch)
tree8a896e389021b6a8d5870336d3781e025a4d37b2 /drivers/hwmon/it87.c
parent87673dd735b8e089b7f2830edd353aa5f5e743ad (diff)
it87: Overwrite broken default limits
it87: Overwrite broken default limits Some IT8716F chips where seen with unreasonable defaults for low voltage and high temperature limits. Overwrite them with sane defaults so as to not generate meaningless alarms. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/hwmon/it87.c')
-rw-r--r--drivers/hwmon/it87.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c
index 956cd553c711..de62f60bcaf1 100644
--- a/drivers/hwmon/it87.c
+++ b/drivers/hwmon/it87.c
@@ -1202,6 +1202,22 @@ static void it87_init_client(struct i2c_client *client, struct it87_data *data)
1202 data->manual_pwm_ctl[i] = 0xff; 1202 data->manual_pwm_ctl[i] = 0xff;
1203 } 1203 }
1204 1204
1205 /* Some chips seem to have default value 0xff for all limit
1206 * registers. For low voltage limits it makes no sense and triggers
1207 * alarms, so change to 0 instead. For high temperature limits, it
1208 * means -1 degree C, which surprisingly doesn't trigger an alarm,
1209 * but is still confusing, so change to 127 degrees C. */
1210 for (i = 0; i < 8; i++) {
1211 tmp = it87_read_value(client, IT87_REG_VIN_MIN(i));
1212 if (tmp == 0xff)
1213 it87_write_value(client, IT87_REG_VIN_MIN(i), 0);
1214 }
1215 for (i = 0; i < 3; i++) {
1216 tmp = it87_read_value(client, IT87_REG_TEMP_HIGH(i));
1217 if (tmp == 0xff)
1218 it87_write_value(client, IT87_REG_TEMP_HIGH(i), 127);
1219 }
1220
1205 /* Check if temperature channnels are reset manually or by some reason */ 1221 /* Check if temperature channnels are reset manually or by some reason */
1206 tmp = it87_read_value(client, IT87_REG_TEMP_ENABLE); 1222 tmp = it87_read_value(client, IT87_REG_TEMP_ENABLE);
1207 if ((tmp & 0x3f) == 0) { 1223 if ((tmp & 0x3f) == 0) {