ALSA: fix hda AZX_DCAPS_NO_TCSEL quirk check in driver_caps
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 28 May 2011 02:45:28 +0000 (19:45 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 28 May 2011 02:45:28 +0000 (19:45 -0700)
Commit 9477c58e3308 ("ALSA: hda - Reorganize controller quriks with bit
flags") changed the driver type compares into various quirk bits.
However, the check for AZX_DCAPS_NO_TCSEL got reverted: instead of
clearing TCSEL for chipsets that have that standard capability, it
cleared then when the NO_TCSEL bit was set.

This can lead to noise and repeated sounds - a weird "echo" behavior.
As the comment just above says: "Ensuring these bits are 0 clears
playback static on some HD Audio codecs".  Which is definitely true at
least on my Core i5 Westmere system.

Cc: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
sound/pci/hda/hda_intel.c

index 348705666f99e523e4861e6a584c5c49eb7ed248..486f6deb3eee952ab810750ecee652c23acc2b11 100644 (file)
@@ -1085,7 +1085,7 @@ static void azx_init_pci(struct azx *chip)
         * codecs.
         * The PCI register TCSEL is defined in the Intel manuals.
         */
-       if (chip->driver_caps & AZX_DCAPS_NO_TCSEL) {
+       if (!(chip->driver_caps & AZX_DCAPS_NO_TCSEL)) {
                snd_printdd(SFX "Clearing TCSEL\n");
                update_pci_byte(chip->pci, ICH6_PCIREG_TCSEL, 0x07, 0);
        }