AMD General

> -----Original Message-----
> From: dri-devel <[email protected]> On Behalf Of
> [email protected]
> Sent: Thursday, October 8, 2026 03:32
> To: Wentland, Harry <[email protected]>; Li, Sun peng (Leo)
> <[email protected]>; Rodrigo Siqueira <[email protected]>; Deucher,
> Alexander <[email protected]>; Koenig, Christian
> <[email protected]>; David Airlie <[email protected]>; Simona
> Vetter <[email protected]>; [email protected]
> Cc: Laktyushkin, Dmytro <[email protected]>; Li, Roman
> <[email protected]>; Liu, Wenjing <[email protected]>; Chung,
> ChiaHsuan (Tom) <[email protected]>; Varone, Dillon
> <[email protected]>; Hung, Alex <[email protected]>; Lu Yao
> <[email protected]>; [email protected]; linux-
> [email protected]; Wang Jiang <[email protected]>
> Subject: [PATCH] drm/amd/display: Increase the HDMI HPD disconnect filter
> time
>
> From: Wang Jiang <[email protected]>
>
> The HPD filter programmed for the DVI/HDMI link types uses 100ms for a
> disconnect, which is shorter than the HPD low period that some sinks generate
> while they reconfigure, for example when the video mode changes or when
> the audio infoframe is updated. Such a sink is then reported as unplugged and
> plugged back in, so the connector is torn down and re-probed for nothing.
>
> Raise the disconnect filter to 800ms for the DVI/HDMI link types, including
> HDMI FRL. The delay is written to DC_HPD_TOGGLE_FILT_CNTL in 10ms units
> inside an 8-bit field, so 800ms is encoded as 80, and the filter runs in
> hardware, so there is no CPU cost. The connect filter is left at 500ms. A
> genuine unplug keeps HPD low, so the only cost is that the event is reported 
> up
> to 800ms later.
>
> The DP branch above already tunes its filter values empirically to hide a
> bouncing HPD, and link_factory.c notes that a badly programmed GPIO makes
> HPD not "rise or drain fast enough, leading to bounces".
>
> Signed-off-by: Wang Jiang <[email protected]>
> ---
>  drivers/gpu/drm/amd/display/dc/link/protocols/link_hpd.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/link/protocols/link_hpd.c
> b/drivers/gpu/drm/amd/display/dc/link/protocols/link_hpd.c
> index cfb5ef0523a7..2b38ddaaaa4b 100644
> --- a/drivers/gpu/drm/amd/display/dc/link/protocols/link_hpd.c
> +++ b/drivers/gpu/drm/amd/display/dc/link/protocols/link_hpd.c
> @@ -82,8 +82,12 @@ bool program_hpd_filter(const struct dc_link *link)
>       case SIGNAL_TYPE_HDMI_TYPE_A:
>       case SIGNAL_TYPE_HDMI_FRL:
>               /* Program hpd filter */
> +             /* Some HDMI/DVI sinks drive HPD low for a few hundred ms
> while
> +              * they reconfigure; 100ms is not enough to hide that bounce,
> +              * which is then reported as a fake unplug/plug pair.
> +              */
>               delay_on_connect_in_ms = 500;
> -             delay_on_disconnect_in_ms = 100;
> +             delay_on_disconnect_in_ms = 800;
Raising the HDMI HPD disconnect filter to 800 ms makes the source ignore the 
spec‑defined ≥100ms HPD‑low pulse (HDMI 1.4 §8.5 / HDMI 2.1 §12.1.1) used to 
signal E‑EDID changes, eARC discovery, and HDCP, so a sink that updates its 
EDID is no longer detected as requesting an EDID re-read.

Jerry
>               break;
>       case SIGNAL_TYPE_DISPLAY_PORT:
>       case SIGNAL_TYPE_DISPLAY_PORT_MST:
> --
> 2.25.1

Reply via email to