ALSA: hda - Change headphone pin control with master volume on cx5051
authorTakashi Iwai <tiwai@suse.de>
Sun, 24 Jan 2010 10:19:27 +0000 (11:19 +0100)
committerTakashi Iwai <tiwai@suse.de>
Sun, 24 Jan 2010 10:19:27 +0000 (11:19 +0100)
The HP pin (0x16) control has to be changed dynamically depending on
the master volume switch as well as the speaker pin (0x1a).  Otherwise
the headphone still sounds with master off.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_conexant.c

index 250b74f8136e84ce88ba05b843747fe1d94624b8..9077e4174ee659f0810aed91b1de69393d31e7cd 100644 (file)
@@ -1605,6 +1605,11 @@ static void cxt5051_update_speaker(struct hda_codec *codec)
 {
        struct conexant_spec *spec = codec->spec;
        unsigned int pinctl;
+       /* headphone pin */
+       pinctl = (spec->hp_present && spec->cur_eapd) ? PIN_HP : 0;
+       snd_hda_codec_write(codec, 0x16, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
+                           pinctl);
+       /* speaker pin */
        pinctl = (!spec->hp_present && spec->cur_eapd) ? PIN_OUT : 0;
        snd_hda_codec_write(codec, 0x1a, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
                            pinctl);