At Mon, 22 Jun 2009 11:54:46 -0700 (PDT), Christopher Tsui wrote:
Hi
I am in the process of add mmap support in my ALSA driver.
So this is what i have done so far
In snd_pcm_hardware structure .info = SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID
In snd_pcm_ops structure .mmap = my_pcm_mmap
So to test my code, I use aplay -M -Dhw:0 rock.wav
and this is what I get ALSA lib pcm_mmap.c:378:(snd_pcm_mmap) mmap failed: Invalid argument aplay: set_params:1022: Unable to install hw params: ACCESS: MMAP_INTERLEAVED FORMAT: S16_LE SUBFORMAT: STD SAMPLE_BITS: 16 FRAME_BITS: 32 CHANNELS: 2 RATE: 44100 PERIOD_TIME: (27210 27211) PERIOD_SIZE: 1200 PERIOD_BYTES: 4800 PERIODS: 4 BUFFER_TIME: (108843 108844) BUFFER_SIZE: 4800 BUFFER_BYTES: 19200 TICK_TIME: 10000
The buffer setup looks strange. It couldn't be resolved to the right configuration. You see BUFFER_TIME is between 108843 and 108844, so there is no integer value between them.
Maybe your snd_pcm_hardware is consistent, or you give a too strict hw_constraint.
Anyway, a bit more code snippet would be helpful to analyze.
Takashi