[alsa-devel] [PATCH] ASoC: sigmadsp: safeload should be used from 4 bytes

Lars-Peter Clausen lars at metafoo.de
Wed Aug 22 08:34:23 CEST 2018


On 08/22/2018 08:11 AM, Robert Rosengren wrote:
> From: Danny Smith <dannys at axis.com>
> 
> Fixed range in safeload conditional to allow safeload to be used from
> 4 bytes.

Hi,

Thanks for the patch. The reason why 4 bytes is excluded is that up to 4
bytes can be updated atomically with a single register write. But I could
see that if the firmware reads the same parameter multiple times during the
same run you could get inconsistent results.

Can you explain a bit more why you need this?

If we want to allow safeload for 4 byte parameters the same reasoning
applies for parameters with less than 4 bytes as well and so the check
should be removed completely.

- Lars

> 
> Signed-off-by: Danny Smith <dannys at axis.com>
> ---
>  sound/soc/codecs/sigmadsp.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/sound/soc/codecs/sigmadsp.c b/sound/soc/codecs/sigmadsp.c
> index d53680ac78e4..d63d58350cd8 100644
> --- a/sound/soc/codecs/sigmadsp.c
> +++ b/sound/soc/codecs/sigmadsp.c
> @@ -117,7 +117,7 @@ static int sigmadsp_ctrl_write(struct sigmadsp *sigmadsp,
>  	struct sigmadsp_control *ctrl, void *data)
>  {
>  	/* safeload loads up to 20 bytes in a atomic operation */
> -	if (ctrl->num_bytes > 4 && ctrl->num_bytes <= 20 && sigmadsp->ops &&
> +	if (ctrl->num_bytes >= 4 && ctrl->num_bytes <= 20 && sigmadsp->ops &&
>  	    sigmadsp->ops->safeload)
>  		return sigmadsp->ops->safeload(sigmadsp, ctrl->addr, data,
>  			ctrl->num_bytes);
> 



More information about the Alsa-devel mailing list