From c4685849b4d725ab80cd29f5e09f5f128b4724b5 Mon Sep 17 00:00:00 2001
From: Ondrej Zary <linux@rainbow-software.org>
Date: Wed, 4 Aug 2010 21:56:44 +0200
Subject: ALSA: als4000: Fix potentially invalid DMA mode setup

My previous patch assumed that the DMA mode (represented by 3 lowest bits of
ALS4K_GCR99_DMA_EMULATION_CTRL register) is set to the default value 0. If
that's not the case, it might result in invalid mode to be set.
This patch fixes this potential problem.

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/pci/als4000.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'sound/pci/als4000.c')

diff --git a/sound/pci/als4000.c b/sound/pci/als4000.c
index 036a9ba8e1a5..0e247cb90ecc 100644
--- a/sound/pci/als4000.c
+++ b/sound/pci/als4000.c
@@ -765,7 +765,7 @@ static void snd_als4000_configure(struct snd_sb *chip)
 		snd_als4k_gcr_write(chip, i, 0);
 	/* enable burst mode to prevent dropouts during high PCI bus usage */
 	snd_als4k_gcr_write(chip, ALS4K_GCR99_DMA_EMULATION_CTRL,
-		snd_als4k_gcr_read(chip, ALS4K_GCR99_DMA_EMULATION_CTRL) | 0x04);
+		(snd_als4k_gcr_read(chip, ALS4K_GCR99_DMA_EMULATION_CTRL) & ~0x07) | 0x04);
 	spin_unlock_irq(&chip->reg_lock);
 }
 
-- 
cgit v1.2.3