From: Takashi Iwai Date: Thu, 16 Feb 2012 16:23:46 +0000 (+0100) Subject: ALSA: hda/realtek - Improve the signel-connection check X-Git-Tag: firefly_0821_release~3680^2~2691^2~54^2~50 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=140547ef4ee9ad5f9ee9e6546f6027e8737c4149;p=firefly-linux-kernel-4.4.55.git ALSA: hda/realtek - Improve the signel-connection check 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 --- diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 0ffccc178957..a5697c3b30b8 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -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; }