summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorChaitanya Bandi <bandik@nvidia.com>2012-04-16 17:12:02 +0530
committerSimone Willett <swillett@nvidia.com>2012-04-20 15:20:25 -0700
commitdff743fd36183a25d9ef83cafaf7e4974e15e6b4 (patch)
treeedfda9b4a2292270589eef99905e968c3ac4c12d /arch
parentb26d1dbafda0ff28b3aa2811b185411f67c0a768 (diff)
ARM: tegra: dma: Use no DMA interrupts if no callbacks
If there are no callbacks associated with the request, dma interrupt is not enabled. Bug 969125 Change-Id: Ifbf2a8d6c474187927ee38af03cb96e53e199b83 Signed-off-by: Chaitanya Bandi <bandik@nvidia.com> Reviewed-on: http://git-master/r/96724 Reviewed-by: Automatic_Commit_Validation_User Tested-by: Sumit Bhattacharya <sumitb@nvidia.com> Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/dma.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/dma.c b/arch/arm/mach-tegra/dma.c
index 1c415083e8c4..e4fe67fcba95 100644
--- a/arch/arm/mach-tegra/dma.c
+++ b/arch/arm/mach-tegra/dma.c
@@ -394,7 +394,8 @@ skip_status:
spin_unlock_irqrestore(&ch->lock, irq_flags);
/* Callback should be called without any lock */
- req->complete(req);
+ if(req->complete)
+ req->complete(req);
return 0;
}
EXPORT_SYMBOL(tegra_dma_dequeue_req);
@@ -757,7 +758,10 @@ static void tegra_dma_update_hw(struct tegra_dma_channel *ch,
u32 apb_ptr;
u32 csr;
- csr = CSR_IE_EOC | CSR_FLOW;
+ csr = CSR_FLOW;
+ if (req->complete || req->threshold)
+ csr |= CSR_IE_EOC;
+
ahb_seq = AHB_SEQ_INTR_ENB;
switch (req->req_sel) {