• Home
  • Raw
  • Download

Lines Matching refs:cable

93 	unsigned int (*pos_update)(struct loopback_cable *cable);
142 struct loopback_cable *cable; member
231 struct loopback_cable *cable = dpcm->cable; in loopback_snd_timer_start() local
237 err = snd_timer_start(cable->snd_timer.instance, 1); in loopback_snd_timer_start()
248 cable->snd_timer.id.card, in loopback_snd_timer_start()
249 cable->snd_timer.id.device, in loopback_snd_timer_start()
250 cable->snd_timer.id.subdevice, in loopback_snd_timer_start()
269 struct loopback_cable *cable = dpcm->cable; in loopback_snd_timer_stop() local
273 if (cable->running ^ cable->pause) in loopback_snd_timer_stop()
276 err = snd_timer_stop(cable->snd_timer.instance); in loopback_snd_timer_stop()
280 cable->snd_timer.id.card, in loopback_snd_timer_stop()
281 cable->snd_timer.id.device, in loopback_snd_timer_stop()
282 cable->snd_timer.id.subdevice, in loopback_snd_timer_stop()
299 struct loopback_cable *cable = dpcm->cable; in loopback_snd_timer_close_cable() local
302 if (!cable->snd_timer.instance) in loopback_snd_timer_close_cable()
310 snd_timer_close(cable->snd_timer.instance); in loopback_snd_timer_close_cable()
313 cancel_work_sync(&cable->snd_timer.event_work); in loopback_snd_timer_close_cable()
315 snd_timer_instance_free(cable->snd_timer.instance); in loopback_snd_timer_close_cable()
316 memset(&cable->snd_timer, 0, sizeof(cable->snd_timer)); in loopback_snd_timer_close_cable()
321 static int loopback_check_format(struct loopback_cable *cable, int stream) in loopback_check_format() argument
328 if (cable->valid != CABLE_VALID_BOTH) { in loopback_check_format()
333 runtime = cable->streams[SNDRV_PCM_STREAM_PLAYBACK]-> in loopback_check_format()
335 cruntime = cable->streams[SNDRV_PCM_STREAM_CAPTURE]-> in loopback_check_format()
345 snd_pcm_stop(cable->streams[SNDRV_PCM_STREAM_CAPTURE]-> in loopback_check_format()
348 runtime = cable->streams[SNDRV_PCM_STREAM_PLAYBACK]-> in loopback_check_format()
350 setup = get_setup(cable->streams[SNDRV_PCM_STREAM_PLAYBACK]); in loopback_check_format()
351 card = cable->streams[SNDRV_PCM_STREAM_PLAYBACK]->loopback->card; in loopback_check_format()
382 struct loopback_cable *cable = dpcm->cable; in loopback_trigger() local
387 err = loopback_check_format(cable, substream->stream); in loopback_trigger()
393 spin_lock(&cable->lock); in loopback_trigger()
394 cable->running |= stream; in loopback_trigger()
395 cable->pause &= ~stream; in loopback_trigger()
396 err = cable->ops->start(dpcm); in loopback_trigger()
397 spin_unlock(&cable->lock); in loopback_trigger()
402 spin_lock(&cable->lock); in loopback_trigger()
403 cable->running &= ~stream; in loopback_trigger()
404 cable->pause &= ~stream; in loopback_trigger()
405 err = cable->ops->stop(dpcm); in loopback_trigger()
406 spin_unlock(&cable->lock); in loopback_trigger()
412 spin_lock(&cable->lock); in loopback_trigger()
413 cable->pause |= stream; in loopback_trigger()
414 err = cable->ops->stop(dpcm); in loopback_trigger()
415 spin_unlock(&cable->lock); in loopback_trigger()
421 spin_lock(&cable->lock); in loopback_trigger()
423 cable->pause &= ~stream; in loopback_trigger()
424 err = cable->ops->start(dpcm); in loopback_trigger()
425 spin_unlock(&cable->lock); in loopback_trigger()
439 struct loopback_cable *cable = dpcm->cable; in params_change() local
441 cable->hw.formats = pcm_format_to_bits(runtime->format); in params_change()
442 cable->hw.rate_min = runtime->rate; in params_change()
443 cable->hw.rate_max = runtime->rate; in params_change()
444 cable->hw.channels_min = runtime->channels; in params_change()
445 cable->hw.channels_max = runtime->channels; in params_change()
447 if (cable->snd_timer.instance) { in params_change()
448 cable->hw.period_bytes_min = in params_change()
450 cable->hw.period_bytes_max = cable->hw.period_bytes_min; in params_change()
459 struct loopback_cable *cable = dpcm->cable; in loopback_prepare() local
462 if (cable->ops->stop_sync) { in loopback_prepare()
463 err = cable->ops->stop_sync(dpcm); in loopback_prepare()
490 if (!(cable->valid & ~(1 << substream->stream)) || in loopback_prepare()
494 cable->valid |= 1 << substream->stream; in loopback_prepare()
603 (struct loopback_cable *cable) in loopback_jiffies_timer_pos_update() argument
606 cable->streams[SNDRV_PCM_STREAM_PLAYBACK]; in loopback_jiffies_timer_pos_update()
608 cable->streams[SNDRV_PCM_STREAM_CAPTURE]; in loopback_jiffies_timer_pos_update()
613 running = cable->running ^ cable->pause; in loopback_jiffies_timer_pos_update()
662 spin_lock_irqsave(&dpcm->cable->lock, flags); in loopback_jiffies_timer_function()
663 if (loopback_jiffies_timer_pos_update(dpcm->cable) & in loopback_jiffies_timer_function()
668 spin_unlock_irqrestore(&dpcm->cable->lock, flags); in loopback_jiffies_timer_function()
674 spin_unlock_irqrestore(&dpcm->cable->lock, flags); in loopback_jiffies_timer_function()
683 struct loopback_cable *cable = dpcm->cable; in loopback_snd_timer_check_resolution() local
702 cable->snd_timer.id.card, in loopback_snd_timer_check_resolution()
703 cable->snd_timer.id.device, in loopback_snd_timer_check_resolution()
704 cable->snd_timer.id.subdevice, in loopback_snd_timer_check_resolution()
711 static void loopback_snd_timer_period_elapsed(struct loopback_cable *cable, in loopback_snd_timer_period_elapsed() argument
721 spin_lock_irqsave(&cable->lock, flags); in loopback_snd_timer_period_elapsed()
722 running = cable->running ^ cable->pause; in loopback_snd_timer_period_elapsed()
725 spin_unlock_irqrestore(&cable->lock, flags); in loopback_snd_timer_period_elapsed()
729 dpcm_play = cable->streams[SNDRV_PCM_STREAM_PLAYBACK]; in loopback_snd_timer_period_elapsed()
730 dpcm_capt = cable->streams[SNDRV_PCM_STREAM_CAPTURE]; in loopback_snd_timer_period_elapsed()
736 spin_unlock_irqrestore(&cable->lock, flags); in loopback_snd_timer_period_elapsed()
757 spin_unlock_irqrestore(&cable->lock, flags); in loopback_snd_timer_period_elapsed()
780 spin_unlock_irqrestore(&cable->lock, flags); in loopback_snd_timer_period_elapsed()
792 struct loopback_cable *cable = timeri->callback_data; in loopback_snd_timer_function() local
794 loopback_snd_timer_period_elapsed(cable, SNDRV_TIMER_EVENT_TICK, in loopback_snd_timer_function()
800 struct loopback_cable *cable; in loopback_snd_timer_work() local
802 cable = container_of(work, struct loopback_cable, snd_timer.event_work); in loopback_snd_timer_work()
803 loopback_snd_timer_period_elapsed(cable, SNDRV_TIMER_EVENT_MSTOP, 0); in loopback_snd_timer_work()
824 struct loopback_cable *cable = timeri->callback_data; in loopback_snd_timer_event() local
834 schedule_work(&cable->snd_timer.event_work); in loopback_snd_timer_event()
853 struct loopback_cable *cable = dpcm->cable; in loopback_snd_timer_dpcm_info() local
856 cable->snd_timer.id.card, in loopback_snd_timer_dpcm_info()
857 cable->snd_timer.id.device, in loopback_snd_timer_dpcm_info()
858 cable->snd_timer.id.subdevice); in loopback_snd_timer_dpcm_info()
860 (cable->snd_timer.stream == SNDRV_PCM_STREAM_CAPTURE) ? in loopback_snd_timer_dpcm_info()
870 spin_lock(&dpcm->cable->lock); in loopback_pointer()
871 if (dpcm->cable->ops->pos_update) in loopback_pointer()
872 dpcm->cable->ops->pos_update(dpcm->cable); in loopback_pointer()
874 spin_unlock(&dpcm->cable->lock); in loopback_pointer()
913 struct loopback_cable *cable = dpcm->cable; in loopback_hw_free() local
916 cable->valid &= ~(1 << substream->stream); in loopback_hw_free()
933 struct loopback_cable *cable = dpcm->cable; in rule_format() local
938 m.bits[0] = (u_int32_t)cable->hw.formats; in rule_format()
939 m.bits[1] = (u_int32_t)(cable->hw.formats >> 32); in rule_format()
948 struct loopback_cable *cable = dpcm->cable; in rule_rate() local
952 t.min = cable->hw.rate_min; in rule_rate()
953 t.max = cable->hw.rate_max; in rule_rate()
964 struct loopback_cable *cable = dpcm->cable; in rule_channels() local
968 t.min = cable->hw.channels_min; in rule_channels()
969 t.max = cable->hw.channels_max; in rule_channels()
980 struct loopback_cable *cable = dpcm->cable; in rule_period_bytes() local
984 t.min = cable->hw.period_bytes_min; in rule_period_bytes()
985 t.max = cable->hw.period_bytes_max; in rule_period_bytes()
997 struct loopback_cable *cable; in free_cable() local
999 cable = loopback->cables[substream->number][dev]; in free_cable()
1000 if (!cable) in free_cable()
1002 if (cable->streams[!substream->stream]) { in free_cable()
1004 spin_lock_irq(&cable->lock); in free_cable()
1005 cable->streams[substream->stream] = NULL; in free_cable()
1006 spin_unlock_irq(&cable->lock); in free_cable()
1010 if (cable->ops && cable->ops->close_cable && dpcm) in free_cable()
1011 cable->ops->close_cable(dpcm); in free_cable()
1014 kfree(cable); in free_cable()
1104 struct loopback_cable *cable = dpcm->cable; in loopback_snd_timer_open() local
1109 if (cable->snd_timer.instance) in loopback_snd_timer_open()
1120 cable->snd_timer.stream = dpcm->substream->stream; in loopback_snd_timer_open()
1121 cable->snd_timer.id = tid; in loopback_snd_timer_open()
1138 timeri->callback_data = (void *)cable; in loopback_snd_timer_open()
1142 INIT_WORK(&cable->snd_timer.event_work, loopback_snd_timer_work); in loopback_snd_timer_open()
1155 err = snd_timer_open(timeri, &cable->snd_timer.id, current->pid); in loopback_snd_timer_open()
1159 cable->snd_timer.id.card, in loopback_snd_timer_open()
1160 cable->snd_timer.id.device, in loopback_snd_timer_open()
1161 cable->snd_timer.id.subdevice, in loopback_snd_timer_open()
1167 cable->snd_timer.instance = timeri; in loopback_snd_timer_open()
1189 struct loopback_cable *cable = NULL; in loopback_open() local
1202 cable = loopback->cables[substream->number][dev]; in loopback_open()
1203 if (!cable) { in loopback_open()
1204 cable = kzalloc(sizeof(*cable), GFP_KERNEL); in loopback_open()
1205 if (!cable) { in loopback_open()
1209 spin_lock_init(&cable->lock); in loopback_open()
1210 cable->hw = loopback_pcm_hardware; in loopback_open()
1212 cable->ops = &loopback_snd_timer_ops; in loopback_open()
1214 cable->ops = &loopback_jiffies_timer_ops; in loopback_open()
1215 loopback->cables[substream->number][dev] = cable; in loopback_open()
1217 dpcm->cable = cable; in loopback_open()
1220 if (cable->ops->open) { in loopback_open()
1221 err = cable->ops->open(dpcm); in loopback_open()
1254 if (cable->snd_timer.instance) { in loopback_open()
1270 runtime->hw = cable->hw; in loopback_open()
1272 spin_lock_irq(&cable->lock); in loopback_open()
1273 cable->streams[substream->stream] = dpcm; in loopback_open()
1274 spin_unlock_irq(&cable->lock); in loopback_open()
1291 if (dpcm->cable->ops->close_substream) in loopback_close()
1292 err = dpcm->cable->ops->close_substream(dpcm); in loopback_close()
1413 struct loopback_cable *cable; in loopback_active_get() local
1418 cable = loopback->cables[kcontrol->id.subdevice][kcontrol->id.device ^ 1]; in loopback_active_get()
1419 if (cable != NULL) { in loopback_active_get()
1420 unsigned int running = cable->running ^ cable->pause; in loopback_active_get()
1622 if (dpcm->cable->ops->dpcm_info) in print_dpcm_info()
1623 dpcm->cable->ops->dpcm_info(dpcm, buffer); in print_dpcm_info()
1631 struct loopback_cable *cable = loopback->cables[sub][num]; in print_substream_info() local
1634 if (cable == NULL) { in print_substream_info()
1638 snd_iprintf(buffer, " valid: %u\n", cable->valid); in print_substream_info()
1639 snd_iprintf(buffer, " running: %u\n", cable->running); in print_substream_info()
1640 snd_iprintf(buffer, " pause: %u\n", cable->pause); in print_substream_info()
1641 print_dpcm_info(buffer, cable->streams[0], "Playback"); in print_substream_info()
1642 print_dpcm_info(buffer, cable->streams[1], "Capture"); in print_substream_info()