ChangeSet 1.1557.61.11, 2004/02/23 16:28:43-08:00, khali@linux-fr.org [PATCH] I2C: fix Hangs with w83781d Here is a patch for the w83781d driver that prevents register bits from being arbitrary changed when we force temp2/3 to comparator mode. Keith Duthie had been reporting various problems with that driver and finally found that this arbitrary change was the cause of them. He also tested this patch, which he confirmed to work. drivers/i2c/chips/w83781d.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletion(-) diff -Nru a/drivers/i2c/chips/w83781d.c b/drivers/i2c/chips/w83781d.c --- a/drivers/i2c/chips/w83781d.c Mon Mar 15 14:37:03 2004 +++ b/drivers/i2c/chips/w83781d.c Mon Mar 15 14:37:03 2004 @@ -1632,7 +1632,11 @@ 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; }