Lines Matching full:rt
112 static int hiface_pcm_set_rate(struct pcm_runtime *rt, unsigned int rate) in hiface_pcm_set_rate() argument
114 struct usb_device *device = rt->chip->dev; in hiface_pcm_set_rate()
174 struct pcm_runtime *rt = snd_pcm_substream_chip(alsa_sub); in hiface_pcm_get_substream() local
175 struct device *device = &rt->chip->dev->dev; in hiface_pcm_get_substream()
178 return &rt->playback; in hiface_pcm_get_substream()
185 static void hiface_pcm_stream_stop(struct pcm_runtime *rt) in hiface_pcm_stream_stop() argument
189 if (rt->stream_state != STREAM_DISABLED) { in hiface_pcm_stream_stop()
190 rt->stream_state = STREAM_STOPPING; in hiface_pcm_stream_stop()
194 &rt->out_urbs[i].submitted, 100); in hiface_pcm_stream_stop()
197 &rt->out_urbs[i].submitted); in hiface_pcm_stream_stop()
198 usb_kill_urb(&rt->out_urbs[i].instance); in hiface_pcm_stream_stop()
201 rt->stream_state = STREAM_DISABLED; in hiface_pcm_stream_stop()
206 static int hiface_pcm_stream_start(struct pcm_runtime *rt) in hiface_pcm_stream_start() argument
211 if (rt->stream_state == STREAM_DISABLED) { in hiface_pcm_stream_start()
214 rt->panic = false; in hiface_pcm_stream_start()
217 rt->stream_state = STREAM_STARTING; in hiface_pcm_stream_start()
219 memset(rt->out_urbs[i].buffer, 0, PCM_PACKET_SIZE); in hiface_pcm_stream_start()
220 usb_anchor_urb(&rt->out_urbs[i].instance, in hiface_pcm_stream_start()
221 &rt->out_urbs[i].submitted); in hiface_pcm_stream_start()
222 ret = usb_submit_urb(&rt->out_urbs[i].instance, in hiface_pcm_stream_start()
225 hiface_pcm_stream_stop(rt); in hiface_pcm_stream_start()
231 wait_event_timeout(rt->stream_wait_queue, rt->stream_wait_cond, in hiface_pcm_stream_start()
233 if (rt->stream_wait_cond) { in hiface_pcm_stream_start()
234 struct device *device = &rt->chip->dev->dev; in hiface_pcm_stream_start()
237 rt->stream_state = STREAM_RUNNING; in hiface_pcm_stream_start()
239 hiface_pcm_stream_stop(rt); in hiface_pcm_stream_start()
307 struct pcm_runtime *rt = out_urb->chip->pcm; in hiface_pcm_out_urb_handler() local
313 if (rt->panic || rt->stream_state == STREAM_STOPPING) in hiface_pcm_out_urb_handler()
323 if (rt->stream_state == STREAM_STARTING) { in hiface_pcm_out_urb_handler()
324 rt->stream_wait_cond = true; in hiface_pcm_out_urb_handler()
325 wake_up(&rt->stream_wait_queue); in hiface_pcm_out_urb_handler()
329 sub = &rt->playback; in hiface_pcm_out_urb_handler()
348 rt->panic = true; in hiface_pcm_out_urb_handler()
353 struct pcm_runtime *rt = snd_pcm_substream_chip(alsa_sub); in hiface_pcm_open() local
358 if (rt->panic) in hiface_pcm_open()
361 mutex_lock(&rt->stream_mutex); in hiface_pcm_open()
365 sub = &rt->playback; in hiface_pcm_open()
368 struct device *device = &rt->chip->dev->dev; in hiface_pcm_open()
369 mutex_unlock(&rt->stream_mutex); in hiface_pcm_open()
374 if (rt->extra_freq) { in hiface_pcm_open()
383 mutex_unlock(&rt->stream_mutex); in hiface_pcm_open()
390 mutex_unlock(&rt->stream_mutex); in hiface_pcm_open()
396 struct pcm_runtime *rt = snd_pcm_substream_chip(alsa_sub); in hiface_pcm_close() local
400 if (rt->panic) in hiface_pcm_close()
403 mutex_lock(&rt->stream_mutex); in hiface_pcm_close()
405 hiface_pcm_stream_stop(rt); in hiface_pcm_close()
414 mutex_unlock(&rt->stream_mutex); in hiface_pcm_close()
432 struct pcm_runtime *rt = snd_pcm_substream_chip(alsa_sub); in hiface_pcm_prepare() local
437 if (rt->panic) in hiface_pcm_prepare()
442 mutex_lock(&rt->stream_mutex); in hiface_pcm_prepare()
444 hiface_pcm_stream_stop(rt); in hiface_pcm_prepare()
449 if (rt->stream_state == STREAM_DISABLED) { in hiface_pcm_prepare()
451 ret = hiface_pcm_set_rate(rt, alsa_rt->rate); in hiface_pcm_prepare()
453 mutex_unlock(&rt->stream_mutex); in hiface_pcm_prepare()
456 ret = hiface_pcm_stream_start(rt); in hiface_pcm_prepare()
458 mutex_unlock(&rt->stream_mutex); in hiface_pcm_prepare()
462 mutex_unlock(&rt->stream_mutex); in hiface_pcm_prepare()
469 struct pcm_runtime *rt = snd_pcm_substream_chip(alsa_sub); in hiface_pcm_trigger() local
471 if (rt->panic) in hiface_pcm_trigger()
499 struct pcm_runtime *rt = snd_pcm_substream_chip(alsa_sub); in hiface_pcm_pointer() local
503 if (rt->panic || !sub) in hiface_pcm_pointer()
548 struct pcm_runtime *rt = chip->pcm; in hiface_pcm_abort() local
550 if (rt) { in hiface_pcm_abort()
551 rt->panic = true; in hiface_pcm_abort()
553 mutex_lock(&rt->stream_mutex); in hiface_pcm_abort()
554 hiface_pcm_stream_stop(rt); in hiface_pcm_abort()
555 mutex_unlock(&rt->stream_mutex); in hiface_pcm_abort()
561 struct pcm_runtime *rt = chip->pcm; in hiface_pcm_destroy() local
565 kfree(rt->out_urbs[i].buffer); in hiface_pcm_destroy()
573 struct pcm_runtime *rt = pcm->private_data; in hiface_pcm_free() local
575 if (rt) in hiface_pcm_free()
576 hiface_pcm_destroy(rt->chip); in hiface_pcm_free()
584 struct pcm_runtime *rt; in hiface_pcm_init() local
586 rt = kzalloc(sizeof(*rt), GFP_KERNEL); in hiface_pcm_init()
587 if (!rt) in hiface_pcm_init()
590 rt->chip = chip; in hiface_pcm_init()
591 rt->stream_state = STREAM_DISABLED; in hiface_pcm_init()
593 rt->extra_freq = 1; in hiface_pcm_init()
595 init_waitqueue_head(&rt->stream_wait_queue); in hiface_pcm_init()
596 mutex_init(&rt->stream_mutex); in hiface_pcm_init()
597 spin_lock_init(&rt->playback.lock); in hiface_pcm_init()
600 ret = hiface_pcm_init_urb(&rt->out_urbs[i], chip, OUT_EP, in hiface_pcm_init()
612 pcm->private_data = rt; in hiface_pcm_init()
618 rt->instance = pcm; in hiface_pcm_init()
620 chip->pcm = rt; in hiface_pcm_init()
625 kfree(rt->out_urbs[i].buffer); in hiface_pcm_init()
626 kfree(rt); in hiface_pcm_init()