[U-Boot] [PATCH V3 13/25] mxc_i2c: change slave addr if conflicts with destination.
Troy Kisky
troy.kisky at boundarydevices.com
Thu Jul 19 20:18:14 CEST 2012
The i2c controller cannot be both master and slave in the
same transaction.
Signed-off-by: Troy Kisky <troy.kisky at boundarydevices.com>
---
v2: no change
---
drivers/i2c/mxc_i2c.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c
index 1a5e379..ba2aad3 100644
--- a/drivers/i2c/mxc_i2c.c
+++ b/drivers/i2c/mxc_i2c.c
@@ -223,6 +223,8 @@ static int i2c_init_transfer(struct mxc_i2c_regs *i2c_regs,
/* Wait for controller to be stable */
udelay(50);
}
+ if (readb(&i2c_regs->iadr) == (chip << 1))
+ writeb((chip << 1) ^ 2, &i2c_regs->iadr);
writeb(0, &i2c_regs->i2sr);
ret = wait_for_sr_state(i2c_regs, ST_BUS_IDLE);
if (ret < 0)
--
1.7.9.5
More information about the U-Boot
mailing list