Lines Matching refs:vpcm
218 struct virtio_pcm *vpcm;
220 list_for_each_entry(vpcm, &snd->pcm_list, list)
221 if (vpcm->nid == nid)
222 return vpcm;
239 struct virtio_pcm *vpcm;
241 vpcm = virtsnd_pcm_find(snd, nid);
242 if (!IS_ERR(vpcm))
243 return vpcm;
245 vpcm = devm_kzalloc(&vdev->dev, sizeof(*vpcm), GFP_KERNEL);
246 if (!vpcm)
249 vpcm->nid = nid;
250 list_add_tail(&vpcm->list, &snd->pcm_list);
252 return vpcm;
351 struct virtio_pcm *vpcm;
365 vpcm = virtsnd_pcm_find_or_create(snd, vss->nid);
366 if (IS_ERR(vpcm)) {
367 rc = PTR_ERR(vpcm);
385 vpcm->streams[vss->direction].nsubstreams++;
404 struct virtio_pcm *vpcm;
408 list_for_each_entry(vpcm, &snd->pcm_list, list) {
410 vpcm->streams[SNDRV_PCM_STREAM_PLAYBACK].nsubstreams;
412 vpcm->streams[SNDRV_PCM_STREAM_CAPTURE].nsubstreams;
417 rc = snd_pcm_new(snd->card, VIRTIO_SND_CARD_DRIVER, vpcm->nid,
418 npbs, ncps, &vpcm->pcm);
421 vpcm->nid, rc);
425 vpcm->pcm->info_flags = 0;
426 vpcm->pcm->dev_class = SNDRV_PCM_CLASS_GENERIC;
427 vpcm->pcm->dev_subclass = SNDRV_PCM_SUBCLASS_GENERIC_MIX;
428 snprintf(vpcm->pcm->name, sizeof(vpcm->pcm->name),
429 VIRTIO_SND_PCM_NAME " %u", vpcm->pcm->device);
430 vpcm->pcm->private_data = vpcm;
431 vpcm->pcm->nonatomic = true;
433 for (i = 0; i < ARRAY_SIZE(vpcm->streams); ++i) {
434 struct virtio_pcm_stream *stream = &vpcm->streams[i];
454 vpcm = virtsnd_pcm_find(snd, vss->nid);
455 if (IS_ERR(vpcm))
456 return PTR_ERR(vpcm);
458 vs = &vpcm->streams[vss->direction];
462 list_for_each_entry(vpcm, &snd->pcm_list, list) {
463 for (i = 0; i < ARRAY_SIZE(vpcm->streams); ++i) {
464 struct virtio_pcm_stream *vs = &vpcm->streams[i];
465 struct snd_pcm_str *ks = &vpcm->pcm->streams[i];
474 snd_pcm_set_ops(vpcm->pcm, i, &virtsnd_pcm_ops);
477 snd_pcm_set_managed_buffer_all(vpcm->pcm,