linux/drivers/i2c
Alexander Kochetkov 0f5768bf89 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>
2014-11-23 17:27:47 +01:00
..
algos i2c: remove FSF address 2014-11-07 18:35:33 +01:00
busses i2c: omap: implement workaround for handling invalid BB-bit values 2014-11-23 17:27:47 +01:00
muxes Merge branch 'i2c/for-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2014-08-09 09:15:07 -07:00
i2c-boardinfo.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-core.c i2c: acpi: remove unneeded variable initialization 2014-11-18 16:03:05 +01:00
i2c-core.h i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-dev.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-mux.c i2c: mux: create "channel-n" symlinks for child segments in the mux device 2014-11-18 16:09:49 +01:00
i2c-smbus.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-stub.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
Kconfig i2c: rework kernel config I2C_ACPI 2014-08-19 10:19:39 -05:00
Makefile i2c: move acpi code back into the core 2014-09-25 16:07:15 +02:00