[U-Boot] [PATCH V2] mpc5200: reduce delays in i2c
Jon Smirl
jonsmirl at gmail.com
Tue Mar 31 03:03:30 CEST 2009
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 <jonsmirl at 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(®s->mcr, 0, 0);
mpc_reg_out(®s->mcr, I2C_EN, 0);
#endif
- udelay(1000);
+ udelay(15);
status = mpc_reg_in(®s->msr);
}
@@ -109,7 +109,7 @@ static int wait_for_pin(int *status)
*status = mpc_reg_in(®s->msr);
while (timeout-- && !(*status & I2C_IF)) {
- udelay(1000);
+ udelay(15);
*status = mpc_reg_in(®s->msr);
}
More information about the U-Boot
mailing list