From a33b7b0a89a240a1416fa489f0b805488bfb9afd Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@suse.de>
Date: Tue, 11 Sep 2012 16:42:18 +0200
Subject: [PATCH] ALSA: hda - Check bit mask for codec SSID in snd_hda_pick_fixup()
Git-commit: a33b7b0a89a240a1416fa489f0b805488bfb9afd
Patch-mainline: 3.7-rc1
References: FATE#313695

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>

---
 sound/pci/hda/hda_auto_parser.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- 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
 		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;
