[alsa-devel] [PATCH] ASoC: sigmadsp: safeload should be used from 4 bytes
Danny Smith
danny.smith at axis.com
Wed Aug 22 09:53:48 CEST 2018
On 08/22/2018 08:34 AM, Lars-Peter Clausen wrote:
> 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
Hi,
Thanks for the feedback. It is correct that up to 4 bytes can be updated
atomically but does that also guarantee that the data is safeloaded,
i.e. updated when the parameter is not in use? Maybe updating up to 4
byte parameters without safeload does not cause audio glitches?
Regards,
Danny
>> 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