diff options
| author | Mark Brown <broonie@kernel.org> | 2026-10-26 19:24:16 +0000 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-10-26 19:24:16 +0000 |
| commit | 6977822f9daca68daf4524e3ffbe8442d8595b50 (patch) | |
| tree | 4668e75e601fa23317a5ef0e653cf57f07bce358 /scripts/basic/split-include.c | |
| parent | f3c7bee984aa0ba2b48a44e16a6f3ec2c27f851e (diff) | |
| parent | a51c5dd7f7fc7cdf4ae28fec4a013d8418d1cb53 (diff) | |
| download | linux-6977822f9daca68daf4524e3ffbe8442d8595b50.tar.gz linux-6977822f9daca68daf4524e3ffbe8442d8595b50.zip | |
ASoC: qcom: q6apm: Fix shared memory unmap
Shawn Guo <shengchao.guo@oss.qualcomm.com> says:
Since the early buffer mapping, q6apm maps a front-end's DSP buffers
once in pcm_new() and unmaps them in pcm_free(). The unmap side has a
few problems, which show up when the sound card is unbound and bound
again, e.g. by unbinding and binding any codec on the card:
- The card core removes the components before it frees the PCMs, so
the topology and its graph info are gone by the time pcm_free()
tries to unmap. The unmap is silently skipped, the DSP keeps the old
mapping, and the next bind fails to create the PCM:
qcom-apm gprsvc:service:2:1: Error (1) Processing 0x0100100c cmd
snd-sc8280xp sound: ASoC: can't create pcm MultiMedia1 Playback :-22
- Once unmap is actually sent, every command stalls for five seconds,
because the response handler matches on the wrong opcode:
qcom-apm gprsvc:service:2:1: CMD timeout for [100100d] opcode
- Unmapping the position buffer clears the circular buffer's handle
instead of its own.
Patch 1 fixes the unmap response handling, patch 2 makes the position
buffer unmap clear its own handle, and patch 3 moves the unmap to the
APM component's remove callback, before the topology is unloaded.
Patches 1 and 2 go first so that patch 3 does not introduce the five
second stalls.
Tested on Qualcomm Ride board by unbinding and binding the PCM1681
codec.
echo 0-004c > /sys/bus/i2c/drivers/pcm1681/unbind
echo 0-004c > /sys/bus/i2c/drivers/pcm1681/bind
Link: https://patch.msgid.link/20261021041044.2080369-1-shengchao.guo@oss.qualcomm.com
Diffstat (limited to 'scripts/basic/split-include.c')
0 files changed, 0 insertions, 0 deletions
