From 5e07a945856df30618be02a14e88180f09235ca0 Mon Sep 17 00:00:00 2001 From: Jack Chang Date: Thu, 11 Sep 2025 16:22:53 +0800 Subject: [PATCH] drm/amd/display: Add AS-SDP v2 support for eDP feature [WHY & HOW] VESA Panel Replay requires AS-SDP v2 support. Need to add checking flow to enable AS-SDP v2 in this case. Reviewed-by: Robin Chen Signed-off-by: Jack Chang Signed-off-by: Leon Huang Signed-off-by: Alex Hung Signed-off-by: Alex Deucher --- .../display/modules/info_packet/info_packet.c | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c b/drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c index b3d55cac35694..251b7b6f45af1 100644 --- a/drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c +++ b/drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c @@ -537,7 +537,11 @@ void mod_build_adaptive_sync_infopacket(const struct dc_stream_state *stream, break; case FREESYNC_TYPE_PCON_IN_WHITELIST: case ADAPTIVE_SYNC_TYPE_EDP: - mod_build_adaptive_sync_infopacket_v1(info_packet); + if (stream && stream->link->replay_settings.config.replay_supported && + stream->link->replay_settings.config.replay_version == DC_VESA_PANEL_REPLAY) + mod_build_adaptive_sync_infopacket_v2(stream, param, info_packet); + else + mod_build_adaptive_sync_infopacket_v1(info_packet); break; case ADAPTIVE_SYNC_TYPE_NONE: case FREESYNC_TYPE_PCON_NOT_IN_WHITELIST: @@ -567,13 +571,15 @@ void mod_build_adaptive_sync_infopacket_v2(const struct dc_stream_state *stream, info_packet->hb2 = AS_SDP_VER_2; info_packet->hb3 = AS_DP_SDP_LENGTH; - //Payload - info_packet->sb[0] = param->supportMode; //1: AVT; 0: FAVT - info_packet->sb[1] = (stream->timing.v_total & 0x00FF); - info_packet->sb[2] = (stream->timing.v_total & 0xFF00) >> 8; - //info_packet->sb[3] = 0x00; Target RR, not use fot AVT - info_packet->sb[4] = (param->increase.support << 6 | param->decrease.support << 7); - info_packet->sb[5] = param->increase.frame_duration_hex; - info_packet->sb[6] = param->decrease.frame_duration_hex; + if (param) { + //Payload + info_packet->sb[0] = param->supportMode; //1: AVT; 0: FAVT + info_packet->sb[1] = (stream->timing.v_total & 0x00FF); + info_packet->sb[2] = (stream->timing.v_total & 0xFF00) >> 8; + //info_packet->sb[3] = 0x00; Target RR, not use fot AVT + info_packet->sb[4] = (param->increase.support << 6 | param->decrease.support << 7); + info_packet->sb[5] = param->increase.frame_duration_hex; + info_packet->sb[6] = param->decrease.frame_duration_hex; + } } -- 2.47.3