i2c-i801: Properly report bus arbitration loss
PATCH 2/4 i2c-i801: Properly report bus arbitration loss
Bit BUS_ERR of the status register means that the ICH host controller lost the arbitration. Report this event as such.
Signed-off-by Jean Delvare <[email protected]>
--- drivers/i2c/busses/i2c-i801.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
drivers/i2c/busses/i2c-i801.c +4 -6
@@ -180,10 +180,8 @@ static int i801_transaction(int xact) }if (temp &SMBHSTSTS_BUS_ERR ) { - result = -EIO ; -dev_err (&I801_dev->dev,"Bus collision! SMBus may be locked " -"until next hard reset. (sorry!)\n" ); -/* Clock stops and slave is stuck in mid-transmission */ + result = -EAGAIN ; +dev_dbg (&I801_dev->dev,"Lost arbitration\n" ); }if (temp &SMBHSTSTS_DEV_ERR ) {
@@ -340,8 +338,8 @@ static int i801_block_transaction_byte_bdev_dbg (&I801_dev->dev,"Error: Failed bus transaction\n" ); }else if (temp &SMBHSTSTS_BUS_ERR ) { - result = -EIO ; -dev_err (&I801_dev->dev,"Bus collision!\n" ); + result = -EAGAIN ; +dev_dbg (&I801_dev->dev,"Lost arbitration\n" ); }else if (temp &SMBHSTSTS_DEV_ERR ) { result = -ENXIO ;dev_dbg (&I801_dev->dev,"Error: no response!\n" );
Signature · 6 lines
Jean Delvare _______________________________________________ i2c mailing list [email protected] http://lists.lm-sensors.org/mailman/listinfo/i2c