Lines Matching refs:vss

109 	struct virtio_pcm_substream *vss = vs->substreams[substream->number];  in virtsnd_pcm_open()  local
111 substream->runtime->hw = vss->hw; in virtsnd_pcm_open()
112 substream->private_data = vss; in virtsnd_pcm_open()
117 vss->stopped = !!virtsnd_pcm_msg_pending_num(vss); in virtsnd_pcm_open()
118 vss->suspended = false; in virtsnd_pcm_open()
153 static int virtsnd_pcm_dev_set_params(struct virtio_pcm_substream *vss, in virtsnd_pcm_dev_set_params() argument
183 msg = virtsnd_pcm_ctl_msg_alloc(vss, VIRTIO_SND_R_PCM_SET_PARAMS, in virtsnd_pcm_dev_set_params()
195 if (vss->features & (1U << VIRTIO_SND_PCM_F_MSG_POLLING)) in virtsnd_pcm_dev_set_params()
199 if (vss->features & (1U << VIRTIO_SND_PCM_F_EVT_XRUNS)) in virtsnd_pcm_dev_set_params()
203 return virtsnd_ctl_msg_send_sync(vss->snd, msg); in virtsnd_pcm_dev_set_params()
217 struct virtio_pcm_substream *vss = snd_pcm_substream_chip(substream); in virtsnd_pcm_hw_params() local
218 struct virtio_device *vdev = vss->snd->vdev; in virtsnd_pcm_hw_params()
221 if (virtsnd_pcm_msg_pending_num(vss)) { in virtsnd_pcm_hw_params()
223 vss->sid); in virtsnd_pcm_hw_params()
227 rc = virtsnd_pcm_dev_set_params(vss, params_buffer_bytes(hw_params), in virtsnd_pcm_hw_params()
239 virtsnd_pcm_msg_free(vss); in virtsnd_pcm_hw_params()
241 return virtsnd_pcm_msg_alloc(vss, params_periods(hw_params), in virtsnd_pcm_hw_params()
254 struct virtio_pcm_substream *vss = snd_pcm_substream_chip(substream); in virtsnd_pcm_hw_free() local
257 if (!virtsnd_pcm_msg_pending_num(vss)) in virtsnd_pcm_hw_free()
258 virtsnd_pcm_msg_free(vss); in virtsnd_pcm_hw_free()
272 struct virtio_pcm_substream *vss = snd_pcm_substream_chip(substream); in virtsnd_pcm_prepare() local
273 struct virtio_device *vdev = vss->snd->vdev; in virtsnd_pcm_prepare()
276 if (!vss->suspended) { in virtsnd_pcm_prepare()
277 if (virtsnd_pcm_msg_pending_num(vss)) { in virtsnd_pcm_prepare()
279 vss->sid); in virtsnd_pcm_prepare()
283 vss->buffer_bytes = snd_pcm_lib_buffer_bytes(substream); in virtsnd_pcm_prepare()
284 vss->hw_ptr = 0; in virtsnd_pcm_prepare()
285 vss->msg_last_enqueued = -1; in virtsnd_pcm_prepare()
292 rc = virtsnd_pcm_dev_set_params(vss, buffer_bytes, period_bytes, in virtsnd_pcm_prepare()
299 vss->xfer_xrun = false; in virtsnd_pcm_prepare()
300 vss->suspended = false; in virtsnd_pcm_prepare()
301 vss->msg_count = 0; in virtsnd_pcm_prepare()
303 msg = virtsnd_pcm_ctl_msg_alloc(vss, VIRTIO_SND_R_PCM_PREPARE, in virtsnd_pcm_prepare()
308 return virtsnd_ctl_msg_send_sync(vss->snd, msg); in virtsnd_pcm_prepare()
322 struct virtio_pcm_substream *vss = snd_pcm_substream_chip(substream); in virtsnd_pcm_trigger() local
323 struct virtio_snd *snd = vss->snd; in virtsnd_pcm_trigger()
332 queue = virtsnd_pcm_queue(vss); in virtsnd_pcm_trigger()
335 spin_lock(&vss->lock); in virtsnd_pcm_trigger()
336 rc = virtsnd_pcm_msg_send(vss); in virtsnd_pcm_trigger()
338 vss->xfer_enabled = true; in virtsnd_pcm_trigger()
339 spin_unlock(&vss->lock); in virtsnd_pcm_trigger()
344 msg = virtsnd_pcm_ctl_msg_alloc(vss, VIRTIO_SND_R_PCM_START, in virtsnd_pcm_trigger()
347 spin_lock_irqsave(&vss->lock, flags); in virtsnd_pcm_trigger()
348 vss->xfer_enabled = false; in virtsnd_pcm_trigger()
349 spin_unlock_irqrestore(&vss->lock, flags); in virtsnd_pcm_trigger()
356 vss->suspended = true; in virtsnd_pcm_trigger()
359 vss->stopped = true; in virtsnd_pcm_trigger()
362 spin_lock_irqsave(&vss->lock, flags); in virtsnd_pcm_trigger()
363 vss->xfer_enabled = false; in virtsnd_pcm_trigger()
364 spin_unlock_irqrestore(&vss->lock, flags); in virtsnd_pcm_trigger()
366 msg = virtsnd_pcm_ctl_msg_alloc(vss, VIRTIO_SND_R_PCM_STOP, in virtsnd_pcm_trigger()
389 struct virtio_pcm_substream *vss = snd_pcm_substream_chip(substream); in virtsnd_pcm_sync_stop() local
390 struct virtio_snd *snd = vss->snd; in virtsnd_pcm_sync_stop()
395 cancel_work_sync(&vss->elapsed_period); in virtsnd_pcm_sync_stop()
397 if (!vss->stopped) in virtsnd_pcm_sync_stop()
400 msg = virtsnd_pcm_ctl_msg_alloc(vss, VIRTIO_SND_R_PCM_RELEASE, in virtsnd_pcm_sync_stop()
415 rc = wait_event_interruptible_timeout(vss->msg_empty, in virtsnd_pcm_sync_stop()
416 !virtsnd_pcm_msg_pending_num(vss), in virtsnd_pcm_sync_stop()
420 vss->sid); in virtsnd_pcm_sync_stop()
425 vss->stopped = false; in virtsnd_pcm_sync_stop()
441 struct virtio_pcm_substream *vss = snd_pcm_substream_chip(substream); in virtsnd_pcm_pointer() local
445 spin_lock_irqsave(&vss->lock, flags); in virtsnd_pcm_pointer()
446 if (!vss->xfer_xrun) in virtsnd_pcm_pointer()
447 hw_ptr = bytes_to_frames(substream->runtime, vss->hw_ptr); in virtsnd_pcm_pointer()
448 spin_unlock_irqrestore(&vss->lock, flags); in virtsnd_pcm_pointer()