Lines Matching full:dummy
3 * Dummy soundcard
26 MODULE_DESCRIPTION("Dummy soundcard (/dev/null)");
28 MODULE_SUPPORTED_DEVICE("{{ALSA,Dummy soundcard}}");
60 MODULE_PARM_DESC(index, "Index value for dummy soundcard.");
62 MODULE_PARM_DESC(id, "ID string for dummy soundcard.");
64 MODULE_PARM_DESC(enable, "Enable this dummy soundcard.");
68 MODULE_PARM_DESC(pcm_devs, "PCM devices # (0-4) for dummy driver.");
70 MODULE_PARM_DESC(pcm_substreams, "PCM substreams # (1-128) for dummy driver.");
72 //MODULE_PARM_DESC(midi_devs, "MIDI devices # (0-2) for dummy driver.");
537 struct snd_dummy *dummy = snd_pcm_substream_chip(substream); in dummy_pcm_open() local
538 const struct dummy_model *model = dummy->model; in dummy_pcm_open()
554 runtime->hw = dummy->pcm_hw; in dummy_pcm_open()
587 * dummy buffer handling
669 static int snd_card_dummy_pcm(struct snd_dummy *dummy, int device, in snd_card_dummy_pcm() argument
676 err = snd_pcm_new(dummy->card, "Dummy PCM", device, in snd_card_dummy_pcm()
680 dummy->pcm = pcm; in snd_card_dummy_pcm()
687 pcm->private_data = dummy; in snd_card_dummy_pcm()
689 strcpy(pcm->name, "Dummy PCM"); in snd_card_dummy_pcm()
725 struct snd_dummy *dummy = snd_kcontrol_chip(kcontrol); in snd_dummy_volume_get() local
728 spin_lock_irq(&dummy->mixer_lock); in snd_dummy_volume_get()
729 ucontrol->value.integer.value[0] = dummy->mixer_volume[addr][0]; in snd_dummy_volume_get()
730 ucontrol->value.integer.value[1] = dummy->mixer_volume[addr][1]; in snd_dummy_volume_get()
731 spin_unlock_irq(&dummy->mixer_lock); in snd_dummy_volume_get()
738 struct snd_dummy *dummy = snd_kcontrol_chip(kcontrol); in snd_dummy_volume_put() local
752 spin_lock_irq(&dummy->mixer_lock); in snd_dummy_volume_put()
753 change = dummy->mixer_volume[addr][0] != left || in snd_dummy_volume_put()
754 dummy->mixer_volume[addr][1] != right; in snd_dummy_volume_put()
755 dummy->mixer_volume[addr][0] = left; in snd_dummy_volume_put()
756 dummy->mixer_volume[addr][1] = right; in snd_dummy_volume_put()
757 spin_unlock_irq(&dummy->mixer_lock); in snd_dummy_volume_put()
774 struct snd_dummy *dummy = snd_kcontrol_chip(kcontrol); in snd_dummy_capsrc_get() local
777 spin_lock_irq(&dummy->mixer_lock); in snd_dummy_capsrc_get()
778 ucontrol->value.integer.value[0] = dummy->capture_source[addr][0]; in snd_dummy_capsrc_get()
779 ucontrol->value.integer.value[1] = dummy->capture_source[addr][1]; in snd_dummy_capsrc_get()
780 spin_unlock_irq(&dummy->mixer_lock); in snd_dummy_capsrc_get()
786 struct snd_dummy *dummy = snd_kcontrol_chip(kcontrol); in snd_dummy_capsrc_put() local
792 spin_lock_irq(&dummy->mixer_lock); in snd_dummy_capsrc_put()
793 change = dummy->capture_source[addr][0] != left && in snd_dummy_capsrc_put()
794 dummy->capture_source[addr][1] != right; in snd_dummy_capsrc_put()
795 dummy->capture_source[addr][0] = left; in snd_dummy_capsrc_put()
796 dummy->capture_source[addr][1] = right; in snd_dummy_capsrc_put()
797 spin_unlock_irq(&dummy->mixer_lock); in snd_dummy_capsrc_put()
812 struct snd_dummy *dummy = snd_kcontrol_chip(kcontrol); in snd_dummy_iobox_get() local
814 value->value.enumerated.item[0] = dummy->iobox; in snd_dummy_iobox_get()
821 struct snd_dummy *dummy = snd_kcontrol_chip(kcontrol); in snd_dummy_iobox_put() local
827 changed = value->value.enumerated.item[0] != dummy->iobox; in snd_dummy_iobox_put()
829 dummy->iobox = value->value.enumerated.item[0]; in snd_dummy_iobox_put()
831 if (dummy->iobox) { in snd_dummy_iobox_put()
832 dummy->cd_volume_ctl->vd[0].access &= in snd_dummy_iobox_put()
834 dummy->cd_switch_ctl->vd[0].access &= in snd_dummy_iobox_put()
837 dummy->cd_volume_ctl->vd[0].access |= in snd_dummy_iobox_put()
839 dummy->cd_switch_ctl->vd[0].access |= in snd_dummy_iobox_put()
843 snd_ctl_notify(dummy->card, SNDRV_CTL_EVENT_MASK_INFO, in snd_dummy_iobox_put()
844 &dummy->cd_volume_ctl->id); in snd_dummy_iobox_put()
845 snd_ctl_notify(dummy->card, SNDRV_CTL_EVENT_MASK_INFO, in snd_dummy_iobox_put()
846 &dummy->cd_switch_ctl->id); in snd_dummy_iobox_put()
872 static int snd_card_dummy_new_mixer(struct snd_dummy *dummy) in snd_card_dummy_new_mixer() argument
874 struct snd_card *card = dummy->card; in snd_card_dummy_new_mixer()
879 spin_lock_init(&dummy->mixer_lock); in snd_card_dummy_new_mixer()
880 strcpy(card->mixername, "Dummy Mixer"); in snd_card_dummy_new_mixer()
881 dummy->iobox = 1; in snd_card_dummy_new_mixer()
884 kcontrol = snd_ctl_new1(&snd_dummy_controls[idx], dummy); in snd_card_dummy_new_mixer()
889 dummy->cd_volume_ctl = kcontrol; in snd_card_dummy_new_mixer()
891 dummy->cd_switch_ctl = kcontrol; in snd_card_dummy_new_mixer()
901 static void print_formats(struct snd_dummy *dummy, in print_formats() argument
907 if (dummy->pcm_hw.formats & pcm_format_to_bits(i)) in print_formats()
912 static void print_rates(struct snd_dummy *dummy, in print_rates() argument
921 if (dummy->pcm_hw.rates & SNDRV_PCM_RATE_CONTINUOUS) in print_rates()
923 if (dummy->pcm_hw.rates & SNDRV_PCM_RATE_KNOT) in print_rates()
926 if (dummy->pcm_hw.rates & (1 << i)) in print_rates()
930 #define get_dummy_int_ptr(dummy, ofs) \ argument
931 (unsigned int *)((char *)&((dummy)->pcm_hw) + (ofs))
932 #define get_dummy_ll_ptr(dummy, ofs) \ argument
933 (unsigned long long *)((char *)&((dummy)->pcm_hw) + (ofs))
964 struct snd_dummy *dummy = entry->private_data; in dummy_proc_read() local
971 *get_dummy_int_ptr(dummy, fields[i].offset)); in dummy_proc_read()
974 *get_dummy_ll_ptr(dummy, fields[i].offset)); in dummy_proc_read()
976 print_formats(dummy, buffer); in dummy_proc_read()
978 print_rates(dummy, buffer); in dummy_proc_read()
986 struct snd_dummy *dummy = entry->private_data; in dummy_proc_write() local
1006 *get_dummy_int_ptr(dummy, fields[i].offset) = val; in dummy_proc_write()
1008 *get_dummy_ll_ptr(dummy, fields[i].offset) = val; in dummy_proc_write()
1024 struct snd_dummy *dummy; in snd_dummy_probe() local
1033 dummy = card->private_data; in snd_dummy_probe()
1034 dummy->card = card; in snd_dummy_probe()
1038 "snd-dummy: Using model '%s' for card %i\n", in snd_dummy_probe()
1040 m = dummy->model = *mdl; in snd_dummy_probe()
1049 err = snd_card_dummy_pcm(dummy, idx, pcm_substreams[dev]); in snd_dummy_probe()
1054 dummy->pcm_hw = dummy_pcm_hardware; in snd_dummy_probe()
1057 dummy->pcm_hw.formats = m->formats; in snd_dummy_probe()
1059 dummy->pcm_hw.buffer_bytes_max = m->buffer_bytes_max; in snd_dummy_probe()
1061 dummy->pcm_hw.period_bytes_min = m->period_bytes_min; in snd_dummy_probe()
1063 dummy->pcm_hw.period_bytes_max = m->period_bytes_max; in snd_dummy_probe()
1065 dummy->pcm_hw.periods_min = m->periods_min; in snd_dummy_probe()
1067 dummy->pcm_hw.periods_max = m->periods_max; in snd_dummy_probe()
1069 dummy->pcm_hw.rates = m->rates; in snd_dummy_probe()
1071 dummy->pcm_hw.rate_min = m->rate_min; in snd_dummy_probe()
1073 dummy->pcm_hw.rate_max = m->rate_max; in snd_dummy_probe()
1075 dummy->pcm_hw.channels_min = m->channels_min; in snd_dummy_probe()
1077 dummy->pcm_hw.channels_max = m->channels_max; in snd_dummy_probe()
1080 err = snd_card_dummy_new_mixer(dummy); in snd_dummy_probe()
1083 strcpy(card->driver, "Dummy"); in snd_dummy_probe()
1084 strcpy(card->shortname, "Dummy"); in snd_dummy_probe()
1085 sprintf(card->longname, "Dummy %i", dev + 1); in snd_dummy_probe()
1087 dummy_proc_init(dummy); in snd_dummy_probe()
1181 printk(KERN_ERR "Dummy soundcard not found or device busy\n"); in alsa_card_dummy_init()