diff options
author | Venkatraman S <svenkatr@ti.com> | 2010-07-12 20:27:51 +0530 |
---|---|---|
committer | Ricardo Perez Olivares <x0081762@ti.com> | 2010-07-14 20:43:10 -0500 |
commit | 5f6b80a3aa81237f72188886c582308525f1c56c (patch) | |
tree | 92be55941a19c8f876d17b310435f0955fe9daef | |
parent | 575b8f6a18702876975ca6fd5ad2f5a46e79039d (diff) |
hsmmc: setup further transfers only on block completion interruptti-2.6.34-omap4-L24.7-p5
Several types of interrupts could have been enabled for
the DMA channel used by hsmmc. Only the block completion
interrupt should be used to setup further dma transfers
to the card, else it can lead to sync errors
Signed-off-by: Venkatraman S <svenkatr@ti.com>
-rw-r--r-- | drivers/mmc/host/omap_hsmmc.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c index 3e23560a4708..28108412e6aa 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c @@ -1299,8 +1299,10 @@ static void omap_hsmmc_dma_cb(int lch, u16 ch_status, void *data) { struct omap_hsmmc_host *host = data; - if (ch_status & OMAP2_DMA_MISALIGNED_ERR_IRQ) - dev_dbg(mmc_dev(host->mmc), "MISALIGNED_ADRS_ERR\n"); + if (!(ch_status & 0x20)) { + dev_dbg(mmc_dev(host->mmc), "invalid ch stat %x\n", ch_status); + return; + } if (host->dma_ch < 0) return; |