ARMV7: OMAP: I2C driver: Use same timeout value as linux kernel driver
This patch matches the poll interval (1 millisecond) and timeout (1 second) used in the linux driver. It also adds a return value of 0 in the event of a timeout error and cleans up some formatting errors in that section of the code. Signed-off-by: Steve Sakoman <steve.sakoman@linaro.org> Tested-by: Heiko Schocher <hs@denx.de>
This commit is contained in:
parent
11c8dd36ed
commit
73e8747fe4
drivers/i2c
|
@ -27,7 +27,7 @@
|
|||
|
||||
#include "omap24xx_i2c.h"
|
||||
|
||||
#define I2C_TIMEOUT 10
|
||||
#define I2C_TIMEOUT 1000
|
||||
|
||||
static void wait_for_bb (void);
|
||||
static u16 wait_for_pin (void);
|
||||
|
@ -392,13 +392,13 @@ int i2c_write (uchar chip, uint addr, int alen, uchar * buffer, int len)
|
|||
|
||||
static void wait_for_bb (void)
|
||||
{
|
||||
int timeout = 10;
|
||||
int timeout = I2C_TIMEOUT;
|
||||
u16 stat;
|
||||
|
||||
writew(0xFFFF, &i2c_base->stat); /* clear current interruts...*/
|
||||
while ((stat = readw (&i2c_base->stat) & I2C_STAT_BB) && timeout--) {
|
||||
writew (stat, &i2c_base->stat);
|
||||
udelay (50000);
|
||||
udelay(1000);
|
||||
}
|
||||
|
||||
if (timeout <= 0) {
|
||||
|
@ -411,7 +411,7 @@ static void wait_for_bb (void)
|
|||
static u16 wait_for_pin (void)
|
||||
{
|
||||
u16 status;
|
||||
int timeout = 10;
|
||||
int timeout = I2C_TIMEOUT;
|
||||
|
||||
do {
|
||||
udelay (1000);
|
||||
|
@ -424,8 +424,10 @@ static u16 wait_for_pin (void)
|
|||
if (timeout <= 0) {
|
||||
printf ("timed out in wait_for_pin: I2C_STAT=%x\n",
|
||||
readw (&i2c_base->stat));
|
||||
writew(0xFFFF, &i2c_base->stat);
|
||||
}
|
||||
writew(0xFFFF, &i2c_base->stat);
|
||||
status = 0;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue