Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[ALSA] emu10k1 - Use 31 bit DMA mask for Audigy

Modules: EMU10K1/EMU10K2 driver

It appears that either the Audigy DMA engine or the Linux kernel cannot
handle 32 bit DMA with this device. Problem manifests as noise when
using more than 2GB of RAM, possibly only on 64 bit machines.

The OSS driver actually uses a 29 bit DMA mask for both devices, this
seems like overkill for now.

Signed-off-by: Lee Revell <rlrevell@joe-job.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by

Lee Revell and committed by
Jaroslav Kysela
9529a5ba d91c64c8

+2 -1
+2 -1
include/sound/emu10k1.h
··· 48 48 49 49 /* FIXME? - according to the OSS driver the EMU10K1 needs a 29 bit DMA mask */ 50 50 #define EMU10K1_DMA_MASK 0x7fffffffUL /* 31bit */ 51 - #define AUDIGY_DMA_MASK 0xffffffffUL /* 32bit */ 51 + #define AUDIGY_DMA_MASK 0x7fffffffUL /* 31bit FIXME - 32 should work? */ 52 + /* See ALSA bug #1276 - rlrevell */ 52 53 53 54 #define TMEMSIZE 256*1024 54 55 #define TMEMSIZEREG 4