diff options
author | Laxman Dewangan <ldewangan@nvidia.com> | 2012-03-06 13:43:32 +0530 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-03-06 20:08:17 -0800 |
commit | c16155d9b0a6956e7170c837d824cf3c362a14c2 (patch) | |
tree | a0cbcd89bac6568da9a238c85a3d9e907807fdb4 /arch/arm/mach-tegra/dma.c | |
parent | d5824b800ac2273f684ca814462f9055cd86d2fd (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.c | 10 |
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); |