|
@@ -4365,10 +4365,18 @@ static int stac92xx_init(struct hda_codec *codec)
|
|
|
hda_nid_t nid = spec->pwr_nids[i];
|
|
|
int pinctl, def_conf;
|
|
|
|
|
|
+ def_conf = snd_hda_codec_get_pincfg(codec, nid);
|
|
|
+ def_conf = get_defcfg_connect(def_conf);
|
|
|
+ if (def_conf == AC_JACK_PORT_NONE) {
|
|
|
+ /* power off unused ports */
|
|
|
+ stac_toggle_power_map(codec, nid, 0);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
/* power on when no jack detection is available */
|
|
|
/* or when the VREF is used for controlling LED */
|
|
|
if (!spec->hp_detect ||
|
|
|
- spec->vref_mute_led_nid == nid) {
|
|
|
+ spec->vref_mute_led_nid == nid ||
|
|
|
+ !is_jack_detectable(codec, nid)) {
|
|
|
stac_toggle_power_map(codec, nid, 1);
|
|
|
continue;
|
|
|
}
|
|
@@ -4386,15 +4394,6 @@ static int stac92xx_init(struct hda_codec *codec)
|
|
|
stac_toggle_power_map(codec, nid, 1);
|
|
|
continue;
|
|
|
}
|
|
|
- def_conf = snd_hda_codec_get_pincfg(codec, nid);
|
|
|
- def_conf = get_defcfg_connect(def_conf);
|
|
|
- /* skip any ports that don't have jacks since presence
|
|
|
- * detection is useless */
|
|
|
- if (def_conf != AC_JACK_PORT_NONE &&
|
|
|
- !is_jack_detectable(codec, nid)) {
|
|
|
- stac_toggle_power_map(codec, nid, 1);
|
|
|
- continue;
|
|
|
- }
|
|
|
if (enable_pin_detect(codec, nid, STAC_PWR_EVENT)) {
|
|
|
stac_issue_unsol_event(codec, nid);
|
|
|
continue;
|