diff --git a/kernel/chips/w83627hf.c b/kernel/chips/w83627hf.c index f002e939..34619906 100644 --- a/kernel/chips/w83627hf.c +++ b/kernel/chips/w83627hf.c @@ -916,7 +916,10 @@ static void w83627hf_init_client(struct i2c_client *client) } /* enable comparator mode for temp2 and temp3 so alarm indication will work correctly */ - w83627hf_write_value(client, W83781D_REG_IRQ, 0x41); + i = w83627hf_read_value(client, W83781D_REG_IRQ); + if (!(i & 0x40)) + w83627hf_write_value(client, W83781D_REG_IRQ, + i | 0x40); } /* Start monitoring */ diff --git a/kernel/chips/w83781d.c b/kernel/chips/w83781d.c index 7e98db0c..db9e69c3 100644 --- a/kernel/chips/w83781d.c +++ b/kernel/chips/w83781d.c @@ -1378,7 +1378,11 @@ static void w83781d_init_client(struct i2c_client *client) if (type != w83781d) { /* enable comparator mode for temp2 and temp3 so alarm indication will work correctly */ - w83781d_write_value(client, W83781D_REG_IRQ, 0x41); + i = w83781d_read_value(client, W83781D_REG_IRQ); + if (!(i & 0x40)) + w83781d_write_value(client, W83781D_REG_IRQ, + i | 0x40); + for(i = 0; i < 3; i++) data->pwmenable[i] = 1; }