From: Jack Chang <[email protected]>

[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 <[email protected]>
Signed-off-by: Jack Chang <[email protected]>
Signed-off-by: Leon Huang <[email protected]>
Signed-off-by: Alex Hung <[email protected]>
---
 .../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 b3d55cac3569..251b7b6f45af 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.43.0

Reply via email to