diff options
author | Alexander Kochetkov <al.kochet@gmail.com> | 2014-11-22 23:47:14 +0400 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2014-11-23 17:27:49 +0100 |
commit | 4f734a3a0434ef2bb668716ff28ba677fa0dc929 (patch) | |
tree | 758dbed765be45031ae39a589462cb4fa4d1654d /drivers/i2c/busses/i2c-omap.c | |
parent | b76911d2fe1462e1fc7c449e3e6aef76331e816e (diff) | |
download | op-kernel-dev-4f734a3a0434ef2bb668716ff28ba677fa0dc929.zip op-kernel-dev-4f734a3a0434ef2bb668716ff28ba677fa0dc929.tar.gz |
i2c: omap: add notes related to i2c multimaster mode
No functional changes.
Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
Reviewed-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Diffstat (limited to 'drivers/i2c/busses/i2c-omap.c')
-rw-r--r-- | drivers/i2c/busses/i2c-omap.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index b70270d..9f5b57a 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c @@ -300,6 +300,12 @@ static void __omap_i2c_init(struct omap_i2c_dev *dev) omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, OMAP_I2C_CON_EN); /* + * NOTE: right after setting CON_EN, STAT_BB could be 0 while the + * bus is busy. It will be changed to 1 on the next IP FCLK clock. + * udelay(1) will be enough to fix that. + */ + + /* * Don't write to this register if the IE state is 0 as it can * cause deadlock. */ @@ -660,7 +666,11 @@ static int omap_i2c_xfer_msg(struct i2c_adapter *adap, if (!dev->b_hw && stop) w |= OMAP_I2C_CON_STP; - + /* + * NOTE: STAT_BB bit could became 1 here if another master occupy + * the bus. IP successfully complete transfer when the bus will be + * free again (BB reset to 0). + */ omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, w); /* |