[PATCH] i2c-i801: Fix resume when PEC is used

Fix for bug #6395:

Fail to resume on Tecra M2 with ADM1032 and Intel 82801DBM

The BIOS of the Tecra M2 doesn't like it when it has to reboot or resume
after the i2c-i801 driver has left the SMBus in PEC mode. The most simple
fix is to clear the PEC bit after after every transaction. That's what
this driver was doing up to 2.6.15 (inclusive).

Thanks to Daniele Gaffuri for the very good report.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Jean Delvare and committed by
Linus Torvalds
c79cfbac 7daa0c4f

+5
+5
drivers/i2c/busses/i2c-i801.c
··· 478 ret = i801_transaction(); 479 } 480 481 if(block) 482 return ret; 483 if(ret)
··· 478 ret = i801_transaction(); 479 } 480 481 + /* Some BIOSes don't like it when PEC is enabled at reboot or resume 482 + time, so we forcibly disable it after every transaction. */ 483 + if (hwpec) 484 + outb_p(0, SMBAUXCTL); 485 + 486 if(block) 487 return ret; 488 if(ret)