summaryrefslogtreecommitdiff
path: root/sound/pci/hda/hda_auto_parser.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-09-11 14:42:18 (GMT)
committerTakashi Iwai <tiwai@suse.de>2012-09-11 14:42:18 (GMT)
commita33b7b0a89a240a1416fa489f0b805488bfb9afd (patch)
treec65cdc50833cc12e2d95b28a761848a5dfbd73c7 /sound/pci/hda/hda_auto_parser.c
parent915bf29eb94beabed8bf577bfd62fc0ba9abbf37 (diff)
downloadlinux-a33b7b0a89a240a1416fa489f0b805488bfb9afd.tar.xz
ALSA: hda - Check bit mask for codec SSID in snd_hda_pick_fixup()
snd_hda_pick_fixup() didn't check the case where the device mask bits are set, typically used for SND_PCI_QUIRK_VENDOR() entries. Fix this. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_auto_parser.c')
-rw-r--r--sound/pci/hda/hda_auto_parser.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/pci/hda/hda_auto_parser.c b/sound/pci/hda/hda_auto_parser.c
index 9acd5a9..a98e25e 100644
--- a/sound/pci/hda/hda_auto_parser.c
+++ b/sound/pci/hda/hda_auto_parser.c
@@ -735,7 +735,8 @@ void snd_hda_pick_fixup(struct hda_codec *codec,
for (q = quirk; q->subvendor; q++) {
unsigned int vendorid =
q->subdevice | (q->subvendor << 16);
- if (vendorid == codec->subsystem_id) {
+ unsigned int mask = 0xffff0000 | q->subdevice_mask;
+ if ((codec->subsystem_id & mask) == (vendorid & mask)) {
id = q->value;
#ifdef CONFIG_SND_DEBUG_VERBOSE
name = q->name;