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>
This commit is contained in:
parent
c0f3b6c777
commit
6ba736a10e
1 changed files with 9 additions and 0 deletions
|
@ -963,6 +963,15 @@ static void sdhci_data_irq(struct sdhci_host *host, u32 intmask)
|
|||
if (intmask & (SDHCI_INT_DATA_AVAIL | SDHCI_INT_SPACE_AVAIL))
|
||||
sdhci_transfer_pio(host);
|
||||
|
||||
/*
|
||||
* We currently don't do anything fancy with DMA
|
||||
* boundaries, but as we can't disable the feature
|
||||
* we need to at least restart the transfer.
|
||||
*/
|
||||
if (intmask & SDHCI_INT_DMA_END)
|
||||
writel(readl(host->ioaddr + SDHCI_DMA_ADDRESS),
|
||||
host->ioaddr + SDHCI_DMA_ADDRESS);
|
||||
|
||||
if (intmask & SDHCI_INT_DATA_END)
|
||||
sdhci_finish_data(host);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue