snd_pcm_hardware_t.info question

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

 



Hi all,
I am trying to fix (improve?) a driver for an embedded
ARM device I bought months ago, and for some reasons
some ALSA applications work fine while other ones
don't... 

Looking at the driver I got, I noticed that the info
field in the snd_pcm_hardware_t struct just defines:

SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_PAUSE

while the info in the tutorial "writing an alsa
driver" defines: 

SNDRV_PCM_INFO_MMAP |
SNDRV_PCM_INFO_INTERLEAVED |
SNDRV_PCM_INFO_BLOCK_TRANSFER | 
SNDRV_PCM_INFO_MMAP_VALID

Furthermore, the driver defines a copy callback
(actually 2, one for playback and one for capture),
where it copies the data from the use space to the dma
buffer. Since the dma buffer was preallocated with
snd_pcm_lib_preallocate_pages_for_all and is
accessible from the "outside", I wonder why the
original author did this...

I have some questions for you gurus:

- what is the difference between SNDRV_PCM_INFO_MMAP
and SNDRV_PCM_INFO_MMAP_VALID? What is
SNDRV_PCM_INFO_BLOCK_TRANSFER?

- The code calls snd_pcm_lib_preallocate_pages_for_all
function as following:

/* allocate the pcm(DMA) memory */
ret = snd_pcm_lib_preallocate_pages_for_all(pcm,
SNDRV_DMA_TYPE_DEV,0, 4*128*1024, 4*128*1024);

is the DMA_TYPE right for an ARM device? Is NULL a
correct value for data in this case?

- In case I get rid of the copy callback, how do I
specify the format of the stream? How does Where can I
find an example for that?

Thanks a lot
Andrea

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
_______________________________________________
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