--- /dev/null
+From 6a681cd9034587fe3550868bacfbd639d1c6891f Mon Sep 17 00:00:00 2001
+From: Ivan Lipski <ivan.lipski@amd.com>
+Date: Tue, 13 Jan 2026 17:29:59 -0500
+Subject: drm/amd/display: Add an hdmi_hpd_debounce_delay_ms module
+
+From: Ivan Lipski <ivan.lipski@amd.com>
+
+commit 6a681cd9034587fe3550868bacfbd639d1c6891f upstream.
+
+[Why&How]
+Right now, the HDMI HPD filter is enabled by default at 1500ms.
+
+We want to disable it by default, as most modern displays with HDMI do
+not require it for DPMS mode.
+
+The HPD can instead be enabled as a driver parameter with a custom delay
+value in ms (up to 5000ms).
+
+Fixes: c918e75e1ed9 ("drm/amd/display: Add an HPD filter for HDMI")
+Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4859
+Signed-off-by: Ivan Lipski <ivan.lipski@amd.com>
+Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 ++
+ drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 11 +++++++++++
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 15 ++++++++++++---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 5 ++++-
+ 4 files changed, 29 insertions(+), 4 deletions(-)
+
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+@@ -274,6 +274,8 @@ extern int amdgpu_rebar;
+ extern int amdgpu_wbrf;
+ extern int amdgpu_user_queue;
+
++extern uint amdgpu_hdmi_hpd_debounce_delay_ms;
++
+ #define AMDGPU_VM_MAX_NUM_CTX 4096
+ #define AMDGPU_SG_THRESHOLD (256*1024*1024)
+ #define AMDGPU_WAIT_IDLE_TIMEOUT_IN_MS 3000
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+@@ -246,6 +246,7 @@ int amdgpu_damage_clips = -1; /* auto */
+ int amdgpu_umsch_mm_fwlog;
+ int amdgpu_rebar = -1; /* auto */
+ int amdgpu_user_queue = -1;
++uint amdgpu_hdmi_hpd_debounce_delay_ms;
+
+ DECLARE_DYNDBG_CLASSMAP(drm_debug_classes, DD_CLASS_TYPE_DISJOINT_BITS, 0,
+ "DRM_UT_CORE",
+@@ -1128,6 +1129,16 @@ module_param_named(rebar, amdgpu_rebar,
+ MODULE_PARM_DESC(user_queue, "Enable user queues (-1 = auto (default), 0 = disable, 1 = enable, 2 = enable UQs and disable KQs)");
+ module_param_named(user_queue, amdgpu_user_queue, int, 0444);
+
++/*
++ * DOC: hdmi_hpd_debounce_delay_ms (uint)
++ * HDMI HPD disconnect debounce delay in milliseconds.
++ *
++ * Used to filter short disconnect->reconnect HPD toggles some HDMI sinks
++ * generate while entering/leaving power save. Set to 0 to disable by default.
++ */
++MODULE_PARM_DESC(hdmi_hpd_debounce_delay_ms, "HDMI HPD disconnect debounce delay in milliseconds (0 to disable (by default), 1500 is common)");
++module_param_named(hdmi_hpd_debounce_delay_ms, amdgpu_hdmi_hpd_debounce_delay_ms, uint, 0644);
++
+ /* These devices are not supported by amdgpu.
+ * They are supported by the mach64, r128, radeon drivers
+ */
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -8717,9 +8717,18 @@ void amdgpu_dm_connector_init_helper(str
+ mutex_init(&aconnector->hpd_lock);
+ mutex_init(&aconnector->handle_mst_msg_ready);
+
+- aconnector->hdmi_hpd_debounce_delay_ms = AMDGPU_DM_HDMI_HPD_DEBOUNCE_MS;
+- INIT_DELAYED_WORK(&aconnector->hdmi_hpd_debounce_work, hdmi_hpd_debounce_work);
+- aconnector->hdmi_prev_sink = NULL;
++ /*
++ * If HDMI HPD debounce delay is set, use the minimum between selected
++ * value and AMDGPU_DM_MAX_HDMI_HPD_DEBOUNCE_MS
++ */
++ if (amdgpu_hdmi_hpd_debounce_delay_ms) {
++ aconnector->hdmi_hpd_debounce_delay_ms = min(amdgpu_hdmi_hpd_debounce_delay_ms,
++ AMDGPU_DM_MAX_HDMI_HPD_DEBOUNCE_MS);
++ INIT_DELAYED_WORK(&aconnector->hdmi_hpd_debounce_work, hdmi_hpd_debounce_work);
++ aconnector->hdmi_prev_sink = NULL;
++ } else {
++ aconnector->hdmi_hpd_debounce_delay_ms = 0;
++ }
+
+ /*
+ * configure support HPD hot plug connector_>polled default value is 0
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h
+@@ -59,7 +59,10 @@
+
+ #define AMDGPU_HDR_MULT_DEFAULT (0x100000000LL)
+
+-#define AMDGPU_DM_HDMI_HPD_DEBOUNCE_MS 1500
++/*
++ * Maximum HDMI HPD debounce delay in milliseconds
++ */
++#define AMDGPU_DM_MAX_HDMI_HPD_DEBOUNCE_MS 5000
+ /*
+ #include "include/amdgpu_dal_power_if.h"
+ #include "amdgpu_dm_irq.h"