linux/sound/pci/emu10k1
Oswald Buddenhagen 08e55ae996 ALSA: emu10k1: enable bit-exact playback, part 3: pitch
CPF_CURRENTPITCH starts swerving towards PTRX_PITCHTARGET as soon as
that is set. In practice this means that CPF_FRACADDRESS may acquire a
non-zero value before we manage to force CPF_CURRENTPITCH to the final
value, which would prevent bit-for-bit reproduction.

To avoid that this state persists, we now reset CPF_FRACADDRESS when
setting CPF_CURRENTPITCH, and to (mostly) avoid that it progresses too
far in the first place (possibly even reaching CCCA_CURRADDR), we write
PTRX and CPF in one critical section (though NMIs, etc. still make this
unreliable).

Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Link: https://lore.kernel.org/r/20230518140339.3722279-2-oswald.buddenhagen@gmx.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2023-05-18 16:41:19 +02:00
..
emu10k1_callback.c ALSA: emu10k1: fix terminating synthesizer voices 2023-05-18 16:40:22 +02:00
emu10k1_main.c ALSA: emu10k1: introduce and use snd_emu10k1_ptr_write_multiple() 2023-05-18 13:08:23 +02:00
emu10k1_patch.c ALSA: pci/emu10k1: remove 'set but not used' warning 2020-07-07 12:09:45 +02:00
emu10k1_synth_local.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
emu10k1_synth.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
emu10k1.c Revert "ALSA: emu10k1 - delay the PCM interrupts (add pcm_irq_delay parameter)" 2023-05-18 07:29:41 +02:00
emu10k1x.c ALSA: emu10k1x: Fix the missing snd_card_free() call at probe error 2022-04-12 17:58:24 +02:00
emufx.c ALSA: emu10k1: remove runtime 64-bit divisions 2023-05-17 22:10:57 +02:00
emumixer.c ALSA: emu10k1: set variables emu1010_routing_info and emu1010_pads_info storage-class-specifier to static 2023-05-18 16:30:07 +02:00
emumpu401.c ALSA: emu10k1: Fix assignment in if condition 2021-06-09 17:30:11 +02:00
emupcm.c ALSA: emu10k1: enable bit-exact playback, part 3: pitch 2023-05-18 16:41:19 +02:00
emuproc.c ALSA: emu10k1: add explicit support for E-MU 0404 2023-05-17 17:07:58 +02:00
io.c ALSA: emu10k1: introduce and use snd_emu10k1_ptr_write_multiple() 2023-05-18 13:08:23 +02:00
irq.c ALSA: emu10k1: fix handling of half-loop interrupts 2023-05-18 13:07:13 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
memory.c Revert "ALSA: emu10k1 - delay the PCM interrupts (add pcm_irq_delay parameter)" 2023-05-18 07:29:41 +02:00
p16v.c ALSA: emu10k1: use more existing defines instead of open-coded numbers 2023-04-28 11:22:51 +02:00
p16v.h ALSA: emu10k1: comment updates 2023-04-23 09:15:13 +02:00
p17v.h ALSA: emu10k1: comment updates 2023-04-23 09:15:13 +02:00
timer.c ALSA: emu10k1: remove pointless locks from timer code 2023-05-08 09:20:48 +02:00
tina2.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
voice.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00