linux/sound/pci
Sarah Bessmer e240a46965 ALSA: ctxfi - Work around emu20k1 glitch to prevent buffered sound data loss
Occasionally, on playback stream ringbuffer wraparound, the EMU20K1
hardware will momentarily return 0 instead of the proper current(loop)
address. This patch handles that case, fixing the problem of playback
position corruption and subsequent loss of buffered sound data, that
occurs with some common buffering layout patterns(e.g. multiple
simultaneous output streams with differently-sized or
non-power-of-2-sized buffers).

An alternate means of fixing the problem would be to read the ca
register continuously, until two sequential reads return the same
value; however, that would be a more invasive change, has performance
implications, and isn't necessary unless there are also issues with the
value not being updated atomically in regards to individual bits or
something similar(which I have not encountered through light testing).

I have no EMU20K2 hardware to confirm if the issue is present there,
but even if it's not, this change shouldn't break anything that's not
already broken.

Signed-off-by: Sarah Bessmer <aotos@fastmail.fm>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2014-01-10 10:10:41 +01:00
..
ac97 ALSA: ac97: Add ID for TI TLV320AIC27 codec 2013-09-30 11:09:21 +02:00
ali5451 ALSA: ali5451: Drop unused variable 2013-10-29 15:42:29 +01:00
asihpi ALSA: asihpi: a couple array out of bounds issues 2013-09-13 14:31:51 +02:00
au88x0 sound: Remove unnecessary semicolons 2013-10-14 11:00:05 +02:00
aw2 ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
ca0106 ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
cs46xx ALSA: cs46xx: Move DSP blob out of kernel tree 2013-11-20 08:13:50 +01:00
cs5535audio ALSA: cs5535audio: use named constants for pci_power_t values 2014-01-05 11:43:28 +01:00
ctxfi ALSA: ctxfi - Work around emu20k1 glitch to prevent buffered sound data loss 2014-01-10 10:10:41 +01:00
echoaudio ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
emu10k1 ALSA: emu10k1: code refactoring 2013-10-18 08:58:24 +02:00
hda ALSA: hda/hdmi - apply all Haswell fix-ups to Broadwell display codec 2014-01-09 07:30:17 +01:00
ice1712 ALSA: ice1724: Fix compile warning with CONFIG_PROC_FS=n 2013-11-07 15:44:11 +01:00
korg1212 ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
lola ALSA: lola: Fix uninitialized variable access in error message 2013-10-29 16:51:36 +01:00
lx6464es ALSA: lx6464es: Fix pointer cast compile warnings 2013-11-06 18:00:29 +01:00
mixart ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
nm256 ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
oxygen ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
pcxhr ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
riptide ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
rme9652 ALSA: Remove memory reservation code from memalloc helper 2014-01-09 07:32:10 +01:00
trident ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
vx222 ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
ymfpci ALSA: pci: trivial: replace numeric with standard PM state macros 2013-06-27 15:04:32 +02:00
Kconfig ALSA: cs46xx: Move DSP blob out of kernel tree 2013-11-20 08:13:50 +01:00
Makefile ALSA: Add the driver for Digigram Lola PCI-e boards 2011-05-03 16:31:05 +02:00
ad1889.c ALSA: ad1889: Fix right attenuation proc output 2013-10-29 15:39:37 +01:00
ad1889.h
ak4531_codec.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
als300.c ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
als4000.c ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
atiixp.c ALSA: atiixp: Fix unlocked snd_pcm_stop() call 2013-07-15 18:12:49 +02:00
atiixp_modem.c ALSA: atiixp: Fix unlocked snd_pcm_stop() call 2013-07-15 18:12:49 +02:00
azt3328.c ALSA: Fix assignment of 0/1 to bool variables 2013-09-26 09:57:24 +02:00
azt3328.h
bt87x.c ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
cmipci.c ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
cs4281.c ALSA: pci: trivial: replace numeric with standard PM state macros 2013-06-27 15:04:32 +02:00
cs5530.c ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
ens1370.c treewide: Fix printks with 0x%# 2013-08-27 10:49:38 +02:00
ens1371.c
es1938.c ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
es1968.c ALSA: Remove memory reservation code from memalloc helper 2014-01-09 07:32:10 +01:00
fm801.c [media] tea575x: Move header from sound to media 2013-08-18 08:08:05 -03:00
intel8x0.c ALSA: intel8x0: Fix chmap application 2013-11-06 08:14:21 +01:00
intel8x0m.c ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
maestro3.c ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
rme32.c ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
rme96.c ALSA: rme96: Return error code in PCM copy ops 2013-10-29 16:04:37 +01:00
sis7019.c Merge branch 'for-linus' into for-next 2013-06-05 15:21:29 +02:00
sis7019.h
sonicvibes.c ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00
via82xx.c treewide: Fix printks with 0x%# 2013-08-27 10:49:38 +02:00
via82xx_modem.c ALSA: PCI: Remove superfluous pci_set_drvdata(pci, NULL) at remove 2013-05-29 12:37:32 +02:00