aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/i2c
diff options
context:
space:
mode:
authorAmaury Decrême <amaury.decreme@gmail.com>2013-01-28 16:21:06 -0500
committerWolfram Sang <wolfram@the-dreams.de>2013-02-11 09:59:38 -0500
commitaa9e7a39c5a5a77ff02670ef915f4c6712bc7658 (patch)
treee236c6a1c0a53ec7ec8782bd1cf2a02cda16a9ca /drivers/i2c
parent974d6a3797001c88e59ccb78567c6d71ac526c43 (diff)
i2c: sis630: clear sticky bits
The sticky bits must be cleared at the end of the transaction by writing a 1 to all fields. Datasheet: SMBus Status (SMB_STS) The following registers are all sticky bits and only can be cleared by writing a one to their corresponding fields. Signed-off-by: Amaury Decrême <amaury.decreme@gmail.com> Reviewed-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Wolfram Sang <wolfram@the-dreams.de>
Diffstat (limited to 'drivers/i2c')
-rw-r--r--drivers/i2c/busses/i2c-sis630.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/i2c/busses/i2c-sis630.c b/drivers/i2c/busses/i2c-sis630.c
index df8e20ab3a09..3124d807c05a 100644
--- a/drivers/i2c/busses/i2c-sis630.c
+++ b/drivers/i2c/busses/i2c-sis630.c
@@ -213,10 +213,8 @@ static int sis630_transaction_wait(struct i2c_adapter *adap, int size)
213 213
214static void sis630_transaction_end(struct i2c_adapter *adap, u8 oldclock) 214static void sis630_transaction_end(struct i2c_adapter *adap, u8 oldclock)
215{ 215{
216 int temp = 0;
217
218 /* clear all status "sticky" bits */ 216 /* clear all status "sticky" bits */
219 sis630_write(SMB_STS, temp); 217 sis630_write(SMB_STS, 0xFF);
220 218
221 dev_dbg(&adap->dev, "SMB_CNT before clock restore 0x%02x\n", sis630_read(SMB_CNT)); 219 dev_dbg(&adap->dev, "SMB_CNT before clock restore 0x%02x\n", sis630_read(SMB_CNT));
222 220