X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=cpu%2Fmpc5xxx%2Fi2c.c;h=23419324ba592b6091fef2081d9ec9aec09605b6;hb=792a09eb9d5d8c4f74b7e9f2e887316d511a4e80;hp=7d76274ad331ca1aa3480a93eac6bdc0b180ac51;hpb=7f202217356f19e519e6ec57a29de9af73067037;p=oweals%2Fu-boot.git diff --git a/cpu/mpc5xxx/i2c.c b/cpu/mpc5xxx/i2c.c index 7d76274ad3..23419324ba 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(®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); } @@ -269,7 +269,8 @@ static int mpc_get_fdr(int speed) if (gd->flags & GD_FLG_RELOC) { fdr = divider; } else { - printf("%ld kHz, ", best_speed / 1000); + if (gd->have_console) + printf("%ld kHz, ", best_speed / 1000); return divider; } } @@ -310,29 +311,34 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len) xaddr[3] = addr & 0xFF; if (wait_for_bb()) { - printf("i2c_read: bus is busy\n"); + if (gd->have_console) + printf("i2c_read: bus is busy\n"); goto Done; } mpc_reg_out(®s->mcr, I2C_STA, I2C_STA); if (do_address(chip, 0)) { - printf("i2c_read: failed to address chip\n"); + if (gd->have_console) + printf("i2c_read: failed to address chip\n"); goto Done; } if (send_bytes(chip, &xaddr[4-alen], alen)) { - printf("i2c_read: send_bytes failed\n"); + if (gd->have_console) + printf("i2c_read: send_bytes failed\n"); goto Done; } mpc_reg_out(®s->mcr, I2C_RSTA, I2C_RSTA); if (do_address(chip, 1)) { - printf("i2c_read: failed to address chip\n"); + if (gd->have_console) + printf("i2c_read: failed to address chip\n"); goto Done; } if (receive_bytes(chip, (char *)buf, len)) { - printf("i2c_read: receive_bytes failed\n"); + if (gd->have_console) + printf("i2c_read: receive_bytes failed\n"); goto Done; } @@ -354,23 +360,27 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buf, int len) xaddr[3] = addr & 0xFF; if (wait_for_bb()) { - printf("i2c_write: bus is busy\n"); + if (gd->have_console) + printf("i2c_write: bus is busy\n"); goto Done; } mpc_reg_out(®s->mcr, I2C_STA, I2C_STA); if (do_address(chip, 0)) { - printf("i2c_write: failed to address chip\n"); + if (gd->have_console) + printf("i2c_write: failed to address chip\n"); goto Done; } if (send_bytes(chip, &xaddr[4-alen], alen)) { - printf("i2c_write: send_bytes failed\n"); + if (gd->have_console) + printf("i2c_write: send_bytes failed\n"); goto Done; } if (send_bytes(chip, (char *)buf, len)) { - printf("i2c_write: send_bytes failed\n"); + if (gd->have_console) + printf("i2c_write: send_bytes failed\n"); goto Done; }