Lines Matching refs:cable
107 struct loopback_cable *cable; member
204 static int loopback_check_format(struct loopback_cable *cable, int stream) in loopback_check_format() argument
211 if (cable->valid != CABLE_VALID_BOTH) { in loopback_check_format()
216 runtime = cable->streams[SNDRV_PCM_STREAM_PLAYBACK]-> in loopback_check_format()
218 cruntime = cable->streams[SNDRV_PCM_STREAM_CAPTURE]-> in loopback_check_format()
228 snd_pcm_stop(cable->streams[SNDRV_PCM_STREAM_CAPTURE]-> in loopback_check_format()
231 runtime = cable->streams[SNDRV_PCM_STREAM_PLAYBACK]-> in loopback_check_format()
233 setup = get_setup(cable->streams[SNDRV_PCM_STREAM_PLAYBACK]); in loopback_check_format()
234 card = cable->streams[SNDRV_PCM_STREAM_PLAYBACK]->loopback->card; in loopback_check_format()
265 struct loopback_cable *cable = dpcm->cable; in loopback_trigger() local
270 err = loopback_check_format(cable, substream->stream); in loopback_trigger()
276 spin_lock(&cable->lock); in loopback_trigger()
277 cable->running |= stream; in loopback_trigger()
278 cable->pause &= ~stream; in loopback_trigger()
280 spin_unlock(&cable->lock); in loopback_trigger()
285 spin_lock(&cable->lock); in loopback_trigger()
286 cable->running &= ~stream; in loopback_trigger()
287 cable->pause &= ~stream; in loopback_trigger()
289 spin_unlock(&cable->lock); in loopback_trigger()
295 spin_lock(&cable->lock); in loopback_trigger()
296 cable->pause |= stream; in loopback_trigger()
298 spin_unlock(&cable->lock); in loopback_trigger()
304 spin_lock(&cable->lock); in loopback_trigger()
306 cable->pause &= ~stream; in loopback_trigger()
308 spin_unlock(&cable->lock); in loopback_trigger()
322 struct loopback_cable *cable = dpcm->cable; in params_change() local
324 cable->hw.formats = pcm_format_to_bits(runtime->format); in params_change()
325 cable->hw.rate_min = runtime->rate; in params_change()
326 cable->hw.rate_max = runtime->rate; in params_change()
327 cable->hw.channels_min = runtime->channels; in params_change()
328 cable->hw.channels_max = runtime->channels; in params_change()
335 struct loopback_cable *cable = dpcm->cable; in loopback_prepare() local
362 if (!(cable->valid & ~(1 << substream->stream)) || in loopback_prepare()
366 cable->valid |= 1 << substream->stream; in loopback_prepare()
474 static unsigned int loopback_pos_update(struct loopback_cable *cable) in loopback_pos_update() argument
477 cable->streams[SNDRV_PCM_STREAM_PLAYBACK]; in loopback_pos_update()
479 cable->streams[SNDRV_PCM_STREAM_CAPTURE]; in loopback_pos_update()
483 running = cable->running ^ cable->pause; in loopback_pos_update()
532 spin_lock_irqsave(&dpcm->cable->lock, flags); in loopback_timer_function()
533 if (loopback_pos_update(dpcm->cable) & (1 << dpcm->substream->stream)) { in loopback_timer_function()
537 spin_unlock_irqrestore(&dpcm->cable->lock, flags); in loopback_timer_function()
543 spin_unlock_irqrestore(&dpcm->cable->lock, flags); in loopback_timer_function()
552 spin_lock(&dpcm->cable->lock); in loopback_pointer()
553 loopback_pos_update(dpcm->cable); in loopback_pointer()
555 spin_unlock(&dpcm->cable->lock); in loopback_pointer()
599 struct loopback_cable *cable = dpcm->cable; in loopback_hw_free() local
602 cable->valid &= ~(1 << substream->stream); in loopback_hw_free()
619 struct loopback_cable *cable = dpcm->cable; in rule_format() local
624 m.bits[0] = (u_int32_t)cable->hw.formats; in rule_format()
625 m.bits[1] = (u_int32_t)(cable->hw.formats >> 32); in rule_format()
634 struct loopback_cable *cable = dpcm->cable; in rule_rate() local
638 t.min = cable->hw.rate_min; in rule_rate()
639 t.max = cable->hw.rate_max; in rule_rate()
650 struct loopback_cable *cable = dpcm->cable; in rule_channels() local
654 t.min = cable->hw.channels_min; in rule_channels()
655 t.max = cable->hw.channels_max; in rule_channels()
666 struct loopback_cable *cable; in free_cable() local
668 cable = loopback->cables[substream->number][dev]; in free_cable()
669 if (!cable) in free_cable()
671 if (cable->streams[!substream->stream]) { in free_cable()
673 spin_lock_irq(&cable->lock); in free_cable()
674 cable->streams[substream->stream] = NULL; in free_cable()
675 spin_unlock_irq(&cable->lock); in free_cable()
679 kfree(cable); in free_cable()
688 struct loopback_cable *cable = NULL; in loopback_open() local
702 cable = loopback->cables[substream->number][dev]; in loopback_open()
703 if (!cable) { in loopback_open()
704 cable = kzalloc(sizeof(*cable), GFP_KERNEL); in loopback_open()
705 if (!cable) { in loopback_open()
709 spin_lock_init(&cable->lock); in loopback_open()
710 cable->hw = loopback_pcm_hardware; in loopback_open()
711 loopback->cables[substream->number][dev] = cable; in loopback_open()
713 dpcm->cable = cable; in loopback_open()
744 runtime->hw = cable->hw; in loopback_open()
746 spin_lock_irq(&cable->lock); in loopback_open()
747 cable->streams[substream->stream] = dpcm; in loopback_open()
748 spin_unlock_irq(&cable->lock); in loopback_open()
887 struct loopback_cable *cable; in loopback_active_get() local
892 cable = loopback->cables[kcontrol->id.subdevice][kcontrol->id.device ^ 1]; in loopback_active_get()
893 if (cable != NULL) { in loopback_active_get()
894 unsigned int running = cable->running ^ cable->pause; in loopback_active_get()
1105 struct loopback_cable *cable = loopback->cables[sub][num]; in print_substream_info() local
1108 if (cable == NULL) { in print_substream_info()
1112 snd_iprintf(buffer, " valid: %u\n", cable->valid); in print_substream_info()
1113 snd_iprintf(buffer, " running: %u\n", cable->running); in print_substream_info()
1114 snd_iprintf(buffer, " pause: %u\n", cable->pause); in print_substream_info()
1115 print_dpcm_info(buffer, cable->streams[0], "Playback"); in print_substream_info()
1116 print_dpcm_info(buffer, cable->streams[1], "Capture"); in print_substream_info()