On Tue, May 17, 2022 at 10:58:40PM +0300, Tan Nayır wrote:
The commit message in your fix states this:
For _sx controls the semantics of the max field is not the usual one, max is the number of steps rather than the maximum value. This means that our check in snd_soc_put_volsw_sx() needs to just check against the maximum value.
For some reason, this is not the case on my end. Both the $platform_max and $max fields are set to the maximum value of the range that is specified inside the codec code which is -84 to 40 and not the number of steps. This was also the reason behind my patch to the bounds check.
If you look at snd_soc_info_volsw_sx() you can see the code reporting the range to userspace - you can see the range reported to userspace there, note that the minimum value reported is unconditionally set to 0. This is also visible through the API. What exactly is reported through the API on your system, and what value is being written?