i2c: omap: implement workaround for handling invalid BB-bit values
authorAlexander Kochetkov <al.kochet@gmail.com>
Sat, 22 Nov 2014 19:47:12 +0000 (23:47 +0400)
committerWolfram Sang <wsa@the-dreams.de>
Sun, 23 Nov 2014 16:27:47 +0000 (17:27 +0100)
commit0f5768bf894f853c21e5f336b5f495599172f39b
tree3434977e24f43ae4d32c07706864900bed8fd55c
parent9fd6ada84fd29c8115f2781b48a6ae7c8c4debe2
i2c: omap: implement workaround for handling invalid BB-bit values

In a multimaster environment, after IP software reset, BB-bit value doesn't
correspond to the current bus state. It may happen what BB-bit will be 0,
while the bus is busy due to another I2C master activity.

Any transfer started when BB=0 and bus is busy wouldn't be completed by IP
and results in controller timeout. More over, in some cases IP could
interrupt another master's transfer and corrupt data on wire.

The commit implement method allowing to prevent IP from entering into
"controller timeout" state and from "data corruption" state.

The one drawback is the need to wait for 10ms before the first transfer.

Tested on Beagleboard XM C.
Tested on BBB and AM437x Starter Kit by Felipe Balbi.

Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com>
Tested-by: Felipe Balbi <balbi@ti.com>
Reviewed-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-omap.c
This page took 0.034999 seconds and 5 git commands to generate.