Re: [PATCHv5] DMAEngine: Define interleaved transfer request api

From: Vinod Koul
Date: Fri Oct 14 2011 - 10:26:44 EST


On Fri, 2011-10-14 at 19:35 +0530, Vinod Koul wrote:
> On Fri, 2011-10-14 at 19:21 +0530, Jassi Brar wrote:
> > >> ... we need to restore 'bool frm_irq' and add new 'bool cyclic' that
> > >> would replay the transfer(i.e, reset dma-pointers to src_start & dst_start)
> > >> after 'numf' frames have been transferred.
> > > I was thinking more on lines to have this conveyed thru a flag.
> > >
> > Sorry don't see exactly what you mean.
> > frm_irq and numf are independent of each other and could
> > cover more cases than a single flag.
> >
> > > Anyway I plan to work on merging device_prep_slave_sg and
> > > device_prep_cyclic to single API. Think more of device_prep_cyclic as
> > > special case with sg length one and flag to tell dmac its cyclic.
> > >
> > AFAIK, usually the ring buffer is divided into N (>1) different
> > periods that need
> > to be transferred in endless loop.
> But that is not interleaved dma, we have a cyclic API, barry should be
> using that
> >
> > > Similarly here we could use/define this flag to say this transfer is
> > > also cyclic in nature and dmac then reloads the list again.
> > > That way any prep can be made cyclic in nature by just using this flag.
> > >
> > Some cyclic transfers might want callback done after each period/frame
> > while some not. We can't cover using just one flag.
> Again, we would typically have two cases:
> 1) notification at end of each list
> 2) notification at end of each frame and complete list
> If we use ACK flag along with callback field we can achieve above by
> defining rules as
> - if callback is set, notify after list completion (this is set in
> descriptor for this purpose)
> - if ACK is set, then call for each frame as well
> If we agree then, we should add this info to documentation and fix
> existing behavior
Sorry meant DMA_PREP_INTERRUPT flag above :)


--
~Vinod

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/