Modify the helper intel_crtc_update_active_timings() to update the
timings based on the given vrr.mode.

Signed-off-by: Ankit Nautiyal <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_display.c |  6 +++---
 drivers/gpu/drm/i915/display/intel_vblank.c  | 22 ++++++++++++--------
 drivers/gpu/drm/i915/display/intel_vblank.h  |  4 +++-
 3 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index a920d06278fe..2127888d459e 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -1319,7 +1319,7 @@ static void intel_pre_plane_update(struct 
intel_atomic_state *state,
 
        if (intel_crtc_vrr_disabling(state, crtc)) {
                intel_vrr_disable(old_crtc_state);
-               intel_crtc_update_active_timings(old_crtc_state, false);
+               intel_crtc_update_active_timings(old_crtc_state, 
INTEL_VRRTG_MODE_NONE);
        }
 
        if (audio_disabling(old_crtc_state, new_crtc_state))
@@ -7189,7 +7189,7 @@ static void intel_enable_crtc(struct intel_atomic_state 
*state,
                        intel_atomic_get_new_crtc_state(state, pipe_crtc);
 
                /* VRR will be enable later, if required */
-               intel_crtc_update_active_timings(pipe_crtc_state, false);
+               intel_crtc_update_active_timings(pipe_crtc_state, 
INTEL_VRRTG_MODE_NONE);
        }
 
        dev_priv->display.funcs.display->crtc_enable(state, crtc);
@@ -7281,7 +7281,7 @@ static void intel_update_crtc(struct intel_atomic_state 
*state,
        if (intel_crtc_vrr_enabling(state, crtc) ||
            new_crtc_state->update_m_n || new_crtc_state->update_lrr)
                intel_crtc_update_active_timings(new_crtc_state,
-                                                
intel_vrr_is_enabled(new_crtc_state));
+                                                new_crtc_state->vrr.mode);
 
        /*
         * We usually enable FIFO underrun interrupts as part of the
diff --git a/drivers/gpu/drm/i915/display/intel_vblank.c 
b/drivers/gpu/drm/i915/display/intel_vblank.c
index 4efd4f7d497a..3ed814245b61 100644
--- a/drivers/gpu/drm/i915/display/intel_vblank.c
+++ b/drivers/gpu/drm/i915/display/intel_vblank.c
@@ -510,22 +510,26 @@ void intel_wait_for_pipe_scanline_moving(struct 
intel_crtc *crtc)
 static void intel_crtc_active_timings(struct drm_display_mode *mode,
                                      int *vmax_vblank_start,
                                      const struct intel_crtc_state *crtc_state,
-                                     bool vrr_enable)
+                                     enum intel_vrrtg_mode vrr_mode)
 {
        drm_mode_init(mode, &crtc_state->hw.adjusted_mode);
        *vmax_vblank_start = 0;
 
-       if (!vrr_enable)
+       if (vrr_mode == INTEL_VRRTG_MODE_NONE)
                return;
 
-       mode->crtc_vtotal = intel_vrr_vmax_vtotal(crtc_state);
-       mode->crtc_vblank_end = intel_vrr_vmax_vtotal(crtc_state);
-       mode->crtc_vblank_start = intel_vrr_vmin_vblank_start(crtc_state);
-       *vmax_vblank_start = intel_vrr_vmax_vblank_start(crtc_state);
+       if (vrr_mode == INTEL_VRRTG_MODE_VRR) {
+               mode->crtc_vtotal = intel_vrr_vmax_vtotal(crtc_state);
+               mode->crtc_vblank_end = intel_vrr_vmax_vtotal(crtc_state);
+               mode->crtc_vblank_start = 
intel_vrr_vmin_vblank_start(crtc_state);
+               *vmax_vblank_start = intel_vrr_vmax_vblank_start(crtc_state);
+       } else {
+               MISSING_CASE(vrr_mode);
+       }
 }
 
 void intel_crtc_update_active_timings(const struct intel_crtc_state 
*crtc_state,
-                                     bool vrr_enable)
+                                     enum intel_vrrtg_mode vrr_mode)
 {
        struct intel_display *display = to_intel_display(crtc_state);
        struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
@@ -535,9 +539,9 @@ void intel_crtc_update_active_timings(const struct 
intel_crtc_state *crtc_state,
        unsigned long irqflags;
 
        intel_crtc_active_timings(&adjusted_mode, &vmax_vblank_start,
-                                 crtc_state, vrr_enable);
+                                 crtc_state, vrr_mode);
 
-       if (vrr_enable)
+       if (vrr_mode != INTEL_VRRTG_MODE_NONE)
                drm_WARN_ON(display->drm, (mode_flags & I915_MODE_FLAG_VRR) == 
0);
        else
                mode_flags &= ~I915_MODE_FLAG_VRR;
diff --git a/drivers/gpu/drm/i915/display/intel_vblank.h 
b/drivers/gpu/drm/i915/display/intel_vblank.h
index 21fbb08d61d5..addd6db14df2 100644
--- a/drivers/gpu/drm/i915/display/intel_vblank.h
+++ b/drivers/gpu/drm/i915/display/intel_vblank.h
@@ -9,6 +9,8 @@
 #include <linux/ktime.h>
 #include <linux/types.h>
 
+enum intel_vrrtg_mode;
+
 struct drm_crtc;
 struct drm_display_mode;
 struct intel_atomic_state;
@@ -41,7 +43,7 @@ int intel_get_crtc_scanline(struct intel_crtc *crtc);
 void intel_wait_for_pipe_scanline_stopped(struct intel_crtc *crtc);
 void intel_wait_for_pipe_scanline_moving(struct intel_crtc *crtc);
 void intel_crtc_update_active_timings(const struct intel_crtc_state 
*crtc_state,
-                                     bool vrr_enable);
+                                     enum intel_vrrtg_mode vrr_mode);
 int intel_crtc_scanline_offset(const struct intel_crtc_state *crtc_state);
 
 const struct intel_crtc_state *
-- 
2.45.2

Reply via email to