- Focused on DisplayPort audio only (no analog codec paths)
- 3x DisplayPort backends (DISPLAY_PORT_RX_0/1/2) for USB-C DP alt-mode + miniDP
- 3x playback streams (MultiMedia1/2/3) with volume control
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Muxing DISPLAY_PORT_RX_0/1 onto MultiMedia1/2 together with the
headphone and speaker backends forces a single PCM and UCM
ConflictingDevice dance. Dedicated frontends let each DP sink run
its own playback at the same time as WSA/WCD.
Add MultiMedia5 and MultiMedia6 stream subgraphs and route
DISPLAY_PORT_RX_0 to MM5 and DISPLAY_PORT_RX_1 to MM6. Leave
RX_CODEC_DMA_RX_0 and WSA_CODEC_DMA_RX_0 on MultiMedia1/2.
This is the topology half of the X13s DisplayPort UCM work. Sharing
MultiMedia1 with the codec backends was not a good fit; see
alsa-ucm-conf#841 [1].
[1]: https://github.com/alsa-project/alsa-ucm-conf/pull/841
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Add an AudioReach topology for the Lenovo IdeaCentre Mini 01Q8X10
(board 91B6). This is a Snapdragon X Elite mini PC, not a laptop:
- no WSA speakers
- no VA / built-in digital mics
- WCD938x headset jack (playback + headset mic)
- three DisplayPort / USB-C DP backends (DISPLAY_PORT_RX_0/1/2)
Frontend layout:
MM1 hw:*,0 WCD RX_CODEC_DMA_RX_0 headphones
MM3 hw:*,2 WCD TX_CODEC_DMA_TX_3 headset mic
MM5 hw:*,4 DISPLAY_PORT_RX_0
MM6 hw:*,5 DISPLAY_PORT_RX_1
MM7 hw:*,6 DISPLAY_PORT_RX_2
Each DP port gets its own multimedia frontend instead of sharing
MM1 with the headset. That is deliberate and differs from the T14s
laptop topology.
On a shared frontend, ALSA UCM can only expose the headset and the
three DP ports as ConflictingDevice alternatives of one PCM. PipeWire
/ WirePlumber then create a single node for that PCM and switch
the UCM device underneath it. Jack plug events, default-sink
selection and concurrent playback (headset + one or more monitors)
all fight that model. Independent MM5/6/7 streams give each port
its own PCM, so the sound server can treat them as separate sinks
gated only by DP0/DP1/DP2 Jack.
This follows the X1E80100-CRD pattern (dedicated MM5/MM6 for DP)
and extends it to the third port. MM2 is unused: there is no WSA
playback path to mix onto a second stream. Device subgraph instance
IDs are assigned so they do not collide with the new stream
subgraphs (same approach as commit ebbbfae, "x1e80100-crd: add
dedicated multimedia for DisplayPort").
Assisted-by: Grok 4.5 (xAI)
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>