[ALSA] hda: disable power management on fixed ports
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / sound / pci / hda / patch_sigmatel.c
index 47d3536a6576564d282862e20d0d445907b7b154..9b242a2636375855c5b8fc59d360e853cc148aa4 100644 (file)
@@ -3016,12 +3016,16 @@ static int stac92xx_init(struct hda_codec *codec)
                                        ? STAC_HP_EVENT : STAC_PWR_EVENT;
                int pinctl = snd_hda_codec_read(codec, spec->pwr_nids[i],
                                        0, AC_VERB_GET_PIN_WIDGET_CONTROL, 0);
+               int def_conf = snd_hda_codec_read(codec, spec->pwr_nids[i],
+                                       0, AC_VERB_GET_CONFIG_DEFAULT, 0);
                /* outputs are only ports capable of power management
                 * any attempts on powering down a input port cause the
                 * referenced VREF to act quirky.
                 */
                if (pinctl & AC_PINCTL_IN_EN)
                        continue;
+               if (get_defcfg_connect(def_conf) != AC_JACK_PORT_FIXED)
+                       continue;
                enable_pin_detect(codec, spec->pwr_nids[i], event | i);
                codec->patch_ops.unsol_event(codec, (event | i) << 26);
        }