ALSA: hda/realtek - Improve the signel-connection check
authorTakashi Iwai <tiwai@suse.de>
Thu, 16 Feb 2012 16:23:46 +0000 (17:23 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 16 Feb 2012 16:29:24 +0000 (17:29 +0100)
When the connections from the pin selector contain only two
widgets, a route to DAC and the aa-mixer, it's certainly a
single connection.  In such a case, get_dac_if_single() should
return the connected DAC, too.

This will improve the detection of the individual DAC
assignment for each pin.

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

index 0ffccc178957dd1f0b8f6ff9f8684e63c49bbd75..a5697c3b30b8c2e3e56e6fd913b12be56d02e3f3 100644 (file)
@@ -2972,8 +2972,12 @@ static bool alc_auto_is_dac_reachable(struct hda_codec *codec,
 
 static hda_nid_t get_dac_if_single(struct hda_codec *codec, hda_nid_t pin)
 {
+       struct alc_spec *spec = codec->spec;
        hda_nid_t sel = alc_go_down_to_selector(codec, pin);
-       if (snd_hda_get_conn_list(codec, sel, NULL) == 1)
+       hda_nid_t srcs[5];
+       int num = snd_hda_get_connections(codec, sel, srcs,
+                                         ARRAY_SIZE(srcs));
+       if (num == 1 || (num == 2 && srcs[1] == spec->mixer_nid))
                return alc_auto_look_for_dac(codec, pin);
        return 0;
 }