From: "Leo (Hanghong) Ma" <hanghong...@amd.com>

[Why]
The FreeSync active bit unconditionally set in HDMI VSIF.

[How]
Set this bit to true when FAMS is enable on desktop.

Reviewed-by: Felipe Clark <felipe.cl...@amd.com>
Acked-by: Qingqing Zhuo <qingqing.z...@amd.com>
Signed-off-by: Leo (Hanghong) Ma <hanghong...@amd.com>
---
 .../gpu/drm/amd/display/modules/freesync/freesync.c  | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c 
b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
index 315da61ee897..2be45b314922 100644
--- a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
+++ b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
@@ -955,20 +955,26 @@ void mod_freesync_build_vrr_infopacket(struct 
mod_freesync *mod_freesync,
         * Check if Freesync is supported. Return if false. If true,
         * set the corresponding bit in the info packet
         */
+       bool freesync_on_desktop;
+       bool fams_enable;
+
+       fams_enable = 
stream->ctx->dc->current_state->bw_ctx.bw.dcn.clk.fw_based_mclk_switching;
+       freesync_on_desktop = stream->freesync_on_desktop && fams_enable;
+
        if (!vrr->send_info_frame)
                return;
 
        switch (packet_type) {
        case PACKET_TYPE_FS_V3:
-               build_vrr_infopacket_v3(stream->signal, vrr, app_tf, 
infopacket, stream->freesync_on_desktop);
+               build_vrr_infopacket_v3(stream->signal, vrr, app_tf, 
infopacket, freesync_on_desktop);
                break;
        case PACKET_TYPE_FS_V2:
-               build_vrr_infopacket_v2(stream->signal, vrr, app_tf, 
infopacket, stream->freesync_on_desktop);
+               build_vrr_infopacket_v2(stream->signal, vrr, app_tf, 
infopacket, freesync_on_desktop);
                break;
        case PACKET_TYPE_VRR:
        case PACKET_TYPE_FS_V1:
        default:
-               build_vrr_infopacket_v1(stream->signal, vrr, infopacket, 
stream->freesync_on_desktop);
+               build_vrr_infopacket_v1(stream->signal, vrr, infopacket, 
freesync_on_desktop);
        }
 
        if (true == pack_sdp_v1_3 &&
-- 
2.25.1

Reply via email to