[alsa-devel] DMA Physical Address through "snd_pcm_lib_malloc_pages"

Adish Kuvelker adkuvi at gmail.com
Thu Jun 24 14:34:11 CEST 2010


Hello Takashi,

I called the function snd_pcm_lib_preallocate_pages_for_all passing
SNDRV_DMA_TYPE_DEV and  pointer to struct device as parameters. This
doesn't crash. However with SNDRV_DMA_TYPE_CONTINUOUS it did crash.

I have used the function "snd_pcm_lib_malloc_pages" in the hw_params
callout to allocate DMA memory. I hope this is the right way of doing
the DMA allocation.

With this above configuration can I stay assured that "dma_addr" will
give me the physical address of the buffer?

Regards;
Aadish


On Thu, Jun 24, 2010 at 1:57 PM, Adish Kuvelker <adkuvi at gmail.com> wrote:
> Hello Takashi,
>
> I'm sorry as this is getting bit confusing for me. Playing the PCM
> data I would want to pass the starting physical address of this
> location to the DMA start address. Now can I access "dma_addr"
> directly for this purpose?
> Do I still have to allocate DMA memory or will just passing of this
> dma_addr as source address suffice?
>
> I am new to ALSA framework and it's getting a bit confusing to me.
>
> Regards;
> Aadish
>
> On Thu, Jun 24, 2010 at 1:14 PM, Takashi Iwai <tiwai at suse.de> wrote:
>> At Thu, 24 Jun 2010 12:52:47 +0530,
>> Adish Kuvelker wrote:
>>>
>>> Hello,
>>>
>>> If I use "SNDRV_DMA_TYPE_CONTINUOUS" as a parameter to pre-allocate
>>> function to get contiguous locations of memory and use the function
>>> snd_dma_continuous_data() would that be correct setting for my case?
>>
>> I guess no.  As mentioned, it's no DMA memory, i.e. simple pages
>> allocated via __get_free_pages() and co.
>>
>>> Where are the parameters of dma_addr and dma_area written to the
>>> runtime structure?
>>
>> These are available only for pages properly allocated for DMA.
>>
>>
>> Takashi
>>
>>>
>>> Regards;
>>> Aadish
>>>
>>> On Thu, Jun 24, 2010 at 12:45 PM, Takashi Iwai <tiwai at suse.de> wrote:
>>> > At Thu, 24 Jun 2010 12:38:35 +0530,
>>> > Adish Kuvelker wrote:
>>> >>
>>> >> Hello Takashi,
>>> >>
>>> >> I am developing a DMA Controller driver to service the PCM out data to
>>> >> the Audio controller on the arm-based ATLASIII procesor. In case you
>>> >> need any more information on the architecture I can pass.
>>> >>
>>> >> Since the DMA isn't on PCI bus I am pre-allocation continuous memero
>>> >> using the "snd_pcm_lib_preallocate_pages_for_all" passing
>>> >> SNDDRV_DMA_TYPE_DEV and "snd_dma_continuous_data" as appropriate
>>> >> parameters.
>>> >
>>> > snd_dma_continuous_data() is only for SNDRV_DMA_TYPE_CONTINUOUS.
>>> > In this case, the pages aren't for DMA.
>>> >
>>> > For SNDRV_DMA_TYPE_DEV, simply pass the device pointer you use.
>>> >
>>> >
>>> > Takashi
>>> >
>>>
>>
>


More information about the Alsa-devel mailing list