diff options
author | Linus Walleij <linus.walleij@stericsson.com> | 2010-09-23 09:04:11 +0200 |
---|---|---|
committer | Ben Dooks <ben-linux@fluff.org> | 2010-10-25 02:40:48 +0100 |
commit | f868fc355ad852b476950c2fe4f5bae7480e8f04 (patch) | |
tree | b88fcb6fa1d57c390e4176c26e2720b390f208fa | |
parent | 5680bc6ec71f303956f5aa999a3c13e13466c561 (diff) |
i2c-nomadik: fixup bus delays
We were missing a transfer delay in one execution path leading to
hangs and the bus timeout was too low leading to errors under
stress tests.
Acked-by: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
Signed-off-by: Sundar R Iyer <sundar.iyer@stericsson.com>
Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
-rw-r--r-- | drivers/i2c/busses/i2c-nomadik.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/i2c/busses/i2c-nomadik.c b/drivers/i2c/busses/i2c-nomadik.c index e461de7167e..c9fffd0389f 100644 --- a/drivers/i2c/busses/i2c-nomadik.c +++ b/drivers/i2c/busses/i2c-nomadik.c @@ -103,6 +103,9 @@ /* maximum threshold value */ #define MAX_I2C_FIFO_THRESHOLD 15 +/* per-transfer delay, required for the hardware to stabilize */ +#define I2C_DELAY 150 + enum i2c_status { I2C_NOP, I2C_ON_GOING, @@ -118,7 +121,7 @@ enum i2c_operation { }; /* controller response timeout in ms */ -#define I2C_TIMEOUT_MS 500 +#define I2C_TIMEOUT_MS 2000 /** * struct i2c_nmk_client - client specific data @@ -267,6 +270,7 @@ static int init_hw(struct nmk_i2c_dev *dev) clk_disable(dev->clk); + udelay(I2C_DELAY); return 0; } @@ -599,7 +603,7 @@ static int nmk_i2c_xfer(struct i2c_adapter *i2c_adap, clk_disable(dev->clk); return status; } - mdelay(1); + udelay(I2C_DELAY); } clk_disable(dev->clk); |