summaryrefslogtreecommitdiff
path: root/cpu/mpc5xxx
diff options
context:
space:
mode:
authorJon Smirl <jonsmirl@gmail.com>2009-04-04 17:44:51 -0400
committerWolfgang Denk <wd@denx.de>2009-04-05 01:34:08 +0200
commit3c853f31d6a8e4407f73a2ca2c63d383a245f237 (patch)
tree47f3d741b2cfa59ffe8650c79e6755e847212d5b /cpu/mpc5xxx
parentc0a14aedc3440d6591b8c86d45861a0a8b46e11d (diff)
mpc5200: reduce delays in i2c
The previous code waited 1000us before checking i2c status. Measurement shows i2c is usually ready in under 50us. Change the polling interval to 15us, loop 6,667 times to keep the polling timeout constant at 100ms.
Diffstat (limited to 'cpu/mpc5xxx')
-rw-r--r--cpu/mpc5xxx/i2c.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/cpu/mpc5xxx/i2c.c b/cpu/mpc5xxx/i2c.c
index e2506d82f..23419324b 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 6667
#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);
}