[PATCH 24/28] drm/i915/vblank: Add crtc active timings for fixed_rr mode

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

 



Make provision for fixed refresh rate timings while updating the
crtc timings for vrr.

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@xxxxxxxxx>
---
 drivers/gpu/drm/i915/display/intel_vblank.c | 5 +++++
 drivers/gpu/drm/i915/display/intel_vrr.c    | 7 ++++++-
 drivers/gpu/drm/i915/display/intel_vrr.h    | 2 ++
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_vblank.c b/drivers/gpu/drm/i915/display/intel_vblank.c
index 3ed814245b61..8abcf4c2cfe7 100644
--- a/drivers/gpu/drm/i915/display/intel_vblank.c
+++ b/drivers/gpu/drm/i915/display/intel_vblank.c
@@ -523,6 +523,11 @@ static void intel_crtc_active_timings(struct drm_display_mode *mode,
 		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 if (vrr_mode == INTEL_VRRTG_MODE_FIXED_RR) {
+		mode->crtc_vtotal = intel_vrr_fixed_rr_vtotal(crtc_state);
+		mode->crtc_vblank_end = intel_vrr_fixed_rr_vtotal(crtc_state);
+		mode->crtc_vblank_start = intel_vrr_vmin_vblank_start(crtc_state);
+		*vmax_vblank_start = intel_vrr_fixed_rr_vmax_vblank_start(crtc_state);
 	} else {
 		MISSING_CASE(vrr_mode);
 	}
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c
index c852de748ce3..e44335cdc383 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.c
+++ b/drivers/gpu/drm/i915/display/intel_vrr.c
@@ -250,7 +250,6 @@ void intel_vrr_compute_vrr_timings(struct intel_crtc_state *crtc_state)
  * For fixed refresh rate mode Vmin, Vmax and Flipline all are set to
  * Vtotal value.
  */
-static
 int intel_vrr_fixed_rr_vtotal(const struct intel_crtc_state *crtc_state)
 {
 	struct intel_display *display = to_intel_display(crtc_state);
@@ -263,6 +262,12 @@ int intel_vrr_fixed_rr_vtotal(const struct intel_crtc_state *crtc_state)
 			intel_vrr_real_vblank_delay(crtc_state);
 }
 
+int intel_vrr_fixed_rr_vmax_vblank_start(const struct intel_crtc_state *crtc_state)
+{
+	return intel_vrr_fixed_rr_vtotal(crtc_state) -
+		intel_vrr_vblank_exit_length(crtc_state);
+}
+
 static
 int intel_vrr_fixed_rr_vmax(const struct intel_crtc_state *crtc_state)
 {
diff --git a/drivers/gpu/drm/i915/display/intel_vrr.h b/drivers/gpu/drm/i915/display/intel_vrr.h
index 5ae8d6409f1a..9ba988af703a 100644
--- a/drivers/gpu/drm/i915/display/intel_vrr.h
+++ b/drivers/gpu/drm/i915/display/intel_vrr.h
@@ -35,5 +35,7 @@ int intel_vrr_vmin_vblank_start(const struct intel_crtc_state *crtc_state);
 int intel_vrr_vblank_delay(const struct intel_crtc_state *crtc_state);
 bool intel_vrr_is_enabled(const struct intel_crtc_state *crtc_state);
 bool intel_vrr_is_mode_vrr(const struct intel_crtc_state *crtc_state);
+int intel_vrr_fixed_rr_vtotal(const struct intel_crtc_state *crtc_state);
+int intel_vrr_fixed_rr_vmax_vblank_start(const struct intel_crtc_state *crtc_state);
 
 #endif /* __INTEL_VRR_H__ */
-- 
2.45.2




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

  Powered by Linux