Lines Matching refs:loopback
132 struct loopback { struct
142 struct loopback *loopback; argument
199 return &dpcm->loopback->setup[dpcm->substream->number][device]; in get_setup()
374 card = dpcm_play->loopback->card; in loopback_check_format()
407 snd_ctl_notify(dpcm->loopback->card, in loopback_active_notify()
524 guard(mutex)(&dpcm->loopback->cable_lock); in loopback_prepare()
970 guard(mutex)(&dpcm->loopback->cable_lock); in loopback_hw_free()
991 scoped_guard(mutex, &dpcm->loopback->cable_lock) { in rule_format()
1005 scoped_guard(mutex, &dpcm->loopback->cable_lock) { in rule_rate()
1021 scoped_guard(mutex, &dpcm->loopback->cable_lock) { in rule_channels()
1037 scoped_guard(mutex, &dpcm->loopback->cable_lock) { in rule_period_bytes()
1049 struct loopback *loopback = substream->private_data; in free_cable() local
1053 cable = loopback->cables[substream->number][dev]; in free_cable()
1066 loopback->cables[substream->number][dev] = NULL; in free_cable()
1167 err = loopback_parse_timer_id(dpcm->loopback->timer_source, &tid); in loopback_snd_timer_open()
1171 dpcm->loopback->timer_source, err); in loopback_snd_timer_open()
1178 timeri = snd_timer_instance_new(dpcm->loopback->card->id); in loopback_snd_timer_open()
1242 struct loopback *loopback = substream->private_data; in loopback_open() local
1248 guard(mutex)(&loopback->cable_lock); in loopback_open()
1252 dpcm->loopback = loopback; in loopback_open()
1255 cable = loopback->cables[substream->number][dev]; in loopback_open()
1264 if (loopback->timer_source) in loopback_open()
1268 loopback->cables[substream->number][dev] = cable; in loopback_open()
1339 struct loopback *loopback = substream->private_data; in loopback_close() local
1345 guard(mutex)(&loopback->cable_lock); in loopback_close()
1359 static int loopback_pcm_new(struct loopback *loopback, in loopback_pcm_new() argument
1365 err = snd_pcm_new(loopback->card, "Loopback PCM", device, in loopback_pcm_new()
1373 pcm->private_data = loopback; in loopback_pcm_new()
1377 loopback->pcm[device] = pcm; in loopback_pcm_new()
1395 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_rate_shift_get() local
1397 guard(mutex)(&loopback->cable_lock); in loopback_rate_shift_get()
1399 loopback->setup[kcontrol->id.subdevice] in loopback_rate_shift_get()
1407 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_rate_shift_put() local
1416 guard(mutex)(&loopback->cable_lock); in loopback_rate_shift_put()
1417 if (val != loopback->setup[kcontrol->id.subdevice] in loopback_rate_shift_put()
1419 loopback->setup[kcontrol->id.subdevice] in loopback_rate_shift_put()
1429 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_notify_get() local
1431 guard(mutex)(&loopback->cable_lock); in loopback_notify_get()
1433 loopback->setup[kcontrol->id.subdevice] in loopback_notify_get()
1441 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_notify_put() local
1446 guard(mutex)(&loopback->cable_lock); in loopback_notify_put()
1447 if (val != loopback->setup[kcontrol->id.subdevice] in loopback_notify_put()
1449 loopback->setup[kcontrol->id.subdevice] in loopback_notify_put()
1459 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_active_get() local
1464 guard(mutex)(&loopback->cable_lock); in loopback_active_get()
1465 cable = loopback->cables[kcontrol->id.subdevice][kcontrol->id.device ^ 1]; in loopback_active_get()
1489 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_format_get() local
1492 (__force int)loopback->setup[kcontrol->id.subdevice] in loopback_format_get()
1511 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_rate_get() local
1513 guard(mutex)(&loopback->cable_lock); in loopback_rate_get()
1515 loopback->setup[kcontrol->id.subdevice] in loopback_rate_get()
1534 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_channels_get() local
1536 guard(mutex)(&loopback->cable_lock); in loopback_channels_get()
1538 loopback->setup[kcontrol->id.subdevice] in loopback_channels_get()
1554 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_access_get() local
1557 guard(mutex)(&loopback->cable_lock); in loopback_access_get()
1558 access = loopback->setup[kcontrol->id.subdevice][kcontrol->id.device].access; in loopback_access_get()
1622 static int loopback_mixer_new(struct loopback *loopback, int notify) in loopback_mixer_new() argument
1624 struct snd_card *card = loopback->card; in loopback_mixer_new()
1632 pcm = loopback->pcm[dev]; in loopback_mixer_new()
1636 setup = &loopback->setup[substr][dev]; in loopback_mixer_new()
1646 loopback); in loopback_mixer_new()
1705 struct loopback *loopback, in print_substream_info() argument
1709 struct loopback_cable *cable = loopback->cables[sub][num]; in print_substream_info()
1726 struct loopback *loopback = entry->private_data; in print_cable_info() local
1729 guard(mutex)(&loopback->cable_lock); in print_cable_info()
1733 print_substream_info(buffer, loopback, sub, num); in print_cable_info()
1736 static int loopback_cable_proc_new(struct loopback *loopback, int cidx) in loopback_cable_proc_new() argument
1741 return snd_card_ro_proc_new(loopback->card, name, loopback, in loopback_cable_proc_new()
1745 static void loopback_set_timer_source(struct loopback *loopback, in loopback_set_timer_source() argument
1748 if (loopback->timer_source) { in loopback_set_timer_source()
1749 devm_kfree(loopback->card->dev, loopback->timer_source); in loopback_set_timer_source()
1750 loopback->timer_source = NULL; in loopback_set_timer_source()
1753 loopback->timer_source = devm_kstrdup(loopback->card->dev, in loopback_set_timer_source()
1760 struct loopback *loopback = entry->private_data; in print_timer_source_info() local
1762 guard(mutex)(&loopback->cable_lock); in print_timer_source_info()
1764 loopback->timer_source ? loopback->timer_source : ""); in print_timer_source_info()
1770 struct loopback *loopback = entry->private_data; in change_timer_source_info() local
1773 guard(mutex)(&loopback->cable_lock); in change_timer_source_info()
1775 loopback_set_timer_source(loopback, strim(line)); in change_timer_source_info()
1778 static int loopback_timer_source_proc_new(struct loopback *loopback) in loopback_timer_source_proc_new() argument
1780 return snd_card_rw_proc_new(loopback->card, "timer_source", loopback, in loopback_timer_source_proc_new()
1788 struct loopback *loopback; in loopback_probe() local
1793 sizeof(struct loopback), &card); in loopback_probe()
1796 loopback = card->private_data; in loopback_probe()
1803 loopback->card = card; in loopback_probe()
1804 loopback_set_timer_source(loopback, timer_source[dev]); in loopback_probe()
1806 mutex_init(&loopback->cable_lock); in loopback_probe()
1808 err = loopback_pcm_new(loopback, 0, pcm_substreams[dev]); in loopback_probe()
1811 err = loopback_pcm_new(loopback, 1, pcm_substreams[dev]); in loopback_probe()
1814 err = loopback_mixer_new(loopback, pcm_notify[dev] ? 1 : 0); in loopback_probe()
1817 loopback_cable_proc_new(loopback, 0); in loopback_probe()
1818 loopback_cable_proc_new(loopback, 1); in loopback_probe()
1819 loopback_timer_source_proc_new(loopback); in loopback_probe()