diff options
author | Takashi Iwai <tiwai@suse.de> | 2011-09-13 04:33:16 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2011-09-13 04:33:16 -0400 |
commit | 99e14c9d4140e9ed2c8810322a377e2a51b356eb (patch) | |
tree | b4089f76f8a0986def788d2c6ab2652530b65918 | |
parent | 26b9b559ed9ff3bef5642ef731748d28d894705f (diff) |
ALSA: hda - Terminate the recursive connection search properly
The recursive search of widget connections in snd_hda_get_conn_index()
must be terminated at the pin and the audio-out widgets. Otherwise
you'll get "too deep connection" warnings unnecessarily.
Reported-by: Francis Moreau <francis.moro@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/pci/hda/hda_codec.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 3e7850c238c3..f3aefef37216 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
@@ -579,9 +579,13 @@ int snd_hda_get_conn_index(struct hda_codec *codec, hda_nid_t mux, | |||
579 | return -1; | 579 | return -1; |
580 | } | 580 | } |
581 | recursive++; | 581 | recursive++; |
582 | for (i = 0; i < nums; i++) | 582 | for (i = 0; i < nums; i++) { |
583 | unsigned int type = get_wcaps_type(get_wcaps(codec, conn[i])); | ||
584 | if (type == AC_WID_PIN || type == AC_WID_AUD_OUT) | ||
585 | continue; | ||
583 | if (snd_hda_get_conn_index(codec, conn[i], nid, recursive) >= 0) | 586 | if (snd_hda_get_conn_index(codec, conn[i], nid, recursive) >= 0) |
584 | return i; | 587 | return i; |
588 | } | ||
585 | return -1; | 589 | return -1; |
586 | } | 590 | } |
587 | EXPORT_SYMBOL_HDA(snd_hda_get_conn_index); | 591 | EXPORT_SYMBOL_HDA(snd_hda_get_conn_index); |