aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/dma/amba-pl08x.c
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2012-04-09 16:53:21 -0400
committerVinod Koul <vinod.koul@linux.intel.com>2012-04-23 08:53:55 -0400
commitd29bf01941795891828bf671f74c3a4f6fc3517f (patch)
tree88a39de4092bd68ae648a8d585261376af31a9f0 /drivers/dma/amba-pl08x.c
parent7e426da823fc7cd428b82ff2cf3615da24c73352 (diff)
dma/amba-pl08x: check for terminal count status only
For some reason I can't figure out we're reading the PL080_INT_STATUS register instead of PL080_TC_STATUS when checking for the terminal count. The PL080_INT_STATUS is a logical OR between the error and terminal count status register and may not report what we want it to, especially if there is an error and a terminal count at the same time and the former is not lowered in time for the check in the TC register. Make sure we read what we're actually interested in. Cc: Russell King <linux@arm.linux.org.uk> Cc: Viresh Kumar <viresh.kumar@st.com> Cc: Alim Akhtar <alim.akhtar@gmail.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Viresh Kumar <viresh.kumar@st.com> Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
Diffstat (limited to 'drivers/dma/amba-pl08x.c')
-rw-r--r--drivers/dma/amba-pl08x.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c
index c301a8ec31aa..08589c683e2b 100644
--- a/drivers/dma/amba-pl08x.c
+++ b/drivers/dma/amba-pl08x.c
@@ -1615,7 +1615,7 @@ static irqreturn_t pl08x_irq(int irq, void *dev)
1615 __func__, err); 1615 __func__, err);
1616 writel(err, pl08x->base + PL080_ERR_CLEAR); 1616 writel(err, pl08x->base + PL080_ERR_CLEAR);
1617 } 1617 }
1618 tc = readl(pl08x->base + PL080_INT_STATUS); 1618 tc = readl(pl08x->base + PL080_TC_STATUS);
1619 if (tc) 1619 if (tc)
1620 writel(tc, pl08x->base + PL080_TC_CLEAR); 1620 writel(tc, pl08x->base + PL080_TC_CLEAR);
1621 1621