diff options
author | Takashi Iwai <tiwai@suse.de> | 2012-09-11 10:42:18 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-09-11 10:42:18 -0400 |
commit | a33b7b0a89a240a1416fa489f0b805488bfb9afd (patch) | |
tree | c65cdc50833cc12e2d95b28a761848a5dfbd73c7 /sound/pci/hda | |
parent | 915bf29eb94beabed8bf577bfd62fc0ba9abbf37 (diff) |
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')
-rw-r--r-- | sound/pci/hda/hda_auto_parser.c | 3 |
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 9acd5a964eb6..a98e25ebfd63 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, | |||
735 | for (q = quirk; q->subvendor; q++) { | 735 | for (q = quirk; q->subvendor; q++) { |
736 | unsigned int vendorid = | 736 | unsigned int vendorid = |
737 | q->subdevice | (q->subvendor << 16); | 737 | q->subdevice | (q->subvendor << 16); |
738 | if (vendorid == codec->subsystem_id) { | 738 | unsigned int mask = 0xffff0000 | q->subdevice_mask; |
739 | if ((codec->subsystem_id & mask) == (vendorid & mask)) { | ||
739 | id = q->value; | 740 | id = q->value; |
740 | #ifdef CONFIG_SND_DEBUG_VERBOSE | 741 | #ifdef CONFIG_SND_DEBUG_VERBOSE |
741 | name = q->name; | 742 | name = q->name; |