diff options
author | Yuan Mu <Ymu@winbond.com.tw> | 2005-11-07 16:19:04 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-11-08 00:46:37 -0500 |
commit | 4a1c4447e523003019a2bf9b972ed6fe411e84d2 (patch) | |
tree | 90dc9edf07dc4373e5c474c6d0083afd8a201998 /drivers/hwmon | |
parent | ef9627464490fe67235bbd5724d55345b92c0315 (diff) |
[PATCH] hwmon: Fix two w83627hf bugs
* Fix in4 reads for W83627THF and W83637HF chips.
* Use the correct register for alarm flags.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/hwmon')
-rw-r--r-- | drivers/hwmon/w83627hf.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/drivers/hwmon/w83627hf.c b/drivers/hwmon/w83627hf.c index 70ef926c3bd8..4e9a04e1f08e 100644 --- a/drivers/hwmon/w83627hf.c +++ b/drivers/hwmon/w83627hf.c | |||
@@ -180,11 +180,10 @@ superio_exit(void) | |||
180 | #define W83781D_REG_BANK 0x4E | 180 | #define W83781D_REG_BANK 0x4E |
181 | 181 | ||
182 | #define W83781D_REG_CONFIG 0x40 | 182 | #define W83781D_REG_CONFIG 0x40 |
183 | #define W83781D_REG_ALARM1 0x41 | 183 | #define W83781D_REG_ALARM1 0x459 |
184 | #define W83781D_REG_ALARM2 0x42 | 184 | #define W83781D_REG_ALARM2 0x45A |
185 | #define W83781D_REG_ALARM3 0x450 | 185 | #define W83781D_REG_ALARM3 0x45B |
186 | 186 | ||
187 | #define W83781D_REG_IRQ 0x4C | ||
188 | #define W83781D_REG_BEEP_CONFIG 0x4D | 187 | #define W83781D_REG_BEEP_CONFIG 0x4D |
189 | #define W83781D_REG_BEEP_INTS1 0x56 | 188 | #define W83781D_REG_BEEP_INTS1 0x56 |
190 | #define W83781D_REG_BEEP_INTS2 0x57 | 189 | #define W83781D_REG_BEEP_INTS2 0x57 |
@@ -1370,13 +1369,6 @@ static void w83627hf_init_client(struct i2c_client *client) | |||
1370 | W83781D_REG_TEMP3_CONFIG, tmp & 0xfe); | 1369 | W83781D_REG_TEMP3_CONFIG, tmp & 0xfe); |
1371 | } | 1370 | } |
1372 | } | 1371 | } |
1373 | |||
1374 | /* enable comparator mode for temp2 and temp3 so | ||
1375 | alarm indication will work correctly */ | ||
1376 | i = w83627hf_read_value(client, W83781D_REG_IRQ); | ||
1377 | if (!(i & 0x40)) | ||
1378 | w83627hf_write_value(client, W83781D_REG_IRQ, | ||
1379 | i | 0x40); | ||
1380 | } | 1372 | } |
1381 | 1373 | ||
1382 | /* Start monitoring */ | 1374 | /* Start monitoring */ |
@@ -1400,7 +1392,7 @@ static struct w83627hf_data *w83627hf_update_device(struct device *dev) | |||
1400 | /* skip missing sensors */ | 1392 | /* skip missing sensors */ |
1401 | if (((data->type == w83697hf) && (i == 1)) || | 1393 | if (((data->type == w83697hf) && (i == 1)) || |
1402 | ((data->type == w83627thf || data->type == w83637hf) | 1394 | ((data->type == w83627thf || data->type == w83637hf) |
1403 | && (i == 4 || i == 5))) | 1395 | && (i == 5 || i == 6))) |
1404 | continue; | 1396 | continue; |
1405 | data->in[i] = | 1397 | data->in[i] = |
1406 | w83627hf_read_value(client, W83781D_REG_IN(i)); | 1398 | w83627hf_read_value(client, W83781D_REG_IN(i)); |