Skip to content

Commit

Permalink
dmaengine: at_hdmac: remove clear-on-read in atc_dostart()
Browse files Browse the repository at this point in the history
This loop on EBCISR register was designed to clear IRQ sources before enabling
a DMA channel. This register is clear-on-read so a race condition can appear if
another channel is already active and has just finished its transfer.
Removing this read on EBCISR is fixing the issue as there is no case where an IRQ
could be pending: we already make sure that this register is drained at probe()
time and during resume.

Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
  • Loading branch information
Nicolas Ferre authored and Vinod Koul committed Apr 20, 2012
1 parent d04525e commit ed8b0d6
Showing 1 changed file with 0 additions and 4 deletions.
4 changes: 0 additions & 4 deletions drivers/dma/at_hdmac.c
Original file line number Diff line number Diff line change
Expand Up @@ -221,10 +221,6 @@ static void atc_dostart(struct at_dma_chan *atchan, struct at_desc *first)

vdbg_dump_regs(atchan);

/* clear any pending interrupt */
while (dma_readl(atdma, EBCISR))
cpu_relax();

channel_writel(atchan, SADDR, 0);
channel_writel(atchan, DADDR, 0);
channel_writel(atchan, CTRLA, 0);
Expand Down

0 comments on commit ed8b0d6

Please sign in to comment.