[PATCH] ALSA: usb-audio: map UAC3 front wide channels in convert_chmap_v3()
From: Cássio Gabriel
Date: Wed Mar 11 2026 - 16:00:49 EST
convert_chmap_v3() translates UAC3 channel relationship values into
ALSA channel-map positions.
UAC3_CH_FRONT_WIDE_LEFT and UAC3_CH_FRONT_WIDE_RIGHT currently fall
back to SNDRV_CHMAP_UNKNOWN, although ALSA already provides matching
channel-map positions via SNDRV_CHMAP_FLW and SNDRV_CHMAP_FRW.
Map these two UAC3 positions to their ALSA equivalents and update the
comment to clarify that unsupported UAC3 channel relationships remain
reported as SNDRV_CHMAP_UNKNOWN.
No functional change for other channel relationships.
Signed-off-by: Cássio Gabriel <cassiogabrielcontato@xxxxxxxxx>
---
sound/usb/stream.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/sound/usb/stream.c b/sound/usb/stream.c
index d38c39e28f38..2532bf97e05e 100644
--- a/sound/usb/stream.c
+++ b/sound/usb/stream.c
@@ -366,6 +366,8 @@ snd_pcm_chmap_elem *convert_chmap_v3(struct uac3_cluster_header_descriptor
/*
* TODO: this conversion is not complete, update it
* after adding UAC3 values to asound.h
+ * NOTE: not all UAC3 channel relationship have a
+ * direct ALSA chmap equivalent.
*/
switch (is->bChRelationship) {
case UAC3_CH_MONO:
@@ -390,6 +392,12 @@ snd_pcm_chmap_elem *convert_chmap_v3(struct uac3_cluster_header_descriptor
case UAC3_CH_FRONT_RIGHT_OF_CENTER:
map = SNDRV_CHMAP_FRC;
break;
+ case UAC3_CH_FRONT_WIDE_LEFT:
+ map = SNDRV_CHMAP_FLW;
+ break;
+ case UAC3_CH_FRONT_WIDE_RIGHT:
+ map = SNDRV_CHMAP_FRW;
+ break;
case UAC3_CH_SIDE_LEFT:
map = SNDRV_CHMAP_SL;
break;
--
2.53.0