Lines Matching full:dummy
3 * Dummy soundcard
27 MODULE_DESCRIPTION("Dummy soundcard (/dev/null)");
64 MODULE_PARM_DESC(index, "Index value for dummy soundcard.");
66 MODULE_PARM_DESC(id, "ID string for dummy soundcard.");
68 MODULE_PARM_DESC(enable, "Enable this dummy soundcard.");
72 MODULE_PARM_DESC(pcm_devs, "PCM devices # (0-4) for dummy driver.");
74 MODULE_PARM_DESC(pcm_substreams, "PCM substreams # (1-128) for dummy driver.");
76 //MODULE_PARM_DESC(midi_devs, "MIDI devices # (0-2) for dummy driver.");
78 MODULE_PARM_DESC(mixer_volume_level_min, "Minimum mixer volume level for dummy driver. Default: -50");
80 MODULE_PARM_DESC(mixer_volume_level_max, "Maximum mixer volume level for dummy driver. Default: 100");
540 struct snd_dummy *dummy = snd_pcm_substream_chip(substream);
541 const struct dummy_model *model = dummy->model;
557 runtime->hw = dummy->pcm_hw;
590 * dummy buffer handling
664 static int snd_card_dummy_pcm(struct snd_dummy *dummy, int device,
671 err = snd_pcm_new(dummy->card, "Dummy PCM", device,
675 dummy->pcm = pcm;
682 pcm->private_data = dummy;
684 strscpy(pcm->name, "Dummy PCM");
720 struct snd_dummy *dummy = snd_kcontrol_chip(kcontrol);
723 guard(spinlock_irq)(&dummy->mixer_lock);
724 ucontrol->value.integer.value[0] = dummy->mixer_volume[addr][0];
725 ucontrol->value.integer.value[1] = dummy->mixer_volume[addr][1];
732 struct snd_dummy *dummy = snd_kcontrol_chip(kcontrol);
746 guard(spinlock_irq)(&dummy->mixer_lock);
747 change = dummy->mixer_volume[addr][0] != left ||
748 dummy->mixer_volume[addr][1] != right;
749 dummy->mixer_volume[addr][0] = left;
750 dummy->mixer_volume[addr][1] = right;
767 struct snd_dummy *dummy = snd_kcontrol_chip(kcontrol);
770 guard(spinlock_irq)(&dummy->mixer_lock);
771 ucontrol->value.integer.value[0] = dummy->capture_source[addr][0];
772 ucontrol->value.integer.value[1] = dummy->capture_source[addr][1];
778 struct snd_dummy *dummy = snd_kcontrol_chip(kcontrol);
784 guard(spinlock_irq)(&dummy->mixer_lock);
785 change = dummy->capture_source[addr][0] != left &&
786 dummy->capture_source[addr][1] != right;
787 dummy->capture_source[addr][0] = left;
788 dummy->capture_source[addr][1] = right;
803 struct snd_dummy *dummy = snd_kcontrol_chip(kcontrol);
805 value->value.enumerated.item[0] = dummy->iobox;
812 struct snd_dummy *dummy = snd_kcontrol_chip(kcontrol);
818 changed = value->value.enumerated.item[0] != dummy->iobox;
820 dummy->iobox = value->value.enumerated.item[0];
822 if (dummy->iobox) {
823 dummy->cd_volume_ctl->vd[0].access &=
825 dummy->cd_switch_ctl->vd[0].access &=
828 dummy->cd_volume_ctl->vd[0].access |=
830 dummy->cd_switch_ctl->vd[0].access |=
834 snd_ctl_notify(dummy->card, SNDRV_CTL_EVENT_MASK_INFO,
835 &dummy->cd_volume_ctl->id);
836 snd_ctl_notify(dummy->card, SNDRV_CTL_EVENT_MASK_INFO,
837 &dummy->cd_switch_ctl->id);
863 static int snd_card_dummy_new_mixer(struct snd_dummy *dummy)
865 struct snd_card *card = dummy->card;
870 spin_lock_init(&dummy->mixer_lock);
871 strscpy(card->mixername, "Dummy Mixer");
872 dummy->iobox = 1;
875 kcontrol = snd_ctl_new1(&snd_dummy_controls[idx], dummy);
880 dummy->cd_volume_ctl = kcontrol;
882 dummy->cd_switch_ctl = kcontrol;
892 static void print_formats(struct snd_dummy *dummy,
898 if (dummy->pcm_hw.formats & pcm_format_to_bits(i))
903 static void print_rates(struct snd_dummy *dummy,
912 if (dummy->pcm_hw.rates & SNDRV_PCM_RATE_CONTINUOUS)
914 if (dummy->pcm_hw.rates & SNDRV_PCM_RATE_KNOT)
917 if (dummy->pcm_hw.rates & (1 << i))
921 #define get_dummy_int_ptr(dummy, ofs) \
922 (unsigned int *)((char *)&((dummy)->pcm_hw) + (ofs))
923 #define get_dummy_ll_ptr(dummy, ofs) \
924 (unsigned long long *)((char *)&((dummy)->pcm_hw) + (ofs))
955 struct snd_dummy *dummy = entry->private_data;
962 *get_dummy_int_ptr(dummy, fields[i].offset));
965 *get_dummy_ll_ptr(dummy, fields[i].offset));
967 print_formats(dummy, buffer);
969 print_rates(dummy, buffer);
977 struct snd_dummy *dummy = entry->private_data;
997 *get_dummy_int_ptr(dummy, fields[i].offset) = val;
999 *get_dummy_ll_ptr(dummy, fields[i].offset) = val;
1015 struct snd_dummy *dummy;
1024 dummy = card->private_data;
1025 dummy->card = card;
1028 pr_info("snd-dummy: Using model '%s' for card %i\n",
1030 m = dummy->model = *mdl;
1039 err = snd_card_dummy_pcm(dummy, idx, pcm_substreams[dev]);
1044 dummy->pcm_hw = dummy_pcm_hardware;
1047 dummy->pcm_hw.formats = m->formats;
1049 dummy->pcm_hw.buffer_bytes_max = m->buffer_bytes_max;
1051 dummy->pcm_hw.period_bytes_min = m->period_bytes_min;
1053 dummy->pcm_hw.period_bytes_max = m->period_bytes_max;
1055 dummy->pcm_hw.periods_min = m->periods_min;
1057 dummy->pcm_hw.periods_max = m->periods_max;
1059 dummy->pcm_hw.rates = m->rates;
1061 dummy->pcm_hw.rate_min = m->rate_min;
1063 dummy->pcm_hw.rate_max = m->rate_max;
1065 dummy->pcm_hw.channels_min = m->channels_min;
1067 dummy->pcm_hw.channels_max = m->channels_max;
1071 pr_warn("snd-dummy: Invalid mixer volume level: min=%d, max=%d. Fall back to default value.\n",
1076 err = snd_card_dummy_new_mixer(dummy);
1079 strscpy(card->driver, "Dummy");
1080 strscpy(card->shortname, "Dummy");
1081 sprintf(card->longname, "Dummy %i", dev + 1);
1083 dummy_proc_init(dummy);
1162 pr_err("Dummy soundcard not found or device busy\n");