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>

+16 -6
+16 -6
sound/pci/hda/patch_realtek.c
··· 1594 1594 } 1595 1595 1596 1596 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 + } 1603 1613 } 1604 1614 } 1605 1615