From: Troy Kisky Date: Thu, 19 Jul 2012 08:18:14 +0000 (+0000) Subject: mxc_i2c: change slave addr if conflicts with destination. X-Git-Url: http://git.dujemihanovic.xyz/img/sics.gif?a=commitdiff_plain;h=ca741da106de2b3d1432a333b3da0af6849c4e9a;p=u-boot.git mxc_i2c: change slave addr if conflicts with destination. The i2c controller cannot be both master and slave in the same transaction. Signed-off-by: Troy Kisky --- diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c index 1a5e379c2f..ba2aad3d0d 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)