[alsa-devel] [PATCH 4/4] ASoC: DaVinci: pcm, fix underrun by using sram

Nori, Sekhar nsekhar at ti.com
Tue Jul 13 13:00:46 CEST 2010

Hi Troy,

On Tue, Nov 17, 2009 at 05:22:34, Troy Kisky wrote:
> Fix underruns by using dma to copy 1st to sram
> in a ping/pong buffer style and then copying from
> the sram to the ASP. This also has the advantage
> of tolerating very long interrupt latency on dma
> completion.
> Signed-off-by: Troy Kisky <troy.kisky at boundarydevices.com>


> +static int request_ping_pong(struct snd_pcm_substream *substream,
> +             struct davinci_runtime_data *prtd,
> +             struct snd_dma_buffer *iram_dma)
> +{
> +     dma_addr_t asp_src_ping;
> +     dma_addr_t asp_dst_ping;
> +     int link;
> +     struct davinci_pcm_dma_params *dma_data = prtd->params;
> +
> +     /* Request ram master channel */
> +     link = prtd->ram_channel = edma_alloc_channel(EDMA_CHANNEL_ANY,
> +                               davinci_pcm_dma_irq, substream,
> +                               EVENTQ_1);

What is the reason for choosing EVENTQ_1 for this channel? EVENTQ_0
is already being used for ASP channel.

I imagine it will be much easier to tune the queue usage in the system
if all of audio data was using the same queue.

I am working on a patch which lets platform specify the event queues
for audio DMA. I am not sure if I really need to make a provision for
two different queues to be specified - that's why I ask.


More information about the Alsa-devel mailing list