summaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0097-dmaengine-at_hdmac-remove-clear-on-read-in-atc_dosta.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0097-dmaengine-at_hdmac-remove-clear-on-read-in-atc_dosta.patch')
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0097-dmaengine-at_hdmac-remove-clear-on-read-in-atc_dosta.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0097-dmaengine-at_hdmac-remove-clear-on-read-in-atc_dosta.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0097-dmaengine-at_hdmac-remove-clear-on-read-in-atc_dosta.patch
new file mode 100644
index 00000000..b670af28
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.17/0097-dmaengine-at_hdmac-remove-clear-on-read-in-atc_dosta.patch
@@ -0,0 +1,40 @@
1From 461507ae293668a6dd1543092d2506fa4524d8ec Mon Sep 17 00:00:00 2001
2From: Nicolas Ferre <nicolas.ferre@atmel.com>
3Date: Mon, 16 Apr 2012 14:46:30 +0200
4Subject: [PATCH 097/165] dmaengine: at_hdmac: remove clear-on-read in
5 atc_dostart()
6
7commit ed8b0d67f33518a16c6b2450fe5ebebf180c2d04 upstream.
8
9This loop on EBCISR register was designed to clear IRQ sources before enabling
10a DMA channel. This register is clear-on-read so a race condition can appear if
11another channel is already active and has just finished its transfer.
12Removing this read on EBCISR is fixing the issue as there is no case where an IRQ
13could be pending: we already make sure that this register is drained at probe()
14time and during resume.
15
16Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
17Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
18Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
19---
20 drivers/dma/at_hdmac.c | 4 ----
21 1 files changed, 0 insertions(+), 4 deletions(-)
22
23diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
24index a60adbf..79dcf6e 100644
25--- a/drivers/dma/at_hdmac.c
26+++ b/drivers/dma/at_hdmac.c
27@@ -239,10 +239,6 @@ static void atc_dostart(struct at_dma_chan *atchan, struct at_desc *first)
28
29 vdbg_dump_regs(atchan);
30
31- /* clear any pending interrupt */
32- while (dma_readl(atdma, EBCISR))
33- cpu_relax();
34-
35 channel_writel(atchan, SADDR, 0);
36 channel_writel(atchan, DADDR, 0);
37 channel_writel(atchan, CTRLA, 0);
38--
391.7.7.6
40