summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sound/pci/hda/patch_sigmatel.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index d9a89ced3c89..2cadf7c3b71b 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -3946,7 +3946,13 @@ static int stac92xx_init(struct hda_codec *codec)
hda_nid_t nid = spec->pwr_nids[i];
int pinctl, def_conf;
- if (is_nid_hp_pin(cfg, nid) && spec->hp_detect)
+ /* power on when no jack detection is available */
+ if (!spec->hp_detect) {
+ stac_toggle_power_map(codec, nid, 1);
+ continue;
+ }
+
+ if (is_nid_hp_pin(cfg, nid))
continue; /* already has an unsol event */
pinctl = snd_hda_codec_read(codec, nid, 0,
@@ -3955,8 +3961,10 @@ static int stac92xx_init(struct hda_codec *codec)
* any attempts on powering down a input port cause the
* referenced VREF to act quirky.
*/
- if (pinctl & AC_PINCTL_IN_EN)
+ if (pinctl & AC_PINCTL_IN_EN) {
+ stac_toggle_power_map(codec, nid, 1);
continue;
+ }
def_conf = snd_hda_codec_read(codec, nid, 0,
AC_VERB_GET_CONFIG_DEFAULT, 0);
def_conf = get_defcfg_connect(def_conf);