[ALSA] hda-codec - Fix headphone auto-toggle on sigmatel codec
authorTakashi Iwai <tiwai@suse.de>
Thu, 21 Sep 2006 12:28:21 +0000 (14:28 +0200)
committerJaroslav Kysela <perex@suse.cz>
Sat, 23 Sep 2006 08:48:12 +0000 (10:48 +0200)
Fix/optimize the headphone auto-toggle function on sigmatel codecs.
The headphone pins are kept as output.  When headhpones are unplugged,
you cannot hear anyway ;)

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
sound/pci/hda/patch_sigmatel.c

index 92f48a72585345d597d26adf7b0e4ef5db79942c..731b7b97ee711ebaec26969519f5488ea2f8eaa3 100644 (file)
@@ -1432,12 +1432,9 @@ static int stac92xx_init(struct hda_codec *codec)
                for (i = 0; i < cfg->hp_outs; i++)
                        enable_pin_detect(codec, cfg->hp_pins[i],
                                          STAC_HP_EVENT);
+               stac92xx_auto_init_hp_out(codec);
                /* fake event to set up pins */
                codec->patch_ops.unsol_event(codec, STAC_HP_EVENT << 26);
-               /* enable the headphones by default.
-                * If/when unsol_event detection works, this will be ignored
-                */
-               stac92xx_auto_init_hp_out(codec);
        } else {
                stac92xx_auto_init_multi_out(codec);
                stac92xx_auto_init_hp_out(codec);
@@ -1539,9 +1536,6 @@ static void stac92xx_hp_detect(struct hda_codec *codec, unsigned int res)
                for (i = 0; i < cfg->speaker_outs; i++)
                        stac92xx_reset_pinctl(codec, cfg->speaker_pins[i],
                                                AC_PINCTL_OUT_EN);
-               for (i = 0; i < cfg->hp_outs; i++)
-                       stac92xx_set_pinctl(codec, cfg->hp_pins[i],
-                                           AC_PINCTL_OUT_EN);
        } else {
                /* enable lineouts, disable hp */
                for (i = 0; i < cfg->line_outs; i++)
@@ -1550,9 +1544,6 @@ static void stac92xx_hp_detect(struct hda_codec *codec, unsigned int res)
                for (i = 0; i < cfg->speaker_outs; i++)
                        stac92xx_set_pinctl(codec, cfg->speaker_pins[i],
                                                AC_PINCTL_OUT_EN);
-               for (i = 0; i < cfg->hp_outs; i++)
-                       stac92xx_reset_pinctl(codec, cfg->hp_pins[i],
-                                             AC_PINCTL_OUT_EN);
        }
 }