linux/drivers/i2c/busses
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
..
i2c-acorn.c i2c: acorn: is tristate and should use module.h 2014-01-24 18:21:11 +01:00
i2c-ali15x3.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-ali1535.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-ali1563.c i2c: ali1563: fix checkpatch.pl issues 2014-05-22 10:09:21 +02:00
i2c-amd756-s4882.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-amd756.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-amd8111.c i2c: remove DEFINE_PCI_DEVICE_TABLE macro 2014-03-13 09:44:59 +01:00
i2c-at91.c i2c: at91: enable probe deferring on dma channel request 2014-11-23 17:27:29 +01:00
i2c-au1550.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-axxia.c i2c: axxia: Add I2C driver for AXM55xx 2014-10-03 14:11:53 +02:00
i2c-bcm-kona.c i2c: i2c-bcm-kona: Fix module build 2013-11-26 14:00:57 +01:00
i2c-bcm2835.c i2c: i2c-bcm2835: Drop class based scanning to improve bootup time 2014-07-16 22:59:57 +02:00
i2c-bfin-twi.c i2c: i2c-bfin-twi: Drop class based scanning to improve bootup time 2014-07-16 22:59:58 +02:00
i2c-cadence.c i2c: Add driver for Cadence I2C controller 2014-04-06 17:47:19 +02:00
i2c-cbus-gpio.c i2c: delete non-required instances of include <linux/init.h> 2014-01-24 18:24:31 +01:00
i2c-cpm.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-cros-ec-tunnel.c Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2014-10-19 12:50:44 -07:00
i2c-davinci.c i2c: davinci: don't use interruptible completion 2014-11-10 09:35:01 +01:00
i2c-designware-core.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-designware-core.h i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-designware-pcidrv.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-designware-platdrv.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-diolan-u2c.c i2c: remove unnecessary OOM messages 2014-06-02 19:24:33 +02:00
i2c-efm32.c i2c: efm32: correct namespacing of location property 2014-07-17 15:38:49 +02:00
i2c-eg20t.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-elektor.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-exynos5.c i2c: exynos5: use proper errno for timeout 2014-11-10 09:34:59 +01:00
i2c-gpio.c i2c: gpio: Drop dead code in i2c_gpio_remove 2014-08-01 20:01:41 +02:00
i2c-highlander.c i2c: delete non-required instances of include <linux/init.h> 2014-01-24 18:24:31 +01:00
i2c-hix5hd2.c i2c: hix5hd2: add i2c controller driver 2014-10-16 09:14:17 +02:00
i2c-hydra.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-i801.c i2c: i801: Add DeviceIDs for SunrisePoint LP 2014-11-12 17:19:13 +01:00
i2c-ibm_iic.c i2c: delete non-required instances of include <linux/init.h> 2014-01-24 18:24:31 +01:00
i2c-ibm_iic.h
i2c-img-scb.c i2c: img-scb: Add Imagination Technologies I2C SCB driver 2014-11-17 19:54:24 +01:00
i2c-imx.c i2c: imx: simplify i2c_imx_dma_write() a little 2014-11-19 15:16:19 +01:00
i2c-iop3xx.c i2c: delete non-required instances of include <linux/init.h> 2014-01-24 18:24:31 +01:00
i2c-iop3xx.h i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-isch.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-ismt.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-kempld.c i2c: Fix Kontron PLD prescaler calculation 2013-08-05 10:31:18 +02:00
i2c-meson.c i2c: add support for Amlogic Meson I2C controller 2014-11-18 16:16:44 +01:00
i2c-mpc.c i2c: mpc: report correct I2C error return codes 2014-11-12 16:34:11 +01:00
i2c-mv64xxx.c i2c: mv64xxx: continue probe when clock-frequency is missing 2014-09-02 12:34:08 +02:00
i2c-mxs.c i2c: imx+mxs: Use the preferred form for passing a size of a struct 2014-11-10 09:34:54 +01:00
i2c-nforce2-s4985.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-nforce2.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-nomadik.c i2c: i2c-nomadik: Drop class based scanning to improve bootup time 2014-07-16 23:00:01 +02:00
i2c-ocores.c i2c: i2c-ocores: Drop class based scanning to improve bootup time 2014-07-16 23:00:02 +02:00
i2c-octeon.c i2c: delete non-required instances of include <linux/init.h> 2014-01-24 18:24:31 +01:00
i2c-omap.c i2c: omap: implement workaround for handling invalid BB-bit values 2014-11-23 17:27:47 +01:00
i2c-parport-light.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-parport.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-parport.h i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-pasemi.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-pca-isa.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-pca-platform.c i2c: delete non-required instances of include <linux/init.h> 2014-01-24 18:24:31 +01:00
i2c-piix4.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-pmcmsp.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-pnx.c i2c: pnx: Use devm_*() functions 2014-01-16 11:15:50 +01:00
i2c-powermac.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-puv3.c i2c: delete non-required instances of include <linux/init.h> 2014-01-24 18:24:31 +01:00
i2c-pxa-pci.c i2c: remove DEFINE_PCI_DEVICE_TABLE macro 2014-03-13 09:44:59 +01:00
i2c-pxa.c i2c: Make of_device_id array const 2014-06-02 19:29:37 +02:00
i2c-qup.c i2c: qup: Fix order of runtime pm initialization 2014-10-03 03:20:47 +02:00
i2c-rcar.c i2c: rcar: remove sign-compare flaw 2014-09-29 22:43:25 +02:00
i2c-riic.c i2c: Make of_device_id array const 2014-06-02 19:29:37 +02:00
i2c-rk3x.c i2c: rk3x: handle dynamic clock rate changes correctly 2014-11-23 17:27:46 +01:00
i2c-robotfuzz-osif.c i2c: Add bus driver for for OSIF USB i2c device. 2014-01-13 13:56:56 +01:00
i2c-s3c2410.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-scmi.c i2c: delete non-required instances of include <linux/init.h> 2014-01-24 18:24:31 +01:00
i2c-sh7760.c i2c: delete non-required instances of include <linux/init.h> 2014-01-24 18:24:31 +01:00
i2c-sh_mobile.c i2c: sh_mobile: use proper device for mapping DMA memory 2014-11-19 15:17:16 +01:00
i2c-sibyte.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-simtec.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-sirf.c i2c: i2c-sirf: Drop class based scanning to improve bootup time 2014-07-16 23:00:06 +02:00
i2c-sis96x.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-sis630.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-sis5595.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-st.c i2c: st: Update i2c timings 2014-08-01 19:47:17 +02:00
i2c-stu300.c i2c: i2c-stu300: Drop class based scanning to improve bootup time 2014-07-16 23:00:06 +02:00
i2c-sun6i-p2wi.c i2c: sun6i-p2wi: Remove duplicate inclusion of module.h 2014-06-27 14:39:36 +02:00
i2c-taos-evm.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-tegra.c i2c: tegra: Move clk_prepare/clk_set_rate to probe 2014-09-20 11:15:23 +02:00
i2c-tiny-usb.c i2c: i2c-tiny-usb: Remove RobotFuzz USB vendor:product ID 2014-01-13 13:56:52 +01:00
i2c-versatile.c i2c: move OF helpers into the core 2013-08-23 10:22:20 +02:00
i2c-via.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-viapro.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-viperboard.c i2c: viperboard: remove superfluous assignment 2014-01-09 22:18:33 +01:00
i2c-wmt.c i2c: Make of_device_id array const 2014-06-02 19:29:37 +02:00
i2c-xiic.c i2c: xiic: Fix big-endian register access 2014-11-17 19:54:23 +01:00
i2c-xlr.c i2c: delete non-required instances of include <linux/init.h> 2014-01-24 18:24:31 +01:00
Kconfig i2c: img-scb: Allow building for MIPS 2014-11-19 10:06:54 +01:00
Makefile i2c: add support for Amlogic Meson I2C controller 2014-11-18 16:16:44 +01:00
scx200_acb.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00