From bac32677a02fcb1e88c9748502c202bd3f6fd95f Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Fri, 24 Sep 2010 09:09:42 +0200 Subject: [PATCH] --- yaml --- r: 210999 b: refs/heads/master c: 01fdf1801e349302fce5d9865470a7100a2d9b74 h: refs/heads/master i: 210997: 013f6eea2994bee8ce771b609b8f95314c2afadc 210995: f0182bb199796e314c459f5e57ed51cb083f5877 210991: 0e783a3c37c024e9af1609fc528e6fb533d7bdbc v: v3 --- [refs] | 2 +- trunk/sound/pci/hda/patch_realtek.c | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 554f1322bc75..f425e2b3deaf 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0f9f1ee9d1412d45a22bfd69dfd4d4324b506e9e +refs/heads/master: 01fdf1801e349302fce5d9865470a7100a2d9b74 diff --git a/trunk/sound/pci/hda/patch_realtek.c b/trunk/sound/pci/hda/patch_realtek.c index a1312a6c8af2..a432e6efd19b 100644 --- a/trunk/sound/pci/hda/patch_realtek.c +++ b/trunk/sound/pci/hda/patch_realtek.c @@ -1594,12 +1594,22 @@ static void alc_auto_parse_digital(struct hda_codec *codec) } if (spec->autocfg.dig_in_pin) { - hda_nid_t dig_nid; - err = snd_hda_get_connections(codec, - spec->autocfg.dig_in_pin, - &dig_nid, 1); - if (err > 0) - spec->dig_in_nid = dig_nid; + dig_nid = codec->start_nid; + for (i = 0; i < codec->num_nodes; i++, dig_nid++) { + unsigned int wcaps = get_wcaps(codec, dig_nid); + if (get_wcaps_type(wcaps) != AC_WID_AUD_IN) + continue; + if (!(wcaps & AC_WCAP_DIGITAL)) + continue; + if (!(wcaps & AC_WCAP_CONN_LIST)) + continue; + err = get_connection_index(codec, dig_nid, + spec->autocfg.dig_in_pin); + if (err >= 0) { + spec->dig_in_nid = dig_nid; + break; + } + } } }