linux-sg2042/drivers/i2c/busses
Xiangliang Yu 2d244c8148 i2c: designware: fix IO timeout issue for AMD controller
Because of some hardware limitation, AMD I2C controller can't
trigger pending interrupt if interrupt status has been changed
after clearing interrupt status bits. Then, I2C will lost
interrupt and IO timeout.

According to hardware design, this patch implements a workaround
to disable i2c controller interrupt and re-enable i2c interrupt
before exiting ISR.

To reduce the performance impacts on other vendors, use unlikely
function to check flag in ISR.

Signed-off-by: Xiangliang Yu <Xiangliang.Yu@amd.com>
Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Cc: stable@kernel.org
2015-12-12 18:00:16 +01:00
..
Kconfig i2c: i801: add Intel Lewisburg device IDs 2015-11-20 16:22:21 +01:00
Makefile i2c: uniphier_f: add UniPhier FIFO-builtin I2C driver 2015-10-23 21:55:46 +02: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: manage unexpected RXRDY flag when starting a transfer 2015-10-26 15:44:59 +01:00
i2c-au1550.c i2c: au1550: Convert to devm_kzalloc and devm_ioremap_resource 2015-10-23 23:31:11 +02:00
i2c-axxia.c i2c: axxia: Add bus recovery functionality 2015-06-03 00:40:16 +09:00
i2c-bcm-iproc.c i2c: iproc: Add suspend/resume support 2015-06-03 03:04:53 +09:00
i2c-bcm-kona.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-bcm2835.c i2c: busses: i2c-bcm2835: limits cdiv to allowed values 2015-06-23 19:55:19 +02:00
i2c-bfin-twi.c i2c: Fix typo in i2c-bfin-twi.c 2015-07-31 13:32:31 +02:00
i2c-brcmstb.c i2c: brcmstb: Add Broadcom settop SoC i2c controller driver 2015-06-10 22:02:57 +09:00
i2c-cadence.c i2c: cadence: set THIS_MODULE to the owner of the adapter 2015-08-10 08:37:38 +02:00
i2c-cbus-gpio.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-cpm.c i2c: cpm: make use of the new infrastructure for quirks 2015-03-13 15:10:54 +01:00
i2c-cros-ec-tunnel.c mfd: cros_ec: Use a zero-length array for command data 2015-06-15 13:18:19 +01:00
i2c-davinci.c i2c: davinci: Increase module clock frequency 2015-11-30 15:55:07 +01:00
i2c-designware-baytrail.c i2c: designware-baytrail: baytrail_i2c_acquire() might sleep 2015-03-07 01:08:26 +01:00
i2c-designware-core.c i2c: designware: fix IO timeout issue for AMD controller 2015-12-12 18:00:16 +01:00
i2c-designware-core.h i2c: designware: fix IO timeout issue for AMD controller 2015-12-12 18:00:16 +01:00
i2c-designware-pcidrv.c i2c: add ACPI support for I2C mux ports 2015-10-25 15:49:46 +01:00
i2c-designware-platdrv.c i2c: designware: fix IO timeout issue for AMD controller 2015-12-12 18:00:16 +01:00
i2c-digicolor.c i2c: digicolor: remove duplicate include 2015-04-23 19:35:32 +02:00
i2c-diolan-u2c.c i2c: remove unnecessary OOM messages 2014-06-02 19:24:33 +02:00
i2c-dln2.c i2c: dln2: set the device tree node of the adapter 2015-03-27 16:56:21 +01:00
i2c-efm32.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +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-emev2.c i2c: emev2: add driver 2015-08-10 08:37:29 +02:00
i2c-exynos5.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
i2c-gpio.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-highlander.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-hix5hd2.c i2c: hix5hd2: Fix modalias to make module auto-loading work 2015-05-12 18:09:33 +02:00
i2c-hydra.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-i801.c i2c: i801: add Intel Lewisburg device IDs 2015-11-20 16:22:21 +01:00
i2c-ibm_iic.c i2c: ibm-iic: Fix module autoload for OF platform driver 2015-10-20 18:14:01 +02:00
i2c-ibm_iic.h
i2c-img-scb.c i2c: img-scb: verify support for requested bit rate 2015-10-10 08:40:11 +01:00
i2c-imx.c i2c: imx: init bus recovery info before adding i2c adapter 2015-12-09 11:15:41 +01:00
i2c-iop3xx.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-iop3xx.h i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-isch.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
i2c-ismt.c Merge branch 'i2c/for-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2015-11-10 11:58:25 -08:00
i2c-jz4780.c i2c: jz4780: Fix return value if probe fails 2015-07-09 22:17:31 +02:00
i2c-kempld.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-lpc2k.c i2c: lpc2k: add driver 2015-08-24 14:05:18 +02:00
i2c-meson.c i2c: meson: Fix module autoload for OF platform driver 2015-10-20 18:14:36 +02:00
i2c-mpc.c i2c: mpc: Fix ISR return value 2015-03-27 16:53:41 +01:00
i2c-mt65xx.c i2c: mediatek: add i2c resume support 2015-10-23 21:58:32 +02:00
i2c-mv64xxx.c i2c: mv64xxx: The n clockdiv factor is 0 based on sunxi SoCs 2015-11-30 15:54:22 +01:00
i2c-mxs.c i2c: constify platform_device_id 2015-05-12 18:27:48 +02: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: nomadik: match status to return type of read_i2c 2015-03-15 10:51:13 +01:00
i2c-ocores.c i2c: ocores: support big-endian register layout 2015-10-20 17:47:45 +02:00
i2c-octeon.c i2c: octeon: remove unused signal handling 2015-06-17 14:50:03 +02:00
i2c-omap.c i2c: omap: fix cleanup regression 2015-08-10 08:37:33 +02:00
i2c-opal.c i2c: opal: Update quirk flags to do write-then-anything 2015-03-14 12:08:21 +01:00
i2c-parport-light.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
i2c-parport.c i2c: parport: start using pr_fmt 2015-08-10 08:37:28 +02:00
i2c-parport.h i2c: parport: Add VCT-jig adapter 2015-08-10 08:37:34 +02: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: pca-platform: fix broken email address 2015-04-23 19:35:30 +02:00
i2c-piix4.c i2c-piix4: Use Macro for AMD CZ SMBus device ID 2015-06-16 08:58:06 +02:00
i2c-pmcmsp.c i2c: pmcmsp: make use of the new infrastructure for quirks 2015-03-13 15:10:58 +01:00
i2c-pnx.c Merge branch 'i2c/for-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2015-11-10 11:58:25 -08:00
i2c-powermac.c i2c: powermac: make use of the new infrastructure for quirks 2015-03-13 15:10:57 +01:00
i2c-puv3.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-pxa-pci.c i2c: remove DEFINE_PCI_DEVICE_TABLE macro 2014-03-13 09:44:59 +01:00
i2c-pxa.c i2c: pxa: Add support for pxa910/988 & new configuration features 2015-10-25 09:36:43 +01:00
i2c-qup.c i2c: qup: make use of the new infrastructure for quirks 2015-03-13 15:10:53 +01:00
i2c-rcar.c Merge branch 'i2c/for-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2015-11-10 11:58:25 -08:00
i2c-riic.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-rk3x.c i2c: rk3x: populate correct variable for sda_falling_time 2015-11-30 14:27:41 +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: s3c2410: enable RuntimePM before registering to the core 2015-10-15 14:26:07 +02: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: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-sh_mobile.c i2c: sh_mobile: add support for r8a7795 (R-Car H3) 2015-10-20 18:10:20 +02:00
i2c-sibyte.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-simtec.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
i2c-sirf.c i2c: sirf: tune the divider to make i2c bus freq more accurate 2015-10-23 22:48:45 +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: do not use 0x in front of %pa 2015-12-01 02:01:27 +01:00
i2c-stu300.c i2c: stu300: Fix module autoload for OF platform driver 2015-10-20 18:15:39 +02:00
i2c-sun6i-p2wi.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-taos-evm.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-tegra.c i2c: tegra: drop duplicated code for assigning algo 2015-10-20 17:38:19 +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-uniphier-f.c i2c: uniphier_f: add UniPhier FIFO-builtin I2C driver 2015-10-23 21:55:46 +02:00
i2c-uniphier.c i2c: uniphier: add UniPhier FIFO-less I2C driver 2015-10-23 21:55:45 +02:00
i2c-versatile.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +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: clean up inconsistent indenting 2015-08-10 08:37:38 +02:00
i2c-wmt.c i2c: wmt: match return type of wait_for_completion_timeout 2015-03-15 10:29:53 +01:00
i2c-xgene-slimpro.c i2c: xgene-slimpro: dma_mapping_error() doesn't return an error code 2015-08-24 14:23:31 +02:00
i2c-xiic.c i2c: xiic: Prevent concurrent running of the IRQ handler and __xiic_start_xfer() 2015-11-20 16:15:35 +01:00
i2c-xlp9xx.c i2c: xlp9xx: Driver for Netlogic XLP9XX/5XX I2C controller 2015-04-10 18:59:49 +02:00
i2c-xlr.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
scx200_acb.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00