Re: SNDRV_PCM_INFO_MMAP - what do I need for it?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Takashi Iwai wrote:
> At Wed, 16 Jan 2008 09:17:57 -0600,
> Timur Tabi wrote:
>> My 8610 ASoC driver has this:
>>
>> static const struct snd_pcm_hardware fsl_dma_hardware = {
>>
>> 	.info   		= SNDRV_PCM_INFO_INTERLEAVED,
>>
>> This means that MMAP is not enabled.
>>
>> I understand what MMAP is, but not from an ALSA driver perspective.  If I change 
>> the above line to this:
>>
>> 	.info   		= SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_MMAP | 
>> SNDRV_PCM_INFO_MMAP_VALID,
>>
>> what does ALSA do differently?  Do I need to define any new functions?  From an 
>> application perspective, what is different?
> 
> It means that the driver supports mmap access to the PCM buffer.
> 
> In some cases, you need to implement a proper mmap callback.  For
> example, when the coheret (dma) pages are allocated via
> dma_alloc_coherent and used for the PCM buffer, you need mmap callback
> for ARM, at least because the default mmap handler in the PCM core
> doesn't work for ARM.  In this case, prepare your own mmap callback
> and pass it to pcm ops.  It should call simply dma_mmap_coherent()
> appropriately.

The default mmap handler in the PCM core is snd_pcm_default_mmap()?

How can I know whether this function works?  Can I just add those two flags to 
my .info line, and then .... ?  Is there an ALSA mmap test utility?

>> Also, does DMIX need MMAP support?
> 
> Yes, mandatory.

So just to be clear: the fact that I do *not* have "SNDRV_PCM_INFO_MMAP | 
SNDRV_PCM_INFO_MMAP_VALID" defined in snd_pcm_hardware.info is the reason why I 
get this error message:

root@MPC8610HPCD:/home/demo_files/mp3# alsaplayer -o alsa -q -F 48000
-d plug:dmix ./527182737.mp3 &
[1] 3224
root@MPC8610HPCD:/home/demo_files/mp3# ALSA lib
pcm_direct.c:874:(snd_pcm_direct_initialize_slave) slave plugin does not
support mmap interleaved or mmap noninterleaved access
ALSA lib pcm_dmix.c:878:(snd_pcm_dmix_open) unable to initialize slave
snd_pcm_open: Invalid argument (plug:dmix)
Failed to initialize plugin!
...

-- 
Timur Tabi
Linux kernel developer at Freescale
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux