[alsa-devel] Query on Audio DMA using DMAEngine

Joel Fernandes joelf at ti.com
Wed Aug 14 06:53:51 CEST 2013


On 08/13/2013 11:30 PM, Joel Fernandes wrote:
> Hi Mike,
> 
> On 07/02/2013 12:50 AM, Mike Looijmans wrote:
> [..]
>>
>>> Either way I'm sure your multi-slot approach is superior, but I don't
>>> see how
>>> you can get away with not updating the DMA addresses on every IRQ with
>>> the
>>> current davinci-pcm or EDMA controller (Unless you use a complicated
>>> mechanism
>>> like ping-pong where the address updates take care of itself). If you
>>> are using
>>> a set of chained slots, you only have so many slots so you have to
>>> continuously
>>> change addresses of the slots at some point or the other for a large
>>> transfer.
>>
>> I use a chain like this:
>>
>> DMA1 -> DMA2 -> DMA... -> DMA1
>>
>> This meant I had to use a DMA PARAM slot for every "period". The OMAP
>> L138 has 128 of those slots, so it's no problem to use a bunch of them.
>> Because the chain is cyclic, there is no need to update any DMA
>> parameter while running. All that ALSA needs to do is empty the buffer
>> before the cycle completes and the current position gets overwritten.
> 
> [Joel] Replying to this thread after a long time but just wondering, how do you
> guarantee in your implementation that DMA will not empty the buffer
> faster than it is filled?


I guess this is also what you've called in some threads as the overrun
condition.

-Joel


More information about the Alsa-devel mailing list