]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: qdsp6: q6apm-dai: set 10 ms period and buffer alignment.
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Fri, 14 Mar 2025 17:47:59 +0000 (17:47 +0000)
committerMark Brown <broonie@kernel.org>
Mon, 31 Mar 2025 13:59:36 +0000 (14:59 +0100)
DSP expects the periods to be aligned to fragment sizes, currently
setting up to hw constriants on periods bytes is not going to work
correctly as we can endup with periods sizes aligned to 32 bytes however
not aligned to fragment size.

Update the constriants to use fragment size, and also set at step of
10ms for period size to accommodate DSP requirements of 10ms latency.

Fixes: 9b4fe0f1cd79 ("ASoC: qdsp6: audioreach: add q6apm-dai support")
Cc: stable@vger.kernel.org
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Tested-by: Johan Hovold <johan+linaro@kernel.org>
Link: https://patch.msgid.link/20250314174800.10142-5-srinivas.kandagatla@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/qcom/qdsp6/q6apm-dai.c

index 9d8e8e37c6deb2d2b08c6fb3fd6687b329f79808..d2952d4ac646fe274f331266c402aa101bcad325 100644 (file)
@@ -394,13 +394,14 @@ static int q6apm_dai_open(struct snd_soc_component *component,
                }
        }
 
-       ret = snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_BYTES, 32);
+       /* setup 10ms latency to accommodate DSP restrictions */
+       ret = snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_SIZE, 480);
        if (ret < 0) {
                dev_err(dev, "constraint for period bytes step ret = %d\n", ret);
                goto err;
        }
 
-       ret = snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_BUFFER_BYTES, 32);
+       ret = snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_BUFFER_SIZE, 480);
        if (ret < 0) {
                dev_err(dev, "constraint for buffer bytes step ret = %d\n", ret);
                goto err;