From: Fangzhi Zuo <[email protected]> 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 <[email protected]> Tested-by: Pei-Hsin Yang <[email protected]> --- 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 |= base-commit: eb3ff61912825e72633f70b6f7197973be83c8db -- 2.53.0
