[alsa-devel] Query on Audio DMA using DMAEngine

Mike Looijmans mike.looijmans at topic.nl
Wed Aug 14 16:10:19 CEST 2013

On 08/14/2013 06:53 AM, Joel Fernandes wrote:
> 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.

Indeed. Alsa monitors the "position" of the ring, and when the DMA 
passes the application's "cursor", it reports an underrun or overrun 
(depending on whether it's capture or playback).

There is no guarantee - only verification. The user's application must 
keep up, or suffer the consequenses. My customer has been using the 
modified driver to capture 16 channels of 32-bit data at 50kHz for quite 
a while now. Before the modification, it wasn't even possible to 
reliably capture more than 4 channels.


Met vriendelijke groet / kind regards,

Mike Looijmans

TOPIC Embedded Systems
Eindhovenseweg 32-C, NL-5683 KH Best
Postbus 440, NL-5680 AK Best
Telefoon: (+31) – (0)499 - 33.69.79
Telefax: (+31) - (0)499 - 33.69.70
E-mail: mike.looijmans at topic.nl
Website: www.topic.nl

Dit e-mail bericht en de eventueel daarbij behorende bijlagen zijn uitsluitend bestemd voor de geadresseerde, zoals die blijkt uit het e-mail bericht en/of de bijlagen. Er kunnen gegevens met betrekking tot een derde instaan. Indien u als niet-geadresseerde dit bericht en de bijlagen ontvangt, terwijl u niet bevoegd of gemachtigd bent om dit bericht namens de geadresseerde te ontvangen, wordt u verzocht de afzender hierover direct te informeren en het e-mail bericht met de bijlagen te vernietigen. Ieder gebruik van de inhoud van het e-mail bericht, waaronder de daarbij behorende bijlagen, door een ander dan de geadresseerde is onrechtmatig jegens ons dan wel de eventueel in het e-mail bericht of de bijlagen voorkomende andere personen. TOPIC Embedded Systems is niet aansprakelijk voor enigerlei schade voortvloeiend uit het gebruik en/of acceptatie van dit e-mail bericht of de daarbij behorende bijlagen.

The contents of this message, as well as any enclosures, are addressed personally to, and thus solely intended for the addressee. They may contain information regarding a third party. A recipient who is neither the addressee, nor empowered to receive this message on behalf of the addressee, is kindly requested to immediately inform the sender of receipt, and to destroy the message and the enclosures. Any use of the contents of this message and/or the enclosures by any other person than the addressee or person who is empowered to receive this message, is illegal towards the sender and/or the aforementioned third party. TOPIC Embedded Systems is not  liable for any damage as a result of the use and/or acceptance of this message and as well as any enclosures.

More information about the Alsa-devel mailing list