These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / sound / pci / emu10k1 / emumixer.c
index 55e5716..076b117 100644 (file)
@@ -1741,7 +1741,7 @@ static int snd_audigy_capture_boost_put(struct snd_kcontrol *kcontrol,
 static struct snd_kcontrol_new snd_audigy_capture_boost =
 {
        .iface =        SNDRV_CTL_ELEM_IFACE_MIXER,
 static struct snd_kcontrol_new snd_audigy_capture_boost =
 {
        .iface =        SNDRV_CTL_ELEM_IFACE_MIXER,
-       .name =         "Analog Capture Boost",
+       .name =         "Mic Extra Boost",
        .info =         snd_audigy_capture_boost_info,
        .get =          snd_audigy_capture_boost_get,
        .put =          snd_audigy_capture_boost_put
        .info =         snd_audigy_capture_boost_info,
        .get =          snd_audigy_capture_boost_get,
        .put =          snd_audigy_capture_boost_put
@@ -1819,8 +1819,6 @@ int snd_emu10k1_mixer(struct snd_emu10k1 *emu,
                 * the Philips ADC for 24bit capture */
                "PCM Playback Switch",
                "PCM Playback Volume",
                 * the Philips ADC for 24bit capture */
                "PCM Playback Switch",
                "PCM Playback Volume",
-               "Master Mono Playback Switch",
-               "Master Mono Playback Volume",
                "Master Playback Switch",
                "Master Playback Volume",
                "PCM Out Path & Mute",
                "Master Playback Switch",
                "Master Playback Volume",
                "PCM Out Path & Mute",
@@ -1830,10 +1828,16 @@ int snd_emu10k1_mixer(struct snd_emu10k1 *emu,
                "Capture Switch",
                "Capture Volume",
                "Mic Select",
                "Capture Switch",
                "Capture Volume",
                "Mic Select",
+               "Headphone Playback Switch",
+               "Headphone Playback Volume",
+               "3D Control - Center",
+               "3D Control - Depth",
+               "3D Control - Switch",
                "Video Playback Switch",
                "Video Playback Volume",
                "Mic Playback Switch",
                "Mic Playback Volume",
                "Video Playback Switch",
                "Video Playback Volume",
                "Mic Playback Switch",
                "Mic Playback Volume",
+               "External Amplifier",
                NULL
        };
        static char *audigy_rename_ctls[] = {
                NULL
        };
        static char *audigy_rename_ctls[] = {
@@ -1842,6 +1846,8 @@ int snd_emu10k1_mixer(struct snd_emu10k1 *emu,
                /* "Wave Capture Volume", "PCM Capture Volume", */
                "Wave Master Playback Volume", "Master Playback Volume",
                "AMic Playback Volume", "Mic Playback Volume",
                /* "Wave Capture Volume", "PCM Capture Volume", */
                "Wave Master Playback Volume", "Master Playback Volume",
                "AMic Playback Volume", "Mic Playback Volume",
+               "Master Mono Playback Switch", "Phone Output Playback Switch",
+               "Master Mono Playback Volume", "Phone Output Playback Volume",
                NULL
        };
        static char *audigy_rename_ctls_i2c_adc[] = {
                NULL
        };
        static char *audigy_rename_ctls_i2c_adc[] = {
@@ -1867,8 +1873,6 @@ int snd_emu10k1_mixer(struct snd_emu10k1 *emu,
                 * the Philips ADC for 24bit capture */
                "PCM Playback Switch",
                "PCM Playback Volume",
                 * the Philips ADC for 24bit capture */
                "PCM Playback Switch",
                "PCM Playback Volume",
-               "Master Mono Playback Switch",
-               "Master Mono Playback Volume",
                "Capture Source",
                "Capture Switch",
                "Capture Volume",
                "Capture Source",
                "Capture Switch",
                "Capture Volume",
@@ -1900,7 +1904,8 @@ int snd_emu10k1_mixer(struct snd_emu10k1 *emu,
                "Aux Playback Volume", "Aux Capture Volume",
                "Video Playback Switch", "Video Capture Switch",
                "Video Playback Volume", "Video Capture Volume",
                "Aux Playback Volume", "Aux Capture Volume",
                "Video Playback Switch", "Video Capture Switch",
                "Video Playback Volume", "Video Capture Volume",
-
+               "Master Mono Playback Switch", "Phone Output Playback Switch",
+               "Master Mono Playback Volume", "Phone Output Playback Volume",
                NULL
        };
 
                NULL
        };
 
@@ -1935,6 +1940,9 @@ int snd_emu10k1_mixer(struct snd_emu10k1 *emu,
                        snd_ac97_write_cache(emu->ac97, AC97_MASTER, 0x0000);
                        /* set capture source to mic */
                        snd_ac97_write_cache(emu->ac97, AC97_REC_SEL, 0x0000);
                        snd_ac97_write_cache(emu->ac97, AC97_MASTER, 0x0000);
                        /* set capture source to mic */
                        snd_ac97_write_cache(emu->ac97, AC97_REC_SEL, 0x0000);
+                       /* set mono output (TAD) to mic */
+                       snd_ac97_update_bits(emu->ac97, AC97_GENERAL_PURPOSE,
+                               0x0200, 0x0200);
                        if (emu->card_capabilities->adc_1361t)
                                c = audigy_remove_ctls_1361t_adc;
                        else 
                        if (emu->card_capabilities->adc_1361t)
                                c = audigy_remove_ctls_1361t_adc;
                        else 
@@ -1996,11 +2004,6 @@ int snd_emu10k1_mixer(struct snd_emu10k1 *emu,
                rename_ctl(card, "Analog Mix Capture Volume", "Line2 Capture Volume");
                rename_ctl(card, "Aux2 Capture Volume", "Line3 Capture Volume");
                rename_ctl(card, "Mic Capture Volume", "Unknown1 Capture Volume");
                rename_ctl(card, "Analog Mix Capture Volume", "Line2 Capture Volume");
                rename_ctl(card, "Aux2 Capture Volume", "Line3 Capture Volume");
                rename_ctl(card, "Mic Capture Volume", "Unknown1 Capture Volume");
-               remove_ctl(card, "Headphone Playback Switch");
-               remove_ctl(card, "Headphone Playback Volume");
-               remove_ctl(card, "3D Control - Center");
-               remove_ctl(card, "3D Control - Depth");
-               remove_ctl(card, "3D Control - Switch");
        }
        if ((kctl = emu->ctl_send_routing = snd_ctl_new1(&snd_emu10k1_send_routing_control, emu)) == NULL)
                return -ENOMEM;
        }
        if ((kctl = emu->ctl_send_routing = snd_ctl_new1(&snd_emu10k1_send_routing_control, emu)) == NULL)
                return -ENOMEM;