Signed-off-by: Rodolfo Giometti <[email protected]>
---
drivers/i2c/busses/i2c-pxa.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
index e29bde1..7dbe4dd 100644
--- a/drivers/i2c/busses/i2c-pxa.c
+++ b/drivers/i2c/busses/i2c-pxa.c
@@ -669,14 +669,22 @@ out:
static int i2c_pxa_do_xfer(struct pxa_i2c *i2c, struct i2c_msg *msg, int num)
{
long timeout;
+ int try_reset = 1;
int ret;
/*
* Wait for the bus to become free.
*/
+retry:
ret = i2c_pxa_wait_bus_not_busy(i2c);
if (ret) {
dev_err(&i2c->adap.dev, "i2c_pxa: timeout waiting for bus
free\n");
+ if (try_reset--) {
+ dev_info(&i2c->adap.dev, "i2c_pxa: controller reset\n");
+ i2c_pxa_reset(i2c);
+ goto retry;
+ }
+
goto out;
}
--
1.5.6.3
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html