ALSA: hda - Add exception for volume-knob in snd_hda_get_connections()
authorTakashi Iwai <tiwai@suse.de>
Mon, 27 Jul 2009 10:56:26 +0000 (12:56 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 27 Jul 2009 10:56:26 +0000 (12:56 +0200)
Volume-knob widgets may have connections even if they have no CONN_LIST
cap bit.  Allow the query exceptionally in snd_hda_get_connections().

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_codec.c

index b8c656c21feb35599af0cba73dcc5a3846a1046b..3a603cde8cc4b7d2fa023d144805d01cd65045bd 100644 (file)
@@ -301,12 +301,15 @@ int snd_hda_get_connections(struct hda_codec *codec, hda_nid_t nid,
        unsigned int parm;
        int i, conn_len, conns;
        unsigned int shift, num_elems, mask;
+       unsigned int wcaps;
        hda_nid_t prev_nid;
 
        if (snd_BUG_ON(!conn_list || max_conns <= 0))
                return -EINVAL;
 
-       if ((get_wcaps(codec, nid) & AC_WCAP_CONN_LIST) == 0) {
+       wcaps = get_wcaps(codec, nid);
+       if (!(wcaps & AC_WCAP_CONN_LIST) &&
+           get_wcaps_type(wcaps) != AC_WID_VOL_KNB) {
                snd_printk(KERN_WARNING "hda_codec: "
                           "connection list not available for 0x%x\n", nid);
                return -EINVAL;