Messages in this thread | | | Subject | Re: [dmaengine] Cyclic DMA regression. | From | Vinod Koul <> | Date | Fri, 20 Apr 2012 15:32:19 +0530 |
| |
On Mon, 2012-04-09 at 09:09 +0200, javier Martin wrote: > On 5 April 2012 08:08, Vinod Koul <vinod.koul@linux.intel.com> wrote: > > this is not right fix. The problem is that we shouldn't mark the cyclic > > descriptor as complete. So for all drivers using cyclic API they should > > do something like this. Can you test if this fixes your issue. > > ----------------- > > diff --git a/drivers/dma/imx-dma.c b/drivers/dma/imx-dma.c > > index a45b5d2..0c7362a 100644 > > --- a/drivers/dma/imx-dma.c > > +++ b/drivers/dma/imx-dma.c > > @@ -571,11 +571,14 @@ static void imxdma_tasklet(unsigned long data) > > if (desc->desc.callback) > > desc->desc.callback(desc->desc.callback_param); > > > > - dma_cookie_complete(&desc->desc); > > - > > - /* If we are dealing with a cyclic descriptor keep it on ld_active */ > > + /* If we are dealing with a cyclic descriptor keep it on ld_active > > + * and don't mark the descriptor as complete. > > + * Only in non-cyclic cases it would be marked as complete > > + */ > > if (imxdma_chan_is_doing_cyclic(imxdmac)) > > goto out; > > + else > > + dma_cookie_complete(&desc->desc); > > > > /* Free 2D slot if it was an interleaved transfer */ > > if (imxdmac->enabled_2d) { > > > > > > -- > > ~Vinod > > > > Hi Vinod, > thank you for your patch. > > It works fine for me: > > Tested-by: Javier Martin <javier.martin@vista-silicon.com> > > Could you apply it in your tree as a fix for 3.4? Thanks, Applied now
-- ~Vinod
| |