ucm2: Qualcomm: add Lenovo IdeaCentre Mini 01Q8X10 support
Add UCM for the Lenovo IdeaCentre Mini 01Q8X10 (X1E80100, board
91B6). Hardware present on this card:
- WCD938x headphones + headset mic
- three DisplayPort backends
- no WSA speakers, no built-in mics
Match DMI with IdeaCentre.*Mini.*01Q8X10 and load
LENOVO-IdeaCentre-mini.conf / IdeaCentre-HiFi.conf. Card init only
includes WCD and RX-macro; WSA / WSA-macro init is omitted because
those codecs are not on the board.
Playback / capture mapping, aligned with the matching AudioReach
topology:
Headphones hw:${CardId},0 MM1 RX_CODEC_DMA_RX_0
Headset mic hw:${CardId},2 MM3 TX_CODEC_DMA_TX_3
HDMI0 hw:${CardId},4 MM5 DISPLAY_PORT_RX_0 DP0 Jack
HDMI1 hw:${CardId},5 MM6 DISPLAY_PORT_RX_1 DP1 Jack
HDMI2 hw:${CardId},6 MM7 DISPLAY_PORT_RX_2 DP2 Jack
Independent MM streams are a workaround for how ALSA UCM and
PipeWire / WirePlumber cooperate today. If headset and all three
DP ports share one frontend PCM (the T14s-style MM1 mixer switch):
- UCM must list them as ConflictingDevice
- WirePlumber instantiates one node per PCM, not per UCM device
- enabling a DP port tears down the headset path on that PCM
- jack events become profile switches rather than sink
appear / disappear
- concurrent playback to headset and a monitor is impossible
Giving each DP port its own frontend (MM5/6/7) makes each port a
real PCM. PipeWire can then create one sink per port, jack-gated
by DP0/DP1/DP2 Jack, while headphones stay on hw:*,0. The verb
EnableSequence arms all three DP mixers so unused ports still
show up as available sinks when their jack asserts.
Headphones do not conflict with the HDMI devices. HDMI0/1/2 are
still marked conflicting with each other only where a single
userspace stream must pick one monitor.
Priorities: Headphones/Headset 300, HDMI0 200, HDMI1 150, HDMI2
100, so a plugged headset wins over the first DP port.
Depends on the X1E80100-LENOVO-IdeaCentre-Mini topology change
in audioreach-topology. [1]