[PATCH] I2C: i2c-algo-pca -- gracefully handle a busy bus
I've been running with this patch for a while now, and while I've never seen it trigger except with buggy hardware I think it is a cleaner way to handle a busy bus. I had -EBUSY until about 10 minutes ago but -EIO seems to be what most of the existing algo drivers will return in the same circumstances. Signed-off-by: Ian Campbell <icampbell@arcom.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
cdcb192197
commit
48edcb65dd
1 changed files with 7 additions and 5 deletions
|
@ -187,12 +187,14 @@ static int pca_xfer(struct i2c_adapter *i2c_adap,
|
|||
int numbytes = 0;
|
||||
int state;
|
||||
int ret;
|
||||
int timeout = 100;
|
||||
|
||||
state = pca_status(adap);
|
||||
if ( state != 0xF8 ) {
|
||||
dev_dbg(&i2c_adap->dev, "bus is not idle. status is %#04x\n", state );
|
||||
/* FIXME: what to do. Force stop ? */
|
||||
return -EREMOTEIO;
|
||||
while ((state = pca_status(adap)) != 0xf8 && timeout--) {
|
||||
msleep(10);
|
||||
}
|
||||
if (state != 0xf8) {
|
||||
dev_dbg(&i2c_adap->dev, "bus is not idle. status is %#04x\n", state);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
DEB1("{{{ XFER %d messages\n", num);
|
||||
|
|
Loading…
Reference in a new issue