summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/dma.c
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2012-03-06 13:43:32 +0530
committerSimone Willett <swillett@nvidia.com>2012-03-06 20:08:17 -0800
commitc16155d9b0a6956e7170c837d824cf3c362a14c2 (patch)
treea0cbcd89bac6568da9a238c85a3d9e907807fdb4 /arch/arm/mach-tegra/dma.c
parentd5824b800ac2273f684ca814462f9055cd86d2fd (diff)
ARM: tegra: dma: Fix multiple time request deletion
When doing the cleanups in isr, the request was deleted two times after full buffer completion on double buffering of dma mode. Removing extra request deletion. Change-Id: I6ef30b67d5d73bbc1d7a479d75b8e6ccba6a6f0a Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-on: http://git-master/r/87992 Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/dma.c')
-rw-r--r--arch/arm/mach-tegra/dma.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/arch/arm/mach-tegra/dma.c b/arch/arm/mach-tegra/dma.c
index c5f32e69316f..e51ef19d0784 100644
--- a/arch/arm/mach-tegra/dma.c
+++ b/arch/arm/mach-tegra/dma.c
@@ -778,7 +778,6 @@ static void handle_oneshot_dma(struct tegra_dma_channel *ch)
static void handle_continuous_dbl_dma(struct tegra_dma_channel *ch)
{
struct tegra_dma_req *req;
- struct tegra_dma_req *nreq;
req = list_entry(ch->list.next, typeof(*req), node);
@@ -840,8 +839,8 @@ static void handle_continuous_dbl_dma(struct tegra_dma_channel *ch)
tegra_dma_stop(ch);
} else {
/* Check that next req on list should be in flight */
- nreq = list_entry(ch->list.next, typeof(*nreq), node);
- if (nreq->status != TEGRA_DMA_REQ_INFLIGHT) {
+ req = list_entry(ch->list.next, typeof(*req), node);
+ if (req->status != TEGRA_DMA_REQ_INFLIGHT) {
/*
* We should not land here if queue mechanism
* with system latency are properly configured.
@@ -851,11 +850,6 @@ static void handle_continuous_dbl_dma(struct tegra_dma_channel *ch)
start_head_req(ch);
}
}
-
- list_del(&req->node);
-
- ch->callback = req->complete;
- ch->cb_req = req;
return;
}
tegra_dma_stop(ch);