drm/i915: Assert that VRR is off during vblank evasion if necessary
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 1 Sep 2023 13:04:39 +0000 (16:04 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 20 Sep 2023 19:32:22 +0000 (22:32 +0300)
Whenever we change the actual transcoder timings (clock via
seamless M/N, full modeset, (or soon) vtotal via LRR) we
want the timing generator to be in non-VRR during the commit.
Warn if we forgot to turn VRR off prior to vblank evasion.

Cc: Manasi Navare <navaremanasi@chromium.org>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230901130440.2085-12-ville.syrjala@linux.intel.com
Reviewed-by: Manasi Navare <navaremanasi@chromium.org>
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
drivers/gpu/drm/i915/display/intel_crtc.c

index a04076064f0246d94ff66eb8ce3369f8cdf9fc58..a39e31c1ca85a9fc959d2c62c77eef78e67af71d 100644 (file)
@@ -493,6 +493,10 @@ static void intel_crtc_vblank_evade_scanlines(struct intel_atomic_state *state,
        adjusted_mode = &crtc_state->hw.adjusted_mode;
 
        if (crtc->mode_flags & I915_MODE_FLAG_VRR) {
+               /* timing changes should happen with VRR disabled */
+               drm_WARN_ON(state->base.dev, intel_crtc_needs_modeset(new_crtc_state) ||
+                           new_crtc_state->update_m_n);
+
                if (intel_vrr_is_push_sent(crtc_state))
                        *vblank_start = intel_vrr_vmin_vblank_start(crtc_state);
                else