Lines Matching refs:pcm
14 #include <sound/pcm.h>
24 return &chip->pcm[substream->stream];
29 struct lola_pcm *pcm = lola_get_pcm(substream);
31 return &pcm->streams[idx];
128 if (s->pcm->card != substream->pcm->card)
159 if (s->pcm->card != substream->pcm->card)
213 struct lola_pcm *pcm = lola_get_pcm(substream);
226 runtime->hw.channels_max = pcm->num_streams - str->index;
246 static void lola_cleanup_slave_streams(struct lola_pcm *pcm,
250 for (i = str->index + 1; i < pcm->num_streams; i++) {
251 struct lola_stream *s = &pcm->streams[i];
291 struct lola_pcm *pcm = lola_get_pcm(substream);
296 lola_cleanup_slave_streams(pcm, str);
340 static int lola_setup_periods(struct lola *chip, struct lola_pcm *pcm,
351 bdl = (__le32 *)(pcm->bdl.area + LOLA_BDL_ENTRY_SIZE * str->index);
427 static int lola_setup_controller(struct lola *chip, struct lola_pcm *pcm,
436 bdl = pcm->bdl.addr + LOLA_BDL_ENTRY_SIZE * str->index;
454 struct lola_pcm *pcm = lola_get_pcm(substream);
462 lola_cleanup_slave_streams(pcm, str);
463 if (str->index + runtime->channels > pcm->num_streams) {
481 err = lola_setup_periods(chip, pcm, substream, str);
494 err = lola_setup_controller(chip, pcm, str);
535 if (s->pcm->card != substream->pcm->card)
561 void lola_pcm_update(struct lola *chip, struct lola_pcm *pcm, unsigned int bits)
565 for (i = 0; bits && i < pcm->num_streams; i++) {
567 struct lola_stream *str = &pcm->streams[i];
587 struct snd_pcm *pcm;
593 PAGE_SIZE, &chip->pcm[i].bdl);
599 chip->pcm[SNDRV_PCM_STREAM_PLAYBACK].num_streams,
600 chip->pcm[SNDRV_PCM_STREAM_CAPTURE].num_streams,
601 &pcm);
604 strlcpy(pcm->name, "Digigram Lola", sizeof(pcm->name));
605 pcm->private_data = chip;
607 if (chip->pcm[i].num_streams)
608 snd_pcm_set_ops(pcm, i, &lola_pcm_ops);
611 snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV_SG,
619 snd_dma_free_pages(&chip->pcm[0].bdl);
620 snd_dma_free_pages(&chip->pcm[1].bdl);
683 struct lola_pcm *pcm = &chip->pcm[dir];
687 for (i = 0; i < pcm->num_streams; i++, nid++) {
688 err = lola_init_stream(chip, &pcm->streams[i], i, nid, dir);