linux/drivers/i2c/busses
Robert Hancock 1d4a1adbed i2c: xiic: Try re-initialization on bus busy timeout
In the event that the I2C bus was powered down when the I2C controller
driver loads, or some spurious pulses occur on the I2C bus, it's
possible that the controller detects a spurious I2C "start" condition.
In this situation it may continue to report the bus is busy indefinitely
and block the controller from working.

The "single-master" DT flag can be specified to disable bus busy checks
entirely, but this may not be safe to use in situations where other I2C
masters may potentially exist.

In the event that the controller reports "bus busy" for too long when
starting a transaction, we can try reinitializing the controller to see
if the busy condition clears. This allows recovering from this scenario.

Fixes: e1d5b6598c ("i2c: Add support for Xilinx XPS IIC Bus Interface")
Signed-off-by: Robert Hancock <robert.hancock@calian.com>
Cc: <stable@vger.kernel.org> # v2.6.34+
Reviewed-by: Manikanta Guntupalli <manikanta.guntupalli@amd.com>
Acked-by: Michal Simek <michal.simek@amd.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
2024-09-11 22:21:21 +02:00
..
i2c-acorn.c
i2c-ali15x3.c
i2c-ali1535.c
i2c-ali1563.c
i2c-altera.c
i2c-amd-mp2-pci.c
i2c-amd-mp2-plat.c
i2c-amd-mp2.h
i2c-amd756-s4882.c
i2c-amd756.c
i2c-amd8111.c
i2c-aspeed.c i2c: aspeed: Update the stop sw state when the bus recovery occurs 2024-09-11 17:54:21 +02:00
i2c-at91-core.c
i2c-at91-master.c
i2c-at91-slave.c
i2c-at91.h
i2c-au1550.c
i2c-axxia.c
i2c-bcm-iproc.c
i2c-bcm-kona.c
i2c-bcm2835.c
i2c-brcmstb.c
i2c-cadence.c
i2c-cbus-gpio.c
i2c-ccgx-ucsi.c
i2c-ccgx-ucsi.h
i2c-cht-wc.c
i2c-cp2615.c
i2c-cpm.c
i2c-cros-ec-tunnel.c
i2c-davinci.c
i2c-designware-amdpsp.c
i2c-designware-baytrail.c
i2c-designware-common.c
i2c-designware-core.h
i2c-designware-master.c
i2c-designware-pcidrv.c
i2c-designware-platdrv.c
i2c-designware-slave.c
i2c-digicolor.c
i2c-diolan-u2c.c
i2c-dln2.c
i2c-eg20t.c
i2c-elektor.c
i2c-emev2.c
i2c-exynos5.c
i2c-fsi.c
i2c-gpio.c
i2c-gxp.c
i2c-highlander.c
i2c-hisi.c
i2c-hix5hd2.c
i2c-hydra.c
i2c-i801.c
i2c-ibm_iic.c
i2c-ibm_iic.h
i2c-icy.c
i2c-img-scb.c
i2c-imx-lpi2c.c
i2c-imx.c
i2c-iop3xx.c
i2c-iop3xx.h
i2c-isch.c
i2c-ismt.c
i2c-jz4780.c
i2c-kempld.c
i2c-ljca.c
i2c-lpc2k.c
i2c-ls2x.c
i2c-mchp-pci1xxxx.c
i2c-meson.c
i2c-microchip-corei2c.c
i2c-mlxbf.c
i2c-mlxcpld.c
i2c-mpc.c
i2c-mt65xx.c
i2c-mt7621.c
i2c-mv64xxx.c
i2c-mxs.c
i2c-nforce2-s4985.c
i2c-nforce2.c
i2c-nomadik.c
i2c-npcm7xx.c
i2c-nvidia-gpu.c
i2c-ocores.c
i2c-octeon-core.c
i2c-octeon-core.h
i2c-octeon-platdrv.c
i2c-omap.c
i2c-opal.c
i2c-owl.c
i2c-parport.c
i2c-pasemi-core.c
i2c-pasemi-core.h
i2c-pasemi-pci.c
i2c-pasemi-platform.c
i2c-pca-isa.c
i2c-pca-platform.c
i2c-piix4.c i2c: piix4: Register SPDs 2024-07-20 13:29:10 +02:00
i2c-pnx.c
i2c-powermac.c
i2c-pxa-pci.c
i2c-pxa.c
i2c-qcom-cci.c
i2c-qcom-geni.c i2c: qcom-geni: Add missing geni_icc_disable in geni_i2c_runtime_resume 2024-08-14 00:58:04 +02:00
i2c-qup.c
i2c-rcar.c The I2C core gains documentation updates for the testunit, a cleanup 2024-07-19 16:46:26 -07:00
i2c-riic.c
i2c-rk3x.c
i2c-robotfuzz-osif.c
i2c-rzv2m.c
i2c-s3c2410.c
i2c-scmi.c
i2c-sh7760.c
i2c-sh_mobile.c
i2c-sibyte.c
i2c-simtec.c
i2c-sis96x.c
i2c-sis630.c
i2c-sis5595.c
i2c-sprd.c
i2c-st.c
i2c-stm32.c
i2c-stm32.h
i2c-stm32f4.c
i2c-stm32f7.c
i2c-sun6i-p2wi.c
i2c-synquacer.c
i2c-taos-evm.c
i2c-tegra-bpmp.c
i2c-tegra.c i2c: tegra: Do not mark ACPI devices as irq safe 2024-08-15 00:22:28 +02:00
i2c-thunderx-pcidrv.c
i2c-tiny-usb.c
i2c-uniphier-f.c
i2c-uniphier.c
i2c-versatile.c
i2c-via.c
i2c-viai2c-common.c
i2c-viai2c-common.h
i2c-viai2c-wmt.c
i2c-viai2c-zhaoxin.c
i2c-viapro.c
i2c-viperboard.c
i2c-virtio.c
i2c-xgene-slimpro.c
i2c-xiic.c i2c: xiic: Try re-initialization on bus busy timeout 2024-09-11 22:21:21 +02:00
i2c-xlp9xx.c
Kconfig i2c: piix4: Register SPDs 2024-07-20 13:29:10 +02:00
Makefile
scx200_acb.c