The x1e80100 machine driver currently derives the WSA RX slot map only
from the runtime channel count and programs that map unconditionally in
.prepare(). This means userspace cannot override the speaker channel map
from UCM.
Add WSA channel-map controls backed by per-port storage in the machine
driver, then translate the selected SNDRV_CHMAP_* values into Q6
PCM_CHANNEL_* slots when preparing the WSA backend.
The WSA links are backend no_pcm links, so the channel-map controls are
registered as card-level controls. This keeps them visible to UCM before
stream startup while still preserving per-WSA-backend storage.
Sorry for the late respin.
Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
---
Changes in v2:
- Rebased on next-20260723.
- Return 1 from the control put callback when the map changes.
- Allow up to six WSA channels for Glymur.
- Use WSA-specific control names.
- Expose standard ALSA channel maps through TLV data.
- Move the SNDRV_CHMAP_* to Q6 PCM_CHANNEL_* conversion helper into
qcom common code.
- Register card-level controls because the WSA backend links are no_pcm
and have no PCM instance available at card init.
- Link to v1: https://patch.msgid.link/20260610-sound-qcom-x1e80100-allow-ucm-channel-map-v1-1-9339724994f5@oss.qualcomm.com/
---
Abel Vesa (2):
ASoC: qcom: common: Add SNDRV channel map to Q6 slot helper
ASoC: qcom: x1e80100: Allow userspace WSA RX chmap override
sound/soc/qcom/common.c | 30 ++++++++
sound/soc/qcom/common.h | 1 +
sound/soc/qcom/x1e80100.c | 182 +++++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 209 insertions(+), 4 deletions(-)
---
base-commit: 9eebf259d5352b87080d67758f483583d9e763d7
change-id: 20260724-b4-sound-qcom-x1e80100-allow-ucm-channel-map-5b9ecb27c766
Best regards,
--
Abel Vesa <abel.vesa@oss.qualcomm.com>