ALSA: hda - VIA: Fix independent headphone no sound issue
authorLydia Wang <lydiawang@viatech.com.cn>
Tue, 22 Mar 2011 08:22:37 +0000 (16:22 +0800)
committerTakashi Iwai <tiwai@suse.de>
Tue, 22 Mar 2011 11:42:56 +0000 (12:42 +0100)
Modify via_independent_hp_put() function to support VT1718S and VT1812
codecs, and fix independent headphone no sound issue.

Signed-off-by: Lydia Wang <lydiawang@viatech.com.cn>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_via.c

index 5bc9bd9..2f605e5 100644 (file)
@@ -1191,8 +1191,16 @@ static int via_independent_hp_put(struct snd_kcontrol *kcontrol,
        /* Get Independent Mode index of headphone pin widget */
        spec->hp_independent_mode = spec->hp_independent_mode_index == pinsel
                ? 1 : 0;
-       snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_CONNECT_SEL, pinsel);
+       if (spec->codec_type == VT1718S)
+               snd_hda_codec_write(codec, nid, 0,
+                                   AC_VERB_SET_CONNECT_SEL, pinsel ? 2 : 0);
+       else
+               snd_hda_codec_write(codec, nid, 0,
+                                   AC_VERB_SET_CONNECT_SEL, pinsel);
 
+       if (spec->codec_type == VT1812)
+               snd_hda_codec_write(codec, 0x35, 0,
+                                   AC_VERB_SET_CONNECT_SEL, pinsel);
        if (spec->multiout.hp_nid && spec->multiout.hp_nid
            != spec->multiout.dac_nids[HDA_FRONT])
                snd_hda_codec_setup_stream(codec, spec->multiout.hp_nid,
@@ -1211,6 +1219,8 @@ static int via_independent_hp_put(struct snd_kcontrol *kcontrol,
                activate_ctl(codec, "Headphone Playback Switch",
                             spec->hp_independent_mode);
        }
+       /* update jack power state */
+       set_jack_power_state(codec);
        return 0;
 }