[PATCH] ASoC: ops: Shift tested values in snd_soc_put_volsw() by +min
Mark Brown
broonie at kernel.org
Wed Feb 23 17:32:19 CET 2022
On Wed, Feb 23, 2022 at 03:55:54PM +0100, Takashi Iwai wrote:
>
> But, more reading the code, I suspect whether the function does work
> correctly at all... How is the mask calculation done in that way?
> unsigned int mask = (1U << (fls(min + max) - 1)) - 1;
> What's the difference of this function with snd_soc_put_volsw()?
Yeah, I'm not clear either - Marek mentioned _SX when he was doing the
patch but I didn't get the bandwidth to figure out what it's doing
properly yet. At this point I'm not clear what _SX is supposed to do,
I'm hoping it works well for the devices that use it but I don't have
any of them.
> Furthermore, the mask calculation and usage in snd_soc_put_volsw()
> isn't right, either, I'm afraid; if the range is [-10, 0], max=0, then
> mask will 0, which will omit all values...
Indeed, if anyone did that. Fortunately I don't *think* that's an
issue. The whole way that code handles signed bitfields by remapping
them into unsigned user visible controls is a landmine, it's not even
obvious that they handle signed bitfields in the first place.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20220223/8e8b903f/attachment.sig>
More information about the Alsa-devel
mailing list