diff options
| author | Mark Brown <broonie@kernel.org> | 2026-10-15 16:53:47 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-10-15 16:53:47 +0100 |
| commit | 56047769960a9eda5e60f659e1f1b8b777955eec (patch) | |
| tree | 6a0f7967ac66306458b74d6088b554ace91168cc /scripts/basic | |
| parent | 18123081c09623e884a108ff23d22a98505626e9 (diff) | |
| parent | 222d04cf55bc5b4b63602454014619c78deda89a (diff) | |
| download | linux-56047769960a9eda5e60f659e1f1b8b777955eec.tar.gz linux-56047769960a9eda5e60f659e1f1b8b777955eec.zip | |
ASoC: qcom: qdsp6: report the position of a drained buffer
Vladyslav Tymoshchuk <tvlad744@gmail.com> says:
Since commit a93dad6f4e6a ("ASoC: q6apm-dai: make use of
q6apm_get_hw_pointer") q6apm-dai reports one frame less than the
position of the last buffer the DSP returned, and commit 44432315444c
("ASoC: qcom: q6asm-dai: use q6asm_get_hw_pointer") did the same in
q6asm-dai. When the application stops feeding a playback stream, the
position never reaches appl_ptr: ALSA never sees the underrun, the
stream stays RUNNING without period interrupts, and drain ends on its
timeout with -EIO. On a OnePlus Pad 3 (SM8750) this left PipeWire's
PCM stuck for hours after a stall.
Patch 1 wraps the q6apm position to 0 at the end of the ring, as before
a93dad6f4e6a. Patch 2 resets the q6apm hw pointer on prepare, which
a93dad6f4e6a also stopped doing. Patch 3 is patch 1 for q6asm-dai.
Patches 1 and 2 are tested on SM8750 (numbers in patch 1). Patch 3 is
compile-tested only; a test on a Q6ASM board (RB3, RB5) and on x1e or
sc8280xp for patches 1 and 2 would be very welcome.
The RFC "ASoC: qcom: q6apm: correct PCM formats and error handling" by
Zhang Jiaxi [1] touches the same hw pointer, in graph_callback() (4/4
"recover PCM from failed data receipts"). The two do not conflict:
that series changes when the hw pointer is published, this one how it
is turned into a position and when it is reset, and that series
applies on top of this one on sound/for-next without conflicts.
The analysis, the patches and this text were drafted with an AI
assistant (Claude, see Assisted-by); I reviewed them and ran the tests
described in the patches.
[1] https://lore.kernel.org/r/SY5PR01MB10600B2BE812BAA1B0FA501B4A1932@SY5PR01MB10600.ausprd01.prod.outlook.com
Link: https://patch.msgid.link/20261014162703.10172-1-tvlad744@gmail.com
Diffstat (limited to 'scripts/basic')
0 files changed, 0 insertions, 0 deletions
