[PATCH] ASoC: ops: Don't modify the driver's plaform_max when reading state

Martin Povišer povik+lin at cutebit.org
Fri Aug 19 18:17:25 CEST 2022


> On 3. 6. 2022, at 13:25, Mark Brown <broonie at kernel.org> wrote:
> 
> Currently snd_soc_info_volsw() will set a platform_max based on the limit
> the control has if one is not already set. This isn't really great, we
> shouldn't be modifying the passed in driver data especially in a path like
> this which may not ever be executed or where we may execute other callbacks
> before this one. Instead make this function leave the data unchanged, and
> clarify things a bit by referring to max rather than platform_max within
> the function. platform_max is now applied as a limit after working out the
> natural maximum value for the control.
> 
> This means that platform_max is no longer treated as a direct register
> value for controls were min is non-zero. The put() callbacks already
> validate on this basis, and there do not appear to be any in tree users
> that would be affected.

At least ‘put_volsw' seem to validate on the other conflicting interpretation
of platform_max [as was introduced in commit 9bdd10d57a88 (“ASoC: ops:
Shift tested values in snd_soc_put_volsw() by +min”)].

Also, the soc.h definitions of SOC_SINGLE_*/SOC_DOUBLE_* set platform_max
to the register maximum, again interpreting platform_max the other way.

> 
> Signed-off-by: Mark Brown <broonie at kernel.org>

This commit breaks controls with non-zero minimum.

Best,
Martin



More information about the Alsa-devel mailing list