Skip to content

Commit 01fdf18

Browse files
committed
ALSA: hda - Fix auto-parse of SPDIF input of Realtek codecs
The SPDIF in audio widget must be searched through the list as the widget that contains the given pin as the connection source. The current code was implemented in a reverse way. Signed-off-by: Takashi Iwai <tiwai@suse.de>
1 parent 0f9f1ee commit 01fdf18

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

sound/pci/hda/patch_realtek.c

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1594,12 +1594,22 @@ static void alc_auto_parse_digital(struct hda_codec *codec)
15941594
}
15951595

15961596
if (spec->autocfg.dig_in_pin) {
1597-
hda_nid_t dig_nid;
1598-
err = snd_hda_get_connections(codec,
1599-
spec->autocfg.dig_in_pin,
1600-
&dig_nid, 1);
1601-
if (err > 0)
1602-
spec->dig_in_nid = dig_nid;
1597+
dig_nid = codec->start_nid;
1598+
for (i = 0; i < codec->num_nodes; i++, dig_nid++) {
1599+
unsigned int wcaps = get_wcaps(codec, dig_nid);
1600+
if (get_wcaps_type(wcaps) != AC_WID_AUD_IN)
1601+
continue;
1602+
if (!(wcaps & AC_WCAP_DIGITAL))
1603+
continue;
1604+
if (!(wcaps & AC_WCAP_CONN_LIST))
1605+
continue;
1606+
err = get_connection_index(codec, dig_nid,
1607+
spec->autocfg.dig_in_pin);
1608+
if (err >= 0) {
1609+
spec->dig_in_nid = dig_nid;
1610+
break;
1611+
}
1612+
}
16031613
}
16041614
}
16051615

0 commit comments

Comments
 (0)