[PATCH BUGFIX] ALSA: pci: fix reading of swapped values from pcmreg in AC97 codec

Takashi Iwai tiwai at suse.de
Tue Mar 22 21:19:42 CET 2022


On Tue, 22 Mar 2022 21:06:54 +0100,
Giacomo Guiduzzi wrote:
> 
> Tests 72 and 78 for ALSA in kselftest fail due to reading
> inconsistent values from some devices on a VirtualBox
> Virtual Machine using the snd_intel8x0 driver for the AC'97
> Audio Controller device.
> Taking for example test number 72, this is what the test reports:
> "Surround Playback Volume.0 expected 1 but read 0, is_volatile 0"
> "Surround Playback Volume.1 expected 0 but read 1, is_volatile 0"
> These errors repeat for each value from 0 to 31.
> 
> Taking a look at these error messages it is possible to notice
> that the written values are read back swapped.
> When the write is performed, these values are initially stored in
> an array used to sanity-check them and write them in the pcmreg
> array. To write them, the two one-byte values are packed together
> in a two-byte variable through bitwise operations: the first
> value is shifted left by one byte and the second value is stored in the
> right byte through a bitwise OR. When reading the values back,
> right shifts are performed to retrieve the previously stored
> bytes. These shifts are executed in the wrong order, thus
> reporting the values swapped as shown above.
> 
> This patch fixes this mistake by reversing the read
> operations' order.
> 
> Signed-off-by: Giacomo Guiduzzi <guiduzzi.giacomo at gmail.com>
> Signed-off-by: Paolo Valente <paolo.valente at linaro.org>

Thanks, applied now.


Takashi


More information about the Alsa-devel mailing list