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

Nori, Sekhar nsekhar at ti.com
Wed Jul 14 15:05:28 CEST 2010


On Wed, Jul 14, 2010 at 00:31:00, troy.kisky at boundarydevices.com wrote:
>
> On Tue 13/07/10 6:00 AM , "Nori, Sekhar" nsekhar at ti.com sent:
>
>       [...]
>
>       > +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.
>
>       Thanks,
>       Sekhar
>
>       The reason is so that the IRAM data can be fetched and used
> while
>
>       EVENTQ_1 fetches the next buffer of data from sdram into IRAM.

Thanks for the explanation. That sounds reasonable.

Just curious as to whether you actually faced an issue
when using the same event queue for both transfers?

I just tested this on DM365 with both transfers on EDMAQ_0
with 16K each of capture and playback IRAM at 48KHz
sampling rate and did not find any issue.

Anyway it makes sense to make provision for platform to choose
different queues for both transfers so will implement my patch
that way.

Thanks,
Sekhar



More information about the Alsa-devel mailing list