alistair23-linux/drivers/mmc/host
James Hogan b40af3aa77 mmc: dw_mmc: clear TXDR/RXDR ints before enabling
DMA is only used for transactions exceeding a certain length, otherwise
PIO is used. The TXDR and RXDR interrupts are masked when in DMA mode
but still fire. When switching to PIO mode (e.g. to get SCR field when
an SD card is inserted) these interrupts are not cleared and so they
trigger the ISR as soon as they are unmasked. If the previous DMA did a
write, then the ISR will handle the TXDR interrupt even if the
transaction is a read, completing the transaction without modifying the
read buffer.

This is fixed primarily by clearing these two interrupts before
unmasking them when setting up PIO mode, and also by making the ISR more
robust by only handling TXDR/RXDR in the correct read/write direction.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Acked-by: Will Newton <will.newton@imgtec.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
2011-07-20 17:20:57 -04:00
..
at91_mci.c mmc: at91_mci: fix multiblock SDIO transfers 2010-12-21 11:46:32 -08:00
atmel-mci-regs.h atmel-mci: add MCI2 register definitions 2009-06-13 22:43:01 +02:00
atmel-mci.c Haavard Skinnemoen has left Atmel 2011-05-18 23:24:50 +02:00
au1xmmc.c tree-wide: fix comment/printk typos 2010-11-01 15:38:34 -04:00
bfin_sdh.c mmc: bfin_sdh: fix alloc size for private data 2011-01-26 00:28:41 -05:00
cb710-mmc.c mmc: cb710: Return err value in cb710_wait_while_busy() 2011-03-15 13:49:42 -04:00
cb710-mmc.h mmc: Driver for CB710/720 memory card reader (MMC part) 2009-06-13 22:42:58 +02:00
davinci_mmc.c mmc: davinci: add support for SDIO irq handling 2011-01-09 19:16:18 -05:00
dw_mmc.c mmc: dw_mmc: clear TXDR/RXDR ints before enabling 2011-07-20 17:20:57 -04:00
dw_mmc.h mmc: dw_mmc: support DDR mode 2011-03-15 13:51:47 -04:00
imxmmc.c mmc: Remove distinction between hw and phys segments 2010-10-23 21:11:11 +08:00
imxmmc.h imxmmc: use readl/writel 2008-12-16 14:58:17 +01:00
jz4740_mmc.c mmc: jz4740: don't treat NULL clk as an error 2011-01-25 21:53:51 -05:00
Kconfig mmc: host: delete obsolete sdhci-pxa.c 2011-07-20 17:20:51 -04:00
Makefile mmc: host: delete obsolete sdhci-pxa.c 2011-07-20 17:20:51 -04:00
mmc_spi.c Fix common misspellings 2011-03-31 11:26:23 -03:00
mmci.c ARM: 6980/1: mmci: use StartBitErr to detect bad connections 2011-07-06 20:46:04 +01:00
mmci.h ARM: 6980/1: mmci: use StartBitErr to detect bad connections 2011-07-06 20:46:04 +01:00
msm_sdcc.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc 2011-03-18 22:32:40 -07:00
msm_sdcc.h mmc: msm_sdcc: Add gpio handling function to driver 2011-01-21 16:58:00 -08:00
mvsdio.c mmc: Remove distinction between hw and phys segments 2010-10-23 21:11:11 +08:00
mvsdio.h mmc: SDIO driver for Marvell SoCs 2009-03-24 21:30:03 +01:00
mxcmmc.c mmc: mxcmmc: use dmaengine API 2011-03-15 13:49:32 -04:00
mxs-mmc.c mmc: mxs-mmc: add mmc host driver for i.MX23/28 2011-03-15 13:49:37 -04:00
of_mmc_spi.c mmc: of_mmc_spi: add NO_IRQ define to of_mmc_spi.c 2011-06-18 22:18:00 -04:00
omap.c mmc: omap: Fix possible NULL pointer deref 2011-04-27 19:15:12 -04:00
omap_hsmmc.c mmc: omap_hsmmc: use original sg_len for dma_unmap_sg 2011-06-25 18:51:28 -04:00
pxamci.c mmc: Move regulator handling closer to core 2010-10-23 21:11:16 +08:00
pxamci.h [ARM] pxa: mmc: add 1st host controller support for pxa3xx 2008-01-26 15:07:53 +00:00
s3cmci.c Fix common misspellings 2011-03-31 11:26:23 -03:00
s3cmci.h s3cmci: DMA fixes 2009-10-01 16:11:15 -07:00
sdhci-cns3xxx.c mmc: sdhci: change sdhci-pltfm into a module 2011-07-20 17:20:49 -04:00
sdhci-dove.c mmc: sdhci: change sdhci-pltfm into a module 2011-07-20 17:20:49 -04:00
sdhci-esdhc-imx.c mmc: sdhci: change sdhci-pltfm into a module 2011-07-20 17:20:49 -04:00
sdhci-esdhc.h mmc: sdhci-esdhc: remove SDHCI_QUIRK_NO_CARD_NO_RESET from esdhc 2011-03-25 10:30:49 -04:00
sdhci-of-esdhc.c mmc: sdhci: change sdhci-pltfm into a module 2011-07-20 17:20:49 -04:00
sdhci-of-hlwd.c mmc: sdhci: change sdhci-pltfm into a module 2011-07-20 17:20:49 -04:00
sdhci-pci.c mmc: sdhci: Fix read-only detection with JMicron 388 chip 2011-05-24 21:02:42 -04:00
sdhci-pltfm.c mmc: sdhci: change sdhci-pltfm into a module 2011-07-20 17:20:49 -04:00
sdhci-pltfm.h mmc: sdhci: change sdhci-pltfm into a module 2011-07-20 17:20:49 -04:00
sdhci-pxav2.c mmc: sdhci-pxa: move platform data to include/linux/platform_data 2011-07-20 17:20:52 -04:00
sdhci-pxav3.c mmc: sdhci-pxa: move platform data to include/linux/platform_data 2011-07-20 17:20:52 -04:00
sdhci-s3c.c mmc: sdhci-s3c: Auto CMD12 support 2011-03-15 13:48:25 -04:00
sdhci-spear.c drivers: Final irq namespace conversion 2011-03-29 14:48:19 +02:00
sdhci-tegra.c mmc: sdhci: change sdhci-pltfm into a module 2011-07-20 17:20:49 -04:00
sdhci.c mmc: sdhci: Auto-CMD23 fixes. 2011-05-25 16:52:26 -04:00
sdhci.h mmc: sdhci: Auto-CMD23 support. 2011-05-25 16:51:40 -04:00
sdricoh_cs.c pcmcia: Convert pcmcia_device_id declarations to const 2011-05-06 07:46:22 +02:00
sh_mmcif.c mmc: add runtime and system power-management support to the MMCIF driver 2011-05-24 23:53:51 -04:00
sh_mobile_sdhi.c mmc: sdhi: Add write16_hook 2011-07-20 17:20:57 -04:00
tifm_sd.c mmc: Remove distinction between hw and phys segments 2010-10-23 21:11:11 +08:00
tmio_mmc.c mmc: Use device platform_data to retrieve tmio_mmc platform bits 2011-05-26 19:44:59 +02:00
tmio_mmc.h mmc: sdhi: Add write16_hook 2011-07-20 17:20:57 -04:00
tmio_mmc_dma.c mmc: tmio: Share register access functions 2011-07-20 17:20:56 -04:00
tmio_mmc_pio.c mmc: tmio: Share register access functions 2011-07-20 17:20:56 -04:00
ushc.c mmc: ushc: Remove duplicate include of usb.h 2011-01-25 21:53:43 -05:00
via-sdmmc.c mmc: use pci_dev->revision 2011-03-25 10:30:49 -04:00
vub300.c mmc: vub300: fix null dereferences in error handling 2011-06-18 22:17:51 -04:00
wbsd.c Fix common misspellings 2011-03-31 11:26:23 -03:00
wbsd.h mmc: update header file paths 2007-07-26 01:53:31 +02:00