drm/amd/display: Fixed corruption on 4K tvs
authorHarry VanZyllDeJong <hvanzyll@amd.com>
Fri, 26 Mar 2021 15:20:58 +0000 (11:20 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 9 Apr 2021 20:53:24 +0000 (16:53 -0400)
[WHY]
When on the desktop freesync is not enabled,
doing a frame stretch causes the TV to display
undesired output.

[HOW]
By changing the logic so that when ever fresync
is supported the TV is notified we are in fressync
instead on a non fresync state.

Signed-off-by: Harry VanZyllDeJong <hvanzyll@amd.com>
Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
Acked-by: Anthony Koo <Anthony.Koo@amd.com>
Acked-by: Jun Lei <Jun.Lei@amd.com>
Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/modules/freesync/freesync.c

index 4287be7..3f4f44b 100644 (file)
@@ -543,8 +543,8 @@ static void build_vrr_infopacket_data_v1(const struct mod_vrr_params *vrr,
                infopacket->sb[6] |= 0x02;
 
        /* PB6 = [Bit 2 = FreeSync Active] */
-       if (vrr->state == VRR_STATE_ACTIVE_VARIABLE ||
-                       vrr->state == VRR_STATE_ACTIVE_FIXED)
+       if (vrr->state != VRR_STATE_DISABLED &&
+                       vrr->state != VRR_STATE_UNSUPPORTED)
                infopacket->sb[6] |= 0x04;
 
        // For v1 & 2 infoframes program nominal if non-fs mode, otherwise full range