Re: [PATCH v2] ALSA: hda/hdmi: Don't share an assigned converter on NVIDIA codecs

From: Takashi Iwai

Date: Tue Nov 03 2026 - 11:14:26 EST


On Mon, 02 Nov 2026 20:04:17 +0100,
Razvan Dinculescu wrote:
>
> All pins of the NVIDIA HDMI/DP codecs share one connection list, so a
> converter can be selected by several pins at once. Unlike the Intel
> codecs (intel_not_share_assigned_cvt()), the NVIDIA ones never move an
> idle pin off the converter that another pin streams on, and the display
> that should play stays silent.
>
> Seen on an RTX 5090 (codec 0x10de00aa) with a DP monitor on pin 0x04
> and an HDMI TV on pin 0x05. PipeWire probes every PCM at start-up: the
> monitor's PCM got converter 0x08 and kept it selected after closing,
> then the TV's PCM got 0x08 as well when it was opened. With both pins
> on 0x08 the TV played nothing, although its PCM was running and its
> ELD was valid. Opening the monitor's PCM while the TV's was running
> moved the monitor to 0x09 and the TV played at once. Restarting
> PipeWire put both pins back on 0x08.
>
> Implement pin_cvt_fixup for the generic NVIDIA model as Intel does:
> restore the pin's own converter selection, which
> snd_hda_hdmi_generic_pcm_prepare() relies on after the hardware drops
> it, then move every other connected pin that selects the assigned
> converter to an unassigned one. Look the converter up in each pin's
> own connection list instead of assuming the same order on every pin.
>
> Tested on that system with the TV's PCM on 0x08 and the monitor's on
> 0x09, both pins then forced onto 0x08 with hda-verb: a prepare on the
> TV's PCM moved the monitor off 0x08, and a prepare on the monitor's
> PCM put it back on 0x09.
>
> Signed-off-by: Razvan Dinculescu <razvandinculescu@xxxxxxxxx>

Applied now. Thanks.


Takashi