#include <mpc5xxx.h>
#include <i2c.h>
-#if (CFG_I2C_MODULE == 2)
+#if (CONFIG_SYS_I2C_MODULE == 2)
#define I2C_BASE MPC5XXX_I2C2
-#elif (CFG_I2C_MODULE == 1)
+#elif (CONFIG_SYS_I2C_MODULE == 1)
#define I2C_BASE MPC5XXX_I2C1
#else
-#error CFG_I2C_MODULE is not properly configured
+#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 {
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);
}
*status = mpc_reg_in(®s->msr);
while (timeout-- && !(*status & I2C_IF)) {
- udelay(1000);
+ udelay(15);
*status = mpc_reg_in(®s->msr);
}
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;
}
}
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;
}
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;
}
return ret;
}
-uchar i2c_reg_read(uchar chip, uchar reg)
-{
- uchar buf;
-
- i2c_read(chip, reg, 1, &buf, 1);
-
- return buf;
-}
-
-void i2c_reg_write(uchar chip, uchar reg, uchar val)
-{
- i2c_write(chip, reg, 1, &val, 1);
-
- return;
-}
-
#endif /* CONFIG_HARD_I2C */