linux/include
Oswald Buddenhagen 1298bc978a ALSA: emu10k1: enable bit-exact playback, part 1: DSP attenuation
Fractional multiplication with the maximal value 2^31-1 causes some tiny
distortion. Instead, we want to multiply with the full 2^31. The catch
is of course that this cannot be represented in the DSP's signed 32 bit
registers.

One way to deal with this is to encode 1.0 as a negative number and
special-case it. As a matter of fact, the SbLive! code path already
contained such code, though the controls never actually exercised it.

A more efficient approach is to use negative values, which actually
extend to -2^31. Accordingly, for all the volume adjustments we now use
the MAC1 instruction which negates the X operand.

The range of the controls in highres mode is extended downwards, so -1
is the new zero/mute. At maximal excursion, real zero is not mute any
more, but I don't think anyone will notice this behavior change. ;-)

That also required making the min/max/values in the control structs
signed. This technically changes the user space interface, but it seems
implausible that someone would notice - the numbers were actually
treated as if they were signed anyway (and in the actual mixer iface
they _are_). And without this change, the min value didn't even make
sense in the first place (and no-one noticed, because it was always 0).

Tested-by: Jonathan Dowland <jon@dow.land>
Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Link: https://lore.kernel.org/r/20230514170323.3408834-7-oswald.buddenhagen@gmx.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2023-05-15 22:06:21 +02:00
..
acpi Power management updates for 6.4-rc1 2023-04-25 18:44:10 -07:00
asm-generic Locking changes in v6.4: 2023-05-05 12:56:55 -07:00
clocksource
crypto This update includes the following changes: 2023-04-26 08:32:52 -07:00
drm - Nick Piggin's "shoot lazy tlbs" series, to improve the peformance of 2023-04-27 19:42:02 -07:00
dt-bindings - mailbox api: allow direct registration to a channel 2023-05-07 10:17:33 -07:00
keys
kunit
kvm s390: 2023-05-01 12:06:20 -07:00
linux - mailbox api: allow direct registration to a channel 2023-05-07 10:17:33 -07:00
math-emu
media media: i2c: Drop unused sr030pc30 camera sensor driver 2023-04-15 09:56:49 +01:00
memory
misc
net Including fixes from netfilter. 2023-05-05 19:12:01 -07:00
pcmcia
ras
rdma RDMA: Add ib_virt_dma_to_page() 2023-04-16 11:08:07 +03:00
rv
scsi Driver core changes for 6.4-rc1 2023-04-27 11:53:57 -07:00
soc Nothing looks out of the ordinary in this batch of clk driver updates. There 2023-04-29 17:29:39 -07:00
sound ALSA: emu10k1: enable bit-exact playback, part 1: DSP attenuation 2023-05-15 22:06:21 +02:00
target
trace NFSD 6.4 Release Notes 2023-04-29 11:04:14 -07:00
uapi ALSA: emu10k1: enable bit-exact playback, part 1: DSP attenuation 2023-05-15 22:06:21 +02:00
ufs SCSI misc on 20230426 2023-04-26 15:39:25 -07:00
vdso
video
xen