From 640fd039dc8bd88d5edc98b2d55aaa6f677adf39 Mon Sep 17 00:00:00 2001 From: Fangzhi Zuo Date: Thu, 20 Aug 2026 10:50:19 -0400 Subject: [PATCH] drm/amd/display: Emit VTEM for HF-VSDB VRR on TMDS links HDMI-Forum VRR metadata is carried in the Video Timing Extended Metadata Packet (VTEM). amdgpu_dm_update_freesync_state_on_stream() only built the VTEM for SIGNAL_TYPE_HDMI_FRL, so on a TMDS link a sink that advertises HDMI-Forum VRR via the HF-VSDB (but not AMD FreeSync via the AMD-VSDB) never received a VTEM and VRR could not engage. Per HDMI 2.1 a VTEM is a video-blanking data-island packet valid in both TMDS and FRL modes; only the compressed-video CVTEM is tied to FRL. Build the VTEM on a TMDS link as well when the sink reports HF-VSDB VRR. Sinks without HF-VSDB VRR keep the existing AMD FreeSync SPD infopacket path, so AMD FreeSync behavior is unchanged. Signed-off-by: Fangzhi Zuo Reviewed-by: Harry Wentland Tested-by: Pei-Hsin Yang Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_freesync.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_freesync.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_freesync.c index 63d10cb7f5ed..281c6cec9f4b 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_freesync.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_freesync.c @@ -238,7 +238,10 @@ void amdgpu_dm_update_freesync_state_on_stream( &vrr_infopacket, pack_sdp_v1_3); - if (new_stream->sink->sink_signal == SIGNAL_TYPE_HDMI_FRL) + /* Per HDMI 2.1, VTEM is valid on TMDS as well as FRL */ + if (new_stream->sink->sink_signal == SIGNAL_TYPE_HDMI_FRL || + (new_stream->sink->sink_signal == SIGNAL_TYPE_HDMI_TYPE_A && + aconn && aconn->base.display_info.hdmi.vrr_cap.supported)) mod_build_infopacket_vtem(new_stream, &vrr_params, 0, &vrr_infopacket); new_crtc_state->freesync_vrr_info_changed |=