ALSA: hda/idt - Clean up power-map check code
authorTakashi Iwai <tiwai@suse.de>
Tue, 15 May 2012 07:02:26 +0000 (09:02 +0200)
committerTakashi Iwai <tiwai@suse.de>
Tue, 15 May 2012 07:02:26 +0000 (09:02 +0200)
Turn off the power-map for unused ports and check the jack-detection
capability in the first place.

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

index 3808f37bf15e35d599a3cab30428dc2c9d0a17e8..1f6f5202e7b17f84e752dfbebce0624bdb238ae9 100644 (file)
@@ -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;