diff options
author | Mathias Nyman <[email protected]> | 2010-08-26 07:36:44 +0000 |
---|---|---|
committer | Ben Dooks <[email protected]> | 2010-09-22 01:06:58 +0100 |
commit | 5c64eb26ed5c5550fbabd345e573af3fc6a7f775 (patch) | |
tree | 9a78f9e7c55865e8ece8c577afeacc789cce2098 | |
parent | 2422084a94fcd5038406261b331672a13c92c050 (diff) |
i2c-omap: Make sure i2c bus is free before setting it to idle
If the i2c bus receives an interrupt with both BB (bus busy) and
ARDY (register access ready) statuses set during the tranfer of the last message
the bus was put to idle while still busy.
This caused bus to timeout.
Signed-off-by: Mathias Nyman <[email protected]>
Acked-by: Tony Lindgren <[email protected]>
Signed-off-by: Ben Dooks <[email protected]>
-rw-r--r-- | drivers/i2c/busses/i2c-omap.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index 7674efb55378..b33c78586bfc 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c @@ -680,6 +680,8 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) if (r == 0) r = num; + + omap_i2c_wait_for_bb(dev); out: omap_i2c_idle(dev); return r; |