summaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/pci_sabre.c
diff options
context:
space:
mode:
authorKrzysztof Helt <krzysztof.h1@wp.pl>2009-10-11 12:48:00 +0200
committerTakashi Iwai <tiwai@suse.de>2009-10-11 18:03:13 +0200
commit8066e51ae7329220f459470a38387f8533e99141 (patch)
treebc3ffe555efdbd35ac91fdacdf9a9972f7886b5d /arch/sparc/kernel/pci_sabre.c
parent633c7e92bdd54ba939f2bd3b78c72e1e1a1dd077 (diff)
downloadtalos-obmc-linux-8066e51ae7329220f459470a38387f8533e99141.tar.gz
talos-obmc-linux-8066e51ae7329220f459470a38387f8533e99141.zip
ALSA: snd_dma_pointer workaround for chipsets with buggy DMA
The chipsets with the isa_dma_bridge_buggy set do not stop DMA during DMA counter reads. The DMA counter is read in two 8-bit read steps on x86 platform. Sometimes, such reads happen during higher byte change so the lower byte is already decremented (rolled over) but the higher byte is not. It introduces an error that position is moved 256 bytes ahead of the true position. Thus, the next DMA position read can return a lower value then the previous read. If the DMA position is decreased (reversed) the ALSA subsystem is tricked into the playback underrun error and resets the playback. It results in a "pop" during a playback. Work around the issue by reading the counter twice and choosing a higher value. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'arch/sparc/kernel/pci_sabre.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud