Lines Matching full:loopback

3  *  Loopback soundcard
34 MODULE_DESCRIPTION("A loopback soundcard");
36 MODULE_SUPPORTED_DEVICE("{{ALSA,Loopback soundcard}}");
51 MODULE_PARM_DESC(index, "Index value for loopback soundcard.");
53 MODULE_PARM_DESC(id, "ID string for loopback soundcard.");
55 MODULE_PARM_DESC(enable, "Enable this loopback soundcard.");
57 MODULE_PARM_DESC(pcm_substreams, "PCM substreams # (1-8) for loopback driver.");
74 * call in loopback->cable_lock
90 * call in loopback->cable_lock
133 struct loopback { struct
143 struct loopback *loopback; argument
213 return &dpcm->loopback->setup[dpcm->substream->number][device]; in get_setup()
253 /* Loopback device has to use same period as timer card. Therefore in loopback_snd_timer_start()
315 /* call in loopback->cable_lock */
326 * loopback->cable_lock is locked. Therefore no need to lock in loopback_snd_timer_close_cable()
370 card = cable->streams[SNDRV_PCM_STREAM_PLAYBACK]->loopback->card; in loopback_check_format()
392 snd_ctl_notify(dpcm->loopback->card, in loopback_active_notify()
508 mutex_lock(&dpcm->loopback->cable_lock); in loopback_prepare()
514 mutex_unlock(&dpcm->loopback->cable_lock); in loopback_prepare()
719 …of loopback device is not corresponding to timer resolution (%lu nsec = %lu frames) of card timer … in loopback_snd_timer_check_resolution()
934 mutex_lock(&dpcm->loopback->cable_lock); in loopback_hw_free()
936 mutex_unlock(&dpcm->loopback->cable_lock); in loopback_hw_free()
956 mutex_lock(&dpcm->loopback->cable_lock); in rule_format()
959 mutex_unlock(&dpcm->loopback->cable_lock); in rule_format()
970 mutex_lock(&dpcm->loopback->cable_lock); in rule_rate()
973 mutex_unlock(&dpcm->loopback->cable_lock); in rule_rate()
986 mutex_lock(&dpcm->loopback->cable_lock); in rule_channels()
989 mutex_unlock(&dpcm->loopback->cable_lock); in rule_channels()
1002 mutex_lock(&dpcm->loopback->cable_lock); in rule_period_bytes()
1005 mutex_unlock(&dpcm->loopback->cable_lock); in rule_period_bytes()
1014 struct loopback *loopback = substream->private_data; in free_cable() local
1018 cable = loopback->cables[substream->number][dev]; in free_cable()
1032 loopback->cables[substream->number][dev] = NULL; in free_cable()
1114 /* call in loopback->cable_lock */
1131 err = loopback_parse_timer_id(dpcm->loopback->timer_source, &tid); in loopback_snd_timer_open()
1135 dpcm->loopback->timer_source, err); in loopback_snd_timer_open()
1142 timeri = snd_timer_instance_new(dpcm->loopback->card->id); in loopback_snd_timer_open()
1163 /* The mutex loopback->cable_lock is kept locked. in loopback_snd_timer_open()
1206 struct loopback *loopback = substream->private_data; in loopback_open() local
1212 mutex_lock(&loopback->cable_lock); in loopback_open()
1218 dpcm->loopback = loopback; in loopback_open()
1221 cable = loopback->cables[substream->number][dev]; in loopback_open()
1230 if (loopback->timer_source) in loopback_open()
1234 loopback->cables[substream->number][dev] = cable; in loopback_open()
1300 mutex_unlock(&loopback->cable_lock); in loopback_open()
1306 struct loopback *loopback = substream->private_data; in loopback_close() local
1312 mutex_lock(&loopback->cable_lock); in loopback_close()
1314 mutex_unlock(&loopback->cable_lock); in loopback_close()
1327 static int loopback_pcm_new(struct loopback *loopback, in loopback_pcm_new() argument
1333 err = snd_pcm_new(loopback->card, "Loopback PCM", device, in loopback_pcm_new()
1341 pcm->private_data = loopback; in loopback_pcm_new()
1343 strcpy(pcm->name, "Loopback PCM"); in loopback_pcm_new()
1345 loopback->pcm[device] = pcm; in loopback_pcm_new()
1363 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_rate_shift_get() local
1365 mutex_lock(&loopback->cable_lock); in loopback_rate_shift_get()
1367 loopback->setup[kcontrol->id.subdevice] in loopback_rate_shift_get()
1369 mutex_unlock(&loopback->cable_lock); in loopback_rate_shift_get()
1376 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_rate_shift_put() local
1385 mutex_lock(&loopback->cable_lock); in loopback_rate_shift_put()
1386 if (val != loopback->setup[kcontrol->id.subdevice] in loopback_rate_shift_put()
1388 loopback->setup[kcontrol->id.subdevice] in loopback_rate_shift_put()
1392 mutex_unlock(&loopback->cable_lock); in loopback_rate_shift_put()
1399 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_notify_get() local
1401 mutex_lock(&loopback->cable_lock); in loopback_notify_get()
1403 loopback->setup[kcontrol->id.subdevice] in loopback_notify_get()
1405 mutex_unlock(&loopback->cable_lock); in loopback_notify_get()
1412 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_notify_put() local
1417 mutex_lock(&loopback->cable_lock); in loopback_notify_put()
1418 if (val != loopback->setup[kcontrol->id.subdevice] in loopback_notify_put()
1420 loopback->setup[kcontrol->id.subdevice] in loopback_notify_put()
1424 mutex_unlock(&loopback->cable_lock); in loopback_notify_put()
1431 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_active_get() local
1436 mutex_lock(&loopback->cable_lock); in loopback_active_get()
1437 cable = loopback->cables[kcontrol->id.subdevice][kcontrol->id.device ^ 1]; in loopback_active_get()
1443 mutex_unlock(&loopback->cable_lock); in loopback_active_get()
1462 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_format_get() local
1465 (__force int)loopback->setup[kcontrol->id.subdevice] in loopback_format_get()
1484 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_rate_get() local
1486 mutex_lock(&loopback->cable_lock); in loopback_rate_get()
1488 loopback->setup[kcontrol->id.subdevice] in loopback_rate_get()
1490 mutex_unlock(&loopback->cable_lock); in loopback_rate_get()
1508 struct loopback *loopback = snd_kcontrol_chip(kcontrol); in loopback_channels_get() local
1510 mutex_lock(&loopback->cable_lock); in loopback_channels_get()
1512 loopback->setup[kcontrol->id.subdevice] in loopback_channels_get()
1514 mutex_unlock(&loopback->cable_lock); in loopback_channels_get()
1567 static int loopback_mixer_new(struct loopback *loopback, int notify) in loopback_mixer_new() argument
1569 struct snd_card *card = loopback->card; in loopback_mixer_new()
1575 strcpy(card->mixername, "Loopback Mixer"); in loopback_mixer_new()
1577 pcm = loopback->pcm[dev]; in loopback_mixer_new()
1581 setup = &loopback->setup[substr][dev]; in loopback_mixer_new()
1590 loopback); in loopback_mixer_new()
1646 struct loopback *loopback, in print_substream_info() argument
1650 struct loopback_cable *cable = loopback->cables[sub][num]; in print_substream_info()
1667 struct loopback *loopback = entry->private_data; in print_cable_info() local
1670 mutex_lock(&loopback->cable_lock); in print_cable_info()
1674 print_substream_info(buffer, loopback, sub, num); in print_cable_info()
1675 mutex_unlock(&loopback->cable_lock); in print_cable_info()
1678 static int loopback_cable_proc_new(struct loopback *loopback, int cidx) in loopback_cable_proc_new() argument
1683 return snd_card_ro_proc_new(loopback->card, name, loopback, in loopback_cable_proc_new()
1687 static void loopback_set_timer_source(struct loopback *loopback, in loopback_set_timer_source() argument
1690 if (loopback->timer_source) { in loopback_set_timer_source()
1691 devm_kfree(loopback->card->dev, loopback->timer_source); in loopback_set_timer_source()
1692 loopback->timer_source = NULL; in loopback_set_timer_source()
1695 loopback->timer_source = devm_kstrdup(loopback->card->dev, in loopback_set_timer_source()
1702 struct loopback *loopback = entry->private_data; in print_timer_source_info() local
1704 mutex_lock(&loopback->cable_lock); in print_timer_source_info()
1706 loopback->timer_source ? loopback->timer_source : ""); in print_timer_source_info()
1707 mutex_unlock(&loopback->cable_lock); in print_timer_source_info()
1713 struct loopback *loopback = entry->private_data; in change_timer_source_info() local
1716 mutex_lock(&loopback->cable_lock); in change_timer_source_info()
1718 loopback_set_timer_source(loopback, strim(line)); in change_timer_source_info()
1719 mutex_unlock(&loopback->cable_lock); in change_timer_source_info()
1722 static int loopback_timer_source_proc_new(struct loopback *loopback) in loopback_timer_source_proc_new() argument
1724 return snd_card_rw_proc_new(loopback->card, "timer_source", loopback, in loopback_timer_source_proc_new()
1732 struct loopback *loopback; in loopback_probe() local
1737 sizeof(struct loopback), &card); in loopback_probe()
1740 loopback = card->private_data; in loopback_probe()
1747 loopback->card = card; in loopback_probe()
1748 loopback_set_timer_source(loopback, timer_source[dev]); in loopback_probe()
1750 mutex_init(&loopback->cable_lock); in loopback_probe()
1752 err = loopback_pcm_new(loopback, 0, pcm_substreams[dev]); in loopback_probe()
1755 err = loopback_pcm_new(loopback, 1, pcm_substreams[dev]); in loopback_probe()
1758 err = loopback_mixer_new(loopback, pcm_notify[dev] ? 1 : 0); in loopback_probe()
1761 loopback_cable_proc_new(loopback, 0); in loopback_probe()
1762 loopback_cable_proc_new(loopback, 1); in loopback_probe()
1763 loopback_timer_source_proc_new(loopback); in loopback_probe()
1764 strcpy(card->driver, "Loopback"); in loopback_probe()
1765 strcpy(card->shortname, "Loopback"); in loopback_probe()
1766 sprintf(card->longname, "Loopback %i", dev + 1); in loopback_probe()
1853 printk(KERN_ERR "aloop: No loopback enabled\n"); in alsa_card_loopback_init()