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@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@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);