diff options
| -rw-r--r-- | sound/pci/echoaudio/echoaudio.c | 30 | ||||
| -rw-r--r-- | sound/pci/echoaudio/mia.c | 1 |
2 files changed, 27 insertions, 4 deletions
diff --git a/sound/pci/echoaudio/echoaudio.c b/sound/pci/echoaudio/echoaudio.c index da2065cd2c0d..1305f7ca02c3 100644 --- a/sound/pci/echoaudio/echoaudio.c +++ b/sound/pci/echoaudio/echoaudio.c | |||
| @@ -950,7 +950,7 @@ static int __devinit snd_echo_new_pcm(struct echoaudio *chip) | |||
| 950 | Control interface | 950 | Control interface |
| 951 | ******************************************************************************/ | 951 | ******************************************************************************/ |
| 952 | 952 | ||
| 953 | #ifndef ECHOCARD_HAS_VMIXER | 953 | #if !defined(ECHOCARD_HAS_VMIXER) || defined(ECHOCARD_HAS_LINE_OUT_GAIN) |
| 954 | 954 | ||
| 955 | /******************* PCM output volume *******************/ | 955 | /******************* PCM output volume *******************/ |
| 956 | static int snd_echo_output_gain_info(struct snd_kcontrol *kcontrol, | 956 | static int snd_echo_output_gain_info(struct snd_kcontrol *kcontrol, |
| @@ -1003,6 +1003,19 @@ static int snd_echo_output_gain_put(struct snd_kcontrol *kcontrol, | |||
| 1003 | return changed; | 1003 | return changed; |
| 1004 | } | 1004 | } |
| 1005 | 1005 | ||
| 1006 | #ifdef ECHOCARD_HAS_LINE_OUT_GAIN | ||
| 1007 | /* On the Mia this one controls the line-out volume */ | ||
| 1008 | static struct snd_kcontrol_new snd_echo_line_output_gain __devinitdata = { | ||
| 1009 | .name = "Line Playback Volume", | ||
| 1010 | .iface = SNDRV_CTL_ELEM_IFACE_MIXER, | ||
| 1011 | .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | | ||
| 1012 | SNDRV_CTL_ELEM_ACCESS_TLV_READ, | ||
| 1013 | .info = snd_echo_output_gain_info, | ||
| 1014 | .get = snd_echo_output_gain_get, | ||
| 1015 | .put = snd_echo_output_gain_put, | ||
| 1016 | .tlv = {.p = db_scale_output_gain}, | ||
| 1017 | }; | ||
| 1018 | #else | ||
| 1006 | static struct snd_kcontrol_new snd_echo_pcm_output_gain __devinitdata = { | 1019 | static struct snd_kcontrol_new snd_echo_pcm_output_gain __devinitdata = { |
| 1007 | .name = "PCM Playback Volume", | 1020 | .name = "PCM Playback Volume", |
| 1008 | .iface = SNDRV_CTL_ELEM_IFACE_MIXER, | 1021 | .iface = SNDRV_CTL_ELEM_IFACE_MIXER, |
| @@ -1012,9 +1025,10 @@ static struct snd_kcontrol_new snd_echo_pcm_output_gain __devinitdata = { | |||
| 1012 | .put = snd_echo_output_gain_put, | 1025 | .put = snd_echo_output_gain_put, |
| 1013 | .tlv = {.p = db_scale_output_gain}, | 1026 | .tlv = {.p = db_scale_output_gain}, |
| 1014 | }; | 1027 | }; |
| 1015 | |||
| 1016 | #endif | 1028 | #endif |
| 1017 | 1029 | ||
| 1030 | #endif /* !ECHOCARD_HAS_VMIXER || ECHOCARD_HAS_LINE_OUT_GAIN */ | ||
| 1031 | |||
| 1018 | 1032 | ||
| 1019 | 1033 | ||
| 1020 | #ifdef ECHOCARD_HAS_INPUT_GAIN | 1034 | #ifdef ECHOCARD_HAS_INPUT_GAIN |
| @@ -2030,10 +2044,18 @@ static int __devinit snd_echo_probe(struct pci_dev *pci, | |||
| 2030 | snd_echo_vmixer.count = num_pipes_out(chip) * num_busses_out(chip); | 2044 | snd_echo_vmixer.count = num_pipes_out(chip) * num_busses_out(chip); |
| 2031 | if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vmixer, chip))) < 0) | 2045 | if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_vmixer, chip))) < 0) |
| 2032 | goto ctl_error; | 2046 | goto ctl_error; |
| 2033 | #else | 2047 | #ifdef ECHOCARD_HAS_LINE_OUT_GAIN |
| 2034 | if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_pcm_output_gain, chip))) < 0) | 2048 | err = snd_ctl_add(chip->card, |
| 2049 | snd_ctl_new1(&snd_echo_line_output_gain, chip)); | ||
| 2050 | if (err < 0) | ||
| 2035 | goto ctl_error; | 2051 | goto ctl_error; |
| 2036 | #endif | 2052 | #endif |
| 2053 | #else /* ECHOCARD_HAS_VMIXER */ | ||
| 2054 | err = snd_ctl_add(chip->card, | ||
| 2055 | snd_ctl_new1(&snd_echo_pcm_output_gain, chip)); | ||
| 2056 | if (err < 0) | ||
| 2057 | goto ctl_error; | ||
| 2058 | #endif /* ECHOCARD_HAS_VMIXER */ | ||
| 2037 | 2059 | ||
| 2038 | #ifdef ECHOCARD_HAS_INPUT_GAIN | 2060 | #ifdef ECHOCARD_HAS_INPUT_GAIN |
| 2039 | if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_line_input_gain, chip))) < 0) | 2061 | if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&snd_echo_line_input_gain, chip))) < 0) |
diff --git a/sound/pci/echoaudio/mia.c b/sound/pci/echoaudio/mia.c index f3b9b45c9c1b..f05c8c097aa8 100644 --- a/sound/pci/echoaudio/mia.c +++ b/sound/pci/echoaudio/mia.c | |||
| @@ -29,6 +29,7 @@ | |||
| 29 | #define ECHOCARD_HAS_ADAT FALSE | 29 | #define ECHOCARD_HAS_ADAT FALSE |
| 30 | #define ECHOCARD_HAS_STEREO_BIG_ENDIAN32 | 30 | #define ECHOCARD_HAS_STEREO_BIG_ENDIAN32 |
| 31 | #define ECHOCARD_HAS_MIDI | 31 | #define ECHOCARD_HAS_MIDI |
| 32 | #define ECHOCARD_HAS_LINE_OUT_GAIN | ||
| 32 | 33 | ||
| 33 | /* Pipe indexes */ | 34 | /* Pipe indexes */ |
| 34 | #define PX_ANALOG_OUT 0 /* 8 */ | 35 | #define PX_ANALOG_OUT 0 /* 8 */ |
