diff options
author | Amaury Decrême <amaury.decreme@gmail.com> | 2013-01-28 16:21:06 -0500 |
---|---|---|
committer | Wolfram Sang <wolfram@the-dreams.de> | 2013-02-11 09:59:38 -0500 |
commit | aa9e7a39c5a5a77ff02670ef915f4c6712bc7658 (patch) | |
tree | e236c6a1c0a53ec7ec8782bd1cf2a02cda16a9ca /drivers/i2c | |
parent | 974d6a3797001c88e59ccb78567c6d71ac526c43 (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.c | 4 |
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 | ||
214 | static void sis630_transaction_end(struct i2c_adapter *adap, u8 oldclock) | 214 | static 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 | ||