--- /dev/null
+From 5a858e79c911330678b5a9be91a24830e94a0dc9 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 22 Nov 2019 14:20:00 +0100
+Subject: ALSA: hda - Disable audio component for legacy Nvidia HDMI codecs
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit 5a858e79c911330678b5a9be91a24830e94a0dc9 upstream.
+
+The old Nvidia chips have multiple HD-audio codecs on the same
+HD-audio controller, and this doesn't work as expected with the current
+audio component binding that is implemented under the one-codec-per-
+controller assumption; at the probe time, the driver leads to several
+kernel WARNING messages.
+
+For the proper support, we may change the pin2port and port2pin to
+traverse the codec list per the given pin number, but this needs more
+development and testing.
+
+As a quick workaround, instead, this patch drops the binding in the
+audio side for these legacy chips since the audio component support in
+nouveau graphics driver is still not merged (hence it's basically
+unused).
+
+[ Unlike the original commit, this patch actually disables the audio
+ component binding for all Nvidia chips, not only for legacy chips.
+ It doesn't matter much, though: nouveau gfx driver still doesn't
+ provide the audio component binding on 5.4.y, so it's only a
+ placeholder for now. Also, another difference from the original
+ commit is that this removes the nvhdmi_audio_ops and other
+ definitions completely in order to avoid a compile warning due to
+ unused stuff. -- tiwai ]
+
+BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=205625
+Fixes: ade49db337a9 ("ALSA: hda/hdmi - Allow audio component for AMD/ATI and Nvidia HDMI")
+Link: https://lore.kernel.org/r/20191122132000.4460-1-tiwai@suse.de
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/pci/hda/patch_hdmi.c | 22 ----------------------
+ 1 file changed, 22 deletions(-)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -3454,26 +3454,6 @@ static int nvhdmi_chmap_validate(struct
+ return 0;
+ }
+
+-/* map from pin NID to port; port is 0-based */
+-/* for Nvidia: assume widget NID starting from 4, with step 1 (4, 5, 6, ...) */
+-static int nvhdmi_pin2port(void *audio_ptr, int pin_nid)
+-{
+- return pin_nid - 4;
+-}
+-
+-/* reverse-map from port to pin NID: see above */
+-static int nvhdmi_port2pin(struct hda_codec *codec, int port)
+-{
+- return port + 4;
+-}
+-
+-static const struct drm_audio_component_audio_ops nvhdmi_audio_ops = {
+- .pin2port = nvhdmi_pin2port,
+- .pin_eld_notify = generic_acomp_pin_eld_notify,
+- .master_bind = generic_acomp_master_bind,
+- .master_unbind = generic_acomp_master_unbind,
+-};
+-
+ static int patch_nvhdmi(struct hda_codec *codec)
+ {
+ struct hdmi_spec *spec;
+@@ -3492,8 +3472,6 @@ static int patch_nvhdmi(struct hda_codec
+
+ codec->link_down_at_suspend = 1;
+
+- generic_acomp_init(codec, &nvhdmi_audio_ops, nvhdmi_port2pin);
+-
+ return 0;
+ }
+