[PATCH 23/28] drm/i915/display: Pass vrr.mode to intel_crtc_update_active_timings()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@xxxxxxxxx>
---
 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




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux