2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-17 17:53:56 +08:00

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>
This commit is contained in:
Amaury Decrême 2013-01-28 22:21:06 +01:00 committed by Wolfram Sang
parent 974d6a3797
commit aa9e7a39c5

View File

@ -213,10 +213,8 @@ static int sis630_transaction_wait(struct i2c_adapter *adap, int size)
static void sis630_transaction_end(struct i2c_adapter *adap, u8 oldclock) static void sis630_transaction_end(struct i2c_adapter *adap, u8 oldclock)
{ {
int temp = 0;
/* clear all status "sticky" bits */ /* clear all status "sticky" bits */
sis630_write(SMB_STS, temp); sis630_write(SMB_STS, 0xFF);
dev_dbg(&adap->dev, "SMB_CNT before clock restore 0x%02x\n", sis630_read(SMB_CNT)); dev_dbg(&adap->dev, "SMB_CNT before clock restore 0x%02x\n", sis630_read(SMB_CNT));