aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc
diff options
context:
space:
mode:
authorVenkatraman S <svenkatr@ti.com>2010-08-10 21:01:54 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-08-11 11:59:04 -0400
commitf3584e5e6fd7abda4ef4a7aec9acd9d46387b8ab (patch)
tree9d56c5f9434e999ab361ad50499b0987211f4c38 /drivers/mmc
parent762333e344144283a9da97a34b5dded51ff61b27 (diff)
omap hsmmc: fix processing of all dma interrupts as block completion
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. Signed-off-by: Venkatraman S <svenkatr@ti.com> Acked-by: Madhusudhan Chikkature <madhu.cr@ti.com> Cc: <linux-mmc@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/host/omap_hsmmc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index ee1a3093048e..dc57ef6aef4f 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -1273,8 +1273,11 @@ static void omap_hsmmc_dma_cb(int lch, u16 ch_status, void *cb_data)
1273 struct mmc_data *data = host->mrq->data; 1273 struct mmc_data *data = host->mrq->data;
1274 int dma_ch, req_in_progress; 1274 int dma_ch, req_in_progress;
1275 1275
1276 if (ch_status & OMAP2_DMA_MISALIGNED_ERR_IRQ) 1276 if (!(ch_status & OMAP_DMA_BLOCK_IRQ)) {
1277 dev_dbg(mmc_dev(host->mmc), "MISALIGNED_ADRS_ERR\n"); 1277 dev_warn(mmc_dev(host->mmc), "unexpected dma status %x\n",
1278 ch_status);
1279 return;
1280 }
1278 1281
1279 spin_lock(&host->irq_lock); 1282 spin_lock(&host->irq_lock);
1280 if (host->dma_ch < 0) { 1283 if (host->dma_ch < 0) {