Skip to contentSkip to conversation

omap hsmmc: fix processing of all dma interrupts as block completion

PATCH In review [email protected] 1 participant 1 message Aug 11, 2010

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 48/177 omap hsmmc: fix processing of all dma interrupts as block completion

From: Venkatraman S <[email protected]>

If other informative interrupts are enabled for the DMA channel used by hsmmc, those are incorrectly treated as block completion. This patch lets only the block completion interrupt to be processed.

---

 drivers/mmc/host/omap_hsmmc.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
drivers/mmc/host/omap_hsmmc.c renamed from drivers/mmc/host/omap_hsmmc.c~omap-hsmmc-fix-processing-of-all-dma-interrupts-as-block-completion +5 -2
diff -puN drivers/mmc/host/omap_hsmmc.c~omap-hsmmc-fix-processing-of-all-dma-interrupts-as-block-completion drivers/mmc/host/omap_hsmmc.c
@@ -1273,8 +1273,11 @@ static void omap_hsmmc_dma_cb(int lch, u
 	struct mmc_data *data = host->mrq->data;
 	int dma_ch, req_in_progress;
 
-	if (ch_status & OMAP2_DMA_MISALIGNED_ERR_IRQ)
-		dev_dbg(mmc_dev(host->mmc), "MISALIGNED_ADRS_ERR\n");
+	if (!(ch_status & OMAP_DMA_BLOCK_IRQ)) {
+		dev_warn(mmc_dev(host->mmc), "unexpected dma status %x\n",
+			ch_status);
+		return;
+	}
 
 	spin_lock(&host->irq_lock);
 	if (host->dma_ch < 0) {

_