summaryrefslogtreecommitdiffstats
path: root/drivers/i2c/busses
diff options
context:
space:
mode:
authorJean Delvare <khali@linux-fr.org>2006-04-20 02:43:18 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-04-20 07:54:04 -0700
commitc79cfbaccac0ef81ab3e796da1582a83dcef0ff9 (patch)
treeb5b5eaf90c1bc1043073fd1ba76feb99f1232131 /drivers/i2c/busses
parent7daa0c4f51897d5d956a62a2bac438e3b58d85dc (diff)
downloadlinux-c79cfbaccac0ef81ab3e796da1582a83dcef0ff9.tar.gz
linux-c79cfbaccac0ef81ab3e796da1582a83dcef0ff9.tar.bz2
linux-c79cfbaccac0ef81ab3e796da1582a83dcef0ff9.zip
[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>
Diffstat (limited to 'drivers/i2c/busses')
-rw-r--r--drivers/i2c/busses/i2c-i801.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
index 8e0f3158215f..dfca74933625 100644
--- a/drivers/i2c/busses/i2c-i801.c
+++ b/drivers/i2c/busses/i2c-i801.c
@@ -478,6 +478,11 @@ static s32 i801_access(struct i2c_adapter * adap, u16 addr,
ret = i801_transaction();
}
+ /* Some BIOSes don't like it when PEC is enabled at reboot or resume
+ time, so we forcibly disable it after every transaction. */
+ if (hwpec)
+ outb_p(0, SMBAUXCTL);
+
if(block)
return ret;
if(ret)