On Mon, 2012-04-16 at 14:46 +0200, Nicolas Ferre wrote: > 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 <[email protected]> > Cc: stable <[email protected]> Applied thanks.
> --- > drivers/dma/at_hdmac.c | 4 ---- > 1 file changed, 4 deletions(-) > > diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c > index 7aa58d2..445fdf8 100644 > --- a/drivers/dma/at_hdmac.c > +++ b/drivers/dma/at_hdmac.c > @@ -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); -- ~Vinod -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
