diff options
| author | Vladyslav Tymoshchuk <tvlad744@gmail.com> | 2026-10-14 19:27:02 +0300 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-10-15 16:53:46 +0100 |
| commit | 222d04cf55bc5b4b63602454014619c78deda89a (patch) | |
| tree | 892e3cc737625474335b070326fc7318b85bf15b /scripts/basic | |
| parent | 0337b8129cf676b8eb767b2a1f312955760a5460 (diff) | |
| download | linux-222d04cf55bc5b4b63602454014619c78deda89a.tar.gz linux-222d04cf55bc5b4b63602454014619c78deda89a.zip | |
ASoC: qcom: q6asm-dai: wrap the position of a full ring to 0
Commit 44432315444c ("ASoC: qcom: q6asm-dai: use q6asm_get_hw_pointer")
took the position from the number of period buffers the DSP has
returned in the current lap, 1..periods, and reports one frame less
than that, as q6apm-dai does.
One frame short, a playback stream whose application stops feeding it
never reaches the stop threshold: the DSP returns the last queued
buffer, the position stops at appl_ptr - 1 and no period interrupt
comes any more, so ALSA never detects the underrun, the stream stays
RUNNING and drain only ends on its timeout. On capture, the last frame
of each period is held back until the next one.
Before that commit the position wrapped to 0 at the end of the ring.
Do that again, as for q6apm-dai.
Fixes: 44432315444c ("ASoC: qcom: q6asm-dai: use q6asm_get_hw_pointer")
Cc: stable@vger.kernel.org
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Vladyslav Tymoshchuk <tvlad744@gmail.com>
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Tested-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Link: https://patch.msgid.link/20261014162703.10172-4-tvlad744@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'scripts/basic')
0 files changed, 0 insertions, 0 deletions
