linux_dsm_epyc7002/drivers/i2c/busses
Jon Povey 4bba0fd8d1 i2c-davinci: Fix race when setting up for TX
When setting up to transmit, a race exists between the ISR and
i2c_davinci_xfer_msg() trying to load the first byte and adjust counters.
This is mostly visible for transmits > 1 byte long.

The hardware starts sending immediately that MDR is loaded. IMR trickery
doesn't work because if we start sending, finish the first byte and an
XRDY event occurs before we load IMR to unmask it, we never get an
interrupt, and we timeout.

Move the MDR load after DXR,IMR loads to avoid this race without locking.

Tested on DM355 connected to Techwell TW2836 and Wolfson WM8985

Signed-off-by: Jon Povey <jon.povey@racelogic.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2010-09-28 00:05:08 +01:00
..
i2c-acorn.c [ARM] acorn,ebsa110,footbridge,integrator,sa1100: Convert asm/io.h to linux/io.h 2009-03-25 10:21:35 +00:00
i2c-ali15x3.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-ali1535.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-ali1563.c i2c: Make PCI device ids constant 2010-03-02 12:23:37 +01:00
i2c-amd756-s4882.c i2c: Use snprintf to set adapter names 2009-01-07 14:29:18 +01:00
i2c-amd756.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-amd8111.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-at91.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-au1550.c i2c: Use resource_size macro 2009-06-16 22:42:16 +01:00
i2c-bfin-twi.c i2c-bfin-twi: return completion in interrupt for smbus quick transfers 2010-05-20 00:18:58 +01:00
i2c-cpm.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
i2c-davinci.c i2c-davinci: Fix race when setting up for TX 2010-09-28 00:05:08 +01:00
i2c-designware.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
i2c-elektor.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-gpio.c i2c-gpio: Move initialization code to subsys_initcall() 2010-05-21 18:40:58 +02:00
i2c-highlander.c i2c-highlander: remover superflous variable 2010-05-20 00:19:01 +01:00
i2c-hydra.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-i801.c hwmon: Fix autoloading of fschmd on recent Fujitsu machines 2010-07-09 16:22:51 +02:00
i2c-ibm_iic.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
i2c-ibm_iic.h i2c-ibm_iic: Whitespace cleanup 2008-01-27 18:14:45 +01:00
i2c-imx.c i2c-imx: fix error handling 2010-04-20 01:16:57 +01:00
i2c-iop3xx.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-iop3xx.h
i2c-isch.c i2c: convert i2c-isch to platform_device 2010-03-07 22:17:36 +01:00
i2c-ixp2000.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
i2c-mpc.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
i2c-mv64xxx.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-nforce2-s4985.c i2c: Fix oops on bus multiplexer driver loading 2008-08-10 22:56:15 +02:00
i2c-nforce2.c i2c-nforce2: Remove redundant error messages on ACPI conflict 2010-05-21 18:41:01 +02:00
i2c-nomadik.c i2c-nomadik: fix operator precedence warning 2010-05-20 00:19:00 +01:00
i2c-nuc900.c i2c/nuc900: add i2c driver support for nuc900 2010-08-11 00:34:38 +01:00
i2c-ocores.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-octeon.c i2c-octeon: Return -ETIMEDOUT in octeon_i2c_wait() on timeout 2010-09-27 23:21:16 +01:00
i2c-omap.c i2c-omap: Make sure i2c bus is free before setting it to idle 2010-09-22 01:06:58 +01:00
i2c-parport-light.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-parport.c i2c-parport: Make template structure const 2010-05-21 18:40:57 +02:00
i2c-parport.h i2c-parport: Add SMBus alert support 2010-03-02 12:23:44 +01:00
i2c-pasemi.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-pca-isa.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-pca-platform.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-piix4.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-pmcmsp.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-pnx.c i2c-pnx: Add stop conditions for end of transfer 2010-04-20 01:16:57 +01:00
i2c-powermac.c i2c-powermac: Be less verbose in the absence of real errors. 2010-03-13 20:56:52 +01:00
i2c-pxa.c i2c-pxa: fix compiler warning, due to missing const 2010-08-11 00:28:23 +01:00
i2c-s3c2410.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-s6000.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-s6000.h i2c: xtensa s6000 i2c driver 2009-04-07 10:23:34 +01:00
i2c-scmi.c i2c-scmi: Provide module aliases for automatic loading 2010-03-24 14:38:39 +01:00
i2c-sh7760.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-sh_mobile.c i2c: i2c-sh_mobile support for new ICIC bits 2010-04-07 16:19:47 +09:00
i2c-sibyte.c i2c/mips: Fix error return codes from Sibyte i2c bus driver 2010-07-10 09:42:47 +02:00
i2c-simtec.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-sis96x.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-sis630.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-sis5595.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-stu300.c i2c-stu300: off by one issue 2010-04-20 01:17:13 +01:00
i2c-stub.c i2c-stub: Expose the default functionality flags 2010-05-21 18:40:56 +02:00
i2c-taos-evm.c i2c-taos-evm: Switch echo off to improve performance 2009-09-18 22:45:43 +02:00
i2c-tiny-usb.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
i2c-versatile.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-via.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-viapro.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
i2c-xiic.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
Kconfig Merge branch 'for-linus/i2c-2636' of git://git.fluff.org/bjdooks/linux 2010-08-14 11:57:54 -07:00
Makefile i2c/nuc900: add i2c driver support for nuc900 2010-08-11 00:34:38 +01:00
scx200_acb.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00
scx200_i2c.c i2c: Use <linux/io.h> instead of <asm/io.h> 2010-05-21 18:41:01 +02:00