From: Alvin Lee <[email protected]>

[Description]
- Current policy does not support HDMI VRR by default, so we
  cannot enable FPO / SubVP (DRR) cases

Reviewed-by: Nevenko Stupar <[email protected]>
Reviewed-by: Jun Lei <[email protected]>
Acked-by: Jasdeep Dhillon <[email protected]>
Signed-off-by: Alvin Lee <[email protected]>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c    | 2 +-
 drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c | 9 ++++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 6a6e4c844316..37c6be337a85 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -8359,7 +8359,7 @@ static void amdgpu_dm_atomic_commit_tail(struct 
drm_atomic_state *state)
                        new_crtc_state = drm_atomic_get_new_crtc_state(state, 
&acrtc->base);
                        old_crtc_state = drm_atomic_get_old_crtc_state(state, 
&acrtc->base);
                }
-               
+
                if (old_crtc_state)
                        pr_debug("old crtc en: %x a: %x m: %x a-chg: %x c-chg: 
%x\n",
                        old_crtc_state->enable,
diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c 
b/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
index ff5f3ef8be0a..815cf13ebe11 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c
@@ -979,8 +979,11 @@ static bool subvp_vblank_schedulable(struct dc *dc, struct 
dc_state *context)
        }
        // Use ignore_msa_timing_param flag to identify as DRR
        if (found && 
context->res_ctx.pipe_ctx[vblank_index].stream->ignore_msa_timing_param) {
-               // SUBVP + DRR case
-               schedulable = subvp_drr_schedulable(dc, context, 
&context->res_ctx.pipe_ctx[vblank_index]);
+               // SUBVP + DRR case -- don't enable SubVP + DRR for HDMI VRR 
cases
+               if 
(context->res_ctx.pipe_ctx[vblank_index].stream->allow_freesync)
+                       schedulable = subvp_drr_schedulable(dc, context, 
&context->res_ctx.pipe_ctx[vblank_index]);
+               else
+                       schedulable = false;
        } else if (found) {
                main_timing = &subvp_pipe->stream->timing;
                phantom_timing = 
&subvp_pipe->stream->mall_stream_config.paired_stream->timing;
@@ -1195,7 +1198,7 @@ static void dcn32_full_validate_bw_helper(struct dc *dc,
                                            
pipe->stream->mall_stream_config.type == SUBVP_NONE) {
                                                non_subvp_pipes++;
                                                // Use ignore_msa_timing_param 
flag to identify as DRR
-                                               if 
(pipe->stream->ignore_msa_timing_param) {
+                                               if 
(pipe->stream->ignore_msa_timing_param && pipe->stream->allow_freesync) {
                                                        drr_pipe_found = true;
                                                        drr_pipe_index = i;
                                                }
-- 
2.34.1

Reply via email to