Lines Matching refs:loopback
34 MODULE_DESCRIPTION("A loopback soundcard");
48 MODULE_PARM_DESC(index, "Index value for loopback soundcard.");
50 MODULE_PARM_DESC(id, "ID string for loopback soundcard.");
52 MODULE_PARM_DESC(enable, "Enable this loopback soundcard.");
54 MODULE_PARM_DESC(pcm_substreams, "PCM substreams # (1-8) for loopback driver.");
71 * call in loopback->cable_lock
87 * call in loopback->cable_lock
130 struct loopback {
140 struct loopback *loopback;
194 return &dpcm->loopback->setup[dpcm->substream->number][device];
296 /* call in loopback->cable_lock */
307 * loopback->cable_lock is locked. Therefore no need to lock
351 card = cable->streams[SNDRV_PCM_STREAM_PLAYBACK]->loopback->card;
373 snd_ctl_notify(dpcm->loopback->card,
489 mutex_lock(&dpcm->loopback->cable_lock);
495 mutex_unlock(&dpcm->loopback->cable_lock);
700 "Period size (%lu frames) of loopback device is not corresponding to timer resolution (%lu nsec = %lu frames) of card timer %d,%d,%d. Use period size of %lu frames for loopback device.",
915 mutex_lock(&dpcm->loopback->cable_lock);
917 mutex_unlock(&dpcm->loopback->cable_lock);
937 mutex_lock(&dpcm->loopback->cable_lock);
940 mutex_unlock(&dpcm->loopback->cable_lock);
951 mutex_lock(&dpcm->loopback->cable_lock);
954 mutex_unlock(&dpcm->loopback->cable_lock);
967 mutex_lock(&dpcm->loopback->cable_lock);
970 mutex_unlock(&dpcm->loopback->cable_lock);
983 mutex_lock(&dpcm->loopback->cable_lock);
986 mutex_unlock(&dpcm->loopback->cable_lock);
995 struct loopback *loopback = substream->private_data;
999 cable = loopback->cables[substream->number][dev];
1013 loopback->cables[substream->number][dev] = NULL;
1095 /* call in loopback->cable_lock */
1112 err = loopback_parse_timer_id(dpcm->loopback->timer_source, &tid);
1116 dpcm->loopback->timer_source, err);
1123 timeri = snd_timer_instance_new(dpcm->loopback->card->id);
1144 /* The mutex loopback->cable_lock is kept locked.
1187 struct loopback *loopback = substream->private_data;
1193 mutex_lock(&loopback->cable_lock);
1199 dpcm->loopback = loopback;
1202 cable = loopback->cables[substream->number][dev];
1211 if (loopback->timer_source)
1215 loopback->cables[substream->number][dev] = cable;
1281 mutex_unlock(&loopback->cable_lock);
1287 struct loopback *loopback = substream->private_data;
1293 mutex_lock(&loopback->cable_lock);
1295 mutex_unlock(&loopback->cable_lock);
1308 static int loopback_pcm_new(struct loopback *loopback,
1314 err = snd_pcm_new(loopback->card, "Loopback PCM", device,
1322 pcm->private_data = loopback;
1326 loopback->pcm[device] = pcm;
1344 struct loopback *loopback = snd_kcontrol_chip(kcontrol);
1346 mutex_lock(&loopback->cable_lock);
1348 loopback->setup[kcontrol->id.subdevice]
1350 mutex_unlock(&loopback->cable_lock);
1357 struct loopback *loopback = snd_kcontrol_chip(kcontrol);
1366 mutex_lock(&loopback->cable_lock);
1367 if (val != loopback->setup[kcontrol->id.subdevice]
1369 loopback->setup[kcontrol->id.subdevice]
1373 mutex_unlock(&loopback->cable_lock);
1380 struct loopback *loopback = snd_kcontrol_chip(kcontrol);
1382 mutex_lock(&loopback->cable_lock);
1384 loopback->setup[kcontrol->id.subdevice]
1386 mutex_unlock(&loopback->cable_lock);
1393 struct loopback *loopback = snd_kcontrol_chip(kcontrol);
1398 mutex_lock(&loopback->cable_lock);
1399 if (val != loopback->setup[kcontrol->id.subdevice]
1401 loopback->setup[kcontrol->id.subdevice]
1405 mutex_unlock(&loopback->cable_lock);
1412 struct loopback *loopback = snd_kcontrol_chip(kcontrol);
1417 mutex_lock(&loopback->cable_lock);
1418 cable = loopback->cables[kcontrol->id.subdevice][kcontrol->id.device ^ 1];
1424 mutex_unlock(&loopback->cable_lock);
1443 struct loopback *loopback = snd_kcontrol_chip(kcontrol);
1446 (__force int)loopback->setup[kcontrol->id.subdevice]
1465 struct loopback *loopback = snd_kcontrol_chip(kcontrol);
1467 mutex_lock(&loopback->cable_lock);
1469 loopback->setup[kcontrol->id.subdevice]
1471 mutex_unlock(&loopback->cable_lock);
1489 struct loopback *loopback = snd_kcontrol_chip(kcontrol);
1491 mutex_lock(&loopback->cable_lock);
1493 loopback->setup[kcontrol->id.subdevice]
1495 mutex_unlock(&loopback->cable_lock);
1548 static int loopback_mixer_new(struct loopback *loopback, int notify)
1550 struct snd_card *card = loopback->card;
1558 pcm = loopback->pcm[dev];
1562 setup = &loopback->setup[substr][dev];
1571 loopback);
1627 struct loopback *loopback,
1631 struct loopback_cable *cable = loopback->cables[sub][num];
1648 struct loopback *loopback = entry->private_data;
1651 mutex_lock(&loopback->cable_lock);
1655 print_substream_info(buffer, loopback, sub, num);
1656 mutex_unlock(&loopback->cable_lock);
1659 static int loopback_cable_proc_new(struct loopback *loopback, int cidx)
1664 return snd_card_ro_proc_new(loopback->card, name, loopback,
1668 static void loopback_set_timer_source(struct loopback *loopback,
1671 if (loopback->timer_source) {
1672 devm_kfree(loopback->card->dev, loopback->timer_source);
1673 loopback->timer_source = NULL;
1676 loopback->timer_source = devm_kstrdup(loopback->card->dev,
1683 struct loopback *loopback = entry->private_data;
1685 mutex_lock(&loopback->cable_lock);
1687 loopback->timer_source ? loopback->timer_source : "");
1688 mutex_unlock(&loopback->cable_lock);
1694 struct loopback *loopback = entry->private_data;
1697 mutex_lock(&loopback->cable_lock);
1699 loopback_set_timer_source(loopback, strim(line));
1700 mutex_unlock(&loopback->cable_lock);
1703 static int loopback_timer_source_proc_new(struct loopback *loopback)
1705 return snd_card_rw_proc_new(loopback->card, "timer_source", loopback,
1713 struct loopback *loopback;
1718 sizeof(struct loopback), &card);
1721 loopback = card->private_data;
1728 loopback->card = card;
1729 loopback_set_timer_source(loopback, timer_source[dev]);
1731 mutex_init(&loopback->cable_lock);
1733 err = loopback_pcm_new(loopback, 0, pcm_substreams[dev]);
1736 err = loopback_pcm_new(loopback, 1, pcm_substreams[dev]);
1739 err = loopback_mixer_new(loopback, pcm_notify[dev] ? 1 : 0);
1742 loopback_cable_proc_new(loopback, 0);
1743 loopback_cable_proc_new(loopback, 1);
1744 loopback_timer_source_proc_new(loopback);
1834 printk(KERN_ERR "aloop: No loopback enabled\n");