Lines Matching refs:rt
116 static int hiface_pcm_set_rate(struct pcm_runtime *rt, unsigned int rate) in hiface_pcm_set_rate() argument
118 struct usb_device *device = rt->chip->dev; in hiface_pcm_set_rate()
178 struct pcm_runtime *rt = snd_pcm_substream_chip(alsa_sub); in hiface_pcm_get_substream() local
179 struct device *device = &rt->chip->dev->dev; in hiface_pcm_get_substream()
182 return &rt->playback; in hiface_pcm_get_substream()
189 static void hiface_pcm_stream_stop(struct pcm_runtime *rt) in hiface_pcm_stream_stop() argument
193 if (rt->stream_state != STREAM_DISABLED) { in hiface_pcm_stream_stop()
194 rt->stream_state = STREAM_STOPPING; in hiface_pcm_stream_stop()
198 &rt->out_urbs[i].submitted, 100); in hiface_pcm_stream_stop()
201 &rt->out_urbs[i].submitted); in hiface_pcm_stream_stop()
202 usb_kill_urb(&rt->out_urbs[i].instance); in hiface_pcm_stream_stop()
205 rt->stream_state = STREAM_DISABLED; in hiface_pcm_stream_stop()
210 static int hiface_pcm_stream_start(struct pcm_runtime *rt) in hiface_pcm_stream_start() argument
215 if (rt->stream_state == STREAM_DISABLED) { in hiface_pcm_stream_start()
218 rt->panic = false; in hiface_pcm_stream_start()
221 rt->stream_state = STREAM_STARTING; in hiface_pcm_stream_start()
223 memset(rt->out_urbs[i].buffer, 0, PCM_PACKET_SIZE); in hiface_pcm_stream_start()
224 usb_anchor_urb(&rt->out_urbs[i].instance, in hiface_pcm_stream_start()
225 &rt->out_urbs[i].submitted); in hiface_pcm_stream_start()
226 ret = usb_submit_urb(&rt->out_urbs[i].instance, in hiface_pcm_stream_start()
229 hiface_pcm_stream_stop(rt); in hiface_pcm_stream_start()
235 wait_event_timeout(rt->stream_wait_queue, rt->stream_wait_cond, in hiface_pcm_stream_start()
237 if (rt->stream_wait_cond) { in hiface_pcm_stream_start()
238 struct device *device = &rt->chip->dev->dev; in hiface_pcm_stream_start()
241 rt->stream_state = STREAM_RUNNING; in hiface_pcm_stream_start()
243 hiface_pcm_stream_stop(rt); in hiface_pcm_stream_start()
311 struct pcm_runtime *rt = out_urb->chip->pcm; in hiface_pcm_out_urb_handler() local
317 if (rt->panic || rt->stream_state == STREAM_STOPPING) in hiface_pcm_out_urb_handler()
327 if (rt->stream_state == STREAM_STARTING) { in hiface_pcm_out_urb_handler()
328 rt->stream_wait_cond = true; in hiface_pcm_out_urb_handler()
329 wake_up(&rt->stream_wait_queue); in hiface_pcm_out_urb_handler()
333 sub = &rt->playback; in hiface_pcm_out_urb_handler()
352 rt->panic = true; in hiface_pcm_out_urb_handler()
357 struct pcm_runtime *rt = snd_pcm_substream_chip(alsa_sub); in hiface_pcm_open() local
362 if (rt->panic) in hiface_pcm_open()
365 mutex_lock(&rt->stream_mutex); in hiface_pcm_open()
369 sub = &rt->playback; in hiface_pcm_open()
372 struct device *device = &rt->chip->dev->dev; in hiface_pcm_open()
373 mutex_unlock(&rt->stream_mutex); in hiface_pcm_open()
378 if (rt->extra_freq) { in hiface_pcm_open()
387 mutex_unlock(&rt->stream_mutex); in hiface_pcm_open()
394 mutex_unlock(&rt->stream_mutex); in hiface_pcm_open()
400 struct pcm_runtime *rt = snd_pcm_substream_chip(alsa_sub); in hiface_pcm_close() local
404 if (rt->panic) in hiface_pcm_close()
407 mutex_lock(&rt->stream_mutex); in hiface_pcm_close()
409 hiface_pcm_stream_stop(rt); in hiface_pcm_close()
418 mutex_unlock(&rt->stream_mutex); in hiface_pcm_close()
436 struct pcm_runtime *rt = snd_pcm_substream_chip(alsa_sub); in hiface_pcm_prepare() local
441 if (rt->panic) in hiface_pcm_prepare()
446 mutex_lock(&rt->stream_mutex); in hiface_pcm_prepare()
451 if (rt->stream_state == STREAM_DISABLED) { in hiface_pcm_prepare()
453 ret = hiface_pcm_set_rate(rt, alsa_rt->rate); in hiface_pcm_prepare()
455 mutex_unlock(&rt->stream_mutex); in hiface_pcm_prepare()
458 ret = hiface_pcm_stream_start(rt); in hiface_pcm_prepare()
460 mutex_unlock(&rt->stream_mutex); in hiface_pcm_prepare()
464 mutex_unlock(&rt->stream_mutex); in hiface_pcm_prepare()
471 struct pcm_runtime *rt = snd_pcm_substream_chip(alsa_sub); in hiface_pcm_trigger() local
473 if (rt->panic) in hiface_pcm_trigger()
501 struct pcm_runtime *rt = snd_pcm_substream_chip(alsa_sub); in hiface_pcm_pointer() local
505 if (rt->panic || !sub) in hiface_pcm_pointer()
549 struct pcm_runtime *rt = chip->pcm; in hiface_pcm_abort() local
551 if (rt) { in hiface_pcm_abort()
552 rt->panic = true; in hiface_pcm_abort()
554 mutex_lock(&rt->stream_mutex); in hiface_pcm_abort()
555 hiface_pcm_stream_stop(rt); in hiface_pcm_abort()
556 mutex_unlock(&rt->stream_mutex); in hiface_pcm_abort()
562 struct pcm_runtime *rt = chip->pcm; in hiface_pcm_destroy() local
566 kfree(rt->out_urbs[i].buffer); in hiface_pcm_destroy()
574 struct pcm_runtime *rt = pcm->private_data; in hiface_pcm_free() local
576 if (rt) in hiface_pcm_free()
577 hiface_pcm_destroy(rt->chip); in hiface_pcm_free()
585 struct pcm_runtime *rt; in hiface_pcm_init() local
587 rt = kzalloc(sizeof(*rt), GFP_KERNEL); in hiface_pcm_init()
588 if (!rt) in hiface_pcm_init()
591 rt->chip = chip; in hiface_pcm_init()
592 rt->stream_state = STREAM_DISABLED; in hiface_pcm_init()
594 rt->extra_freq = 1; in hiface_pcm_init()
596 init_waitqueue_head(&rt->stream_wait_queue); in hiface_pcm_init()
597 mutex_init(&rt->stream_mutex); in hiface_pcm_init()
598 spin_lock_init(&rt->playback.lock); in hiface_pcm_init()
601 hiface_pcm_init_urb(&rt->out_urbs[i], chip, OUT_EP, in hiface_pcm_init()
606 kfree(rt); in hiface_pcm_init()
611 pcm->private_data = rt; in hiface_pcm_init()
617 rt->instance = pcm; in hiface_pcm_init()
619 chip->pcm = rt; in hiface_pcm_init()