Re: [PATCHv5] DMAEngine: Define interleaved transfer request api
From: Vinod Koul
Date: Fri Oct 14 2011 - 10:13:33 EST
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
--
~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/