linux/drivers/i2c
Alexander Kochetkov b76911d2fe i2c: omap: don't reset controller if Arbitration Lost detected
Arbitration Lost is an expected situation in a multimaster
environment. I2C controller (IP) correctly detect and report AL.

The only one visible reason for resetting IP in the AL case is
to avoid advisory 1.94 (omap3) and errata i595 (omap4): "I2C:
After an Arbitration is Lost the Module Incorrectly Starts
the Next Transfer".

Errata workaround states: "The MST and STT bits inside I2C_CON
should be set to 1 at the same moment (avoid setting the MST bit
to 1 while STT = 0)." The driver never set MST and STT bits
separately and doesn't create condition for errata. So the reset
is not necessary.

Also corrected return value for AL to -EAGAIN.

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:48 +01:00
..
algos i2c: remove FSF address 2014-11-07 18:35:33 +01:00
busses i2c: omap: don't reset controller if Arbitration Lost detected 2014-11-23 17:27:48 +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