Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sdhci: handle dma boundary interrupts

When the device hits certain memory boundaries, it signals an
interrupt and expects to be serviced. We don't need the feature
but we need to make sure the device doesn't stall.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>

+9
+9
drivers/mmc/host/sdhci.c
··· 963 963 if (intmask & (SDHCI_INT_DATA_AVAIL | SDHCI_INT_SPACE_AVAIL)) 964 964 sdhci_transfer_pio(host); 965 965 966 + /* 967 + * We currently don't do anything fancy with DMA 968 + * boundaries, but as we can't disable the feature 969 + * we need to at least restart the transfer. 970 + */ 971 + if (intmask & SDHCI_INT_DMA_END) 972 + writel(readl(host->ioaddr + SDHCI_DMA_ADDRESS), 973 + host->ioaddr + SDHCI_DMA_ADDRESS); 974 + 966 975 if (intmask & SDHCI_INT_DATA_END) 967 976 sdhci_finish_data(host); 968 977 }