Make the i2c delays smaller. The measured delay is 55us at
100Khz. Set the delay to 15us which should work for 400Khz.
100Khz will loop four times and get a 60us delay. Previous
total delay was 100,000us new total delay is 150,000us before
timeout.

Signed-off-by: Jon Smirl <jonsm...@gmail.com>

---
 cpu/mpc5xxx/i2c.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/cpu/mpc5xxx/i2c.c b/cpu/mpc5xxx/i2c.c
index e2506d8..48b6464 100644
--- a/cpu/mpc5xxx/i2c.c
+++ b/cpu/mpc5xxx/i2c.c
@@ -38,7 +38,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #error CONFIG_SYS_I2C_MODULE is not properly configured
 #endif
 
-#define I2C_TIMEOUT    100
+#define I2C_TIMEOUT    10000
 #define I2C_RETRIES    3
 
 struct mpc5xxx_i2c_tap {
@@ -94,7 +94,7 @@ static int wait_for_bb(void)
                mpc_reg_out(&regs->mcr, 0, 0);
                mpc_reg_out(&regs->mcr, I2C_EN, 0);
 #endif
-               udelay(1000);
+               udelay(15);
                status = mpc_reg_in(&regs->msr);
        }
 
@@ -109,7 +109,7 @@ static int wait_for_pin(int *status)
        *status = mpc_reg_in(&regs->msr);
 
        while (timeout-- && !(*status & I2C_IF)) {
-               udelay(1000);
+               udelay(15);
                *status = mpc_reg_in(&regs->msr);
        }
 

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to