At Tue, 30 Oct 2007 21:24:44 +0500, Alexander E. Patrakov wrote: > > Trent Piepho wrote: > > On Mon, 29 Oct 2007, Alexander E. Patrakov wrote: > > > >> Even though mmap seems to be supported in the driver source (judging > >> from .info = SNDRV_PCM_INFO_MMAP | other flags), I could not figure out > >> the parameters that work. Moreover, the driver seems to accept the same > >> hardware parameters without the mmap, and I could not find parameters > >> that the driver accepts for mmap. > >> > > > > I do not think the saa7134-alsa driver supports mmap. The cx88-alsa driver > > also claimed to support mmap, but it never worked until I fixed it. It's > > pretty clear that the code in saa7134-alsa was based on the same code as > > cx88-alsa, so it's likely it has the same bug. > > > > You are right. The patch below (based on your cx88 patch, but I don't > really understand it) fixes mmap support in saa7134-alsa for me. > Recording via mmap (arecord -M -f S16_LE -c 2 -r 32000 -D hw:1) didn't > work at all before, works now, tested for at least 20 minutes (but, > unfortunately, with one overrun at least 0.719 ms long). > > Signed-off-by: Alexander E. Patrakov <patrakov@xxxxxxxxxx> Looks good to me. Acked-by: Takashi Iwai <tiwai@xxxxxxx> Takashi > --- saa7134-alsa.c 2007-10-12 22:43:44.000000000 +0600 > +++ saa7134-alsa.c 2007-10-30 21:01:10.000000000 +0500 > @@ -544,8 +544,10 @@ > V4L functions, and force ALSA to use that as the DMA area */ > > substream->runtime->dma_area = dev->dmasound.dma.vmalloc; > + substream->runtime->dma_bytes = dev->dmasound.bufsize; > + substream->runtime->dma_addr = 0; > > - return 1; > + return 0; > > } > > @@ -653,6 +655,17 @@ > } > > /* > + * page callback (needed for mmap) > + */ > + > +static struct page *snd_card_saa7134_page(struct snd_pcm_substream *substream, > + unsigned long offset) > +{ > + void *pageptr = substream->runtime->dma_area + offset; > + return vmalloc_to_page(pageptr); > +} > + > +/* > * ALSA capture callbacks definition > */ > > @@ -665,6 +678,7 @@ > .prepare = snd_card_saa7134_capture_prepare, > .trigger = snd_card_saa7134_capture_trigger, > .pointer = snd_card_saa7134_capture_pointer, > + .page = snd_card_saa7134_page, > }; > > /* > > > > -- > Alexander E. Patrakov > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel