@@ -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);
}
@@ -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)
{
@@ -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__ */
Make provision for fixed refresh rate timings while updating the crtc timings for vrr. Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> --- 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(-)