@@ -670,9 +670,13 @@ void intel_vblank_evade_init(const struct intel_crtc_state *old_crtc_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(crtc->base.dev, intel_crtc_needs_modeset(new_crtc_state) ||
- new_crtc_state->update_m_n || new_crtc_state->update_lrr);
+ /*
+ * For platforms that do not always use VRR Timing generator,
+ * timing changes should happen with VRR disabled.
+ */
+ if (!intel_vrr_always_use_vrr_tg(display))
+ drm_WARN_ON(crtc->base.dev, intel_crtc_needs_modeset(new_crtc_state) ||
+ new_crtc_state->update_m_n || new_crtc_state->update_lrr);
if (intel_vrr_is_push_sent(crtc_state))
evade->vblank_start = intel_vrr_vmin_vblank_start(crtc_state);
For fixed refresh rate timings, the VRR TG is not disabled and timings are changed on the fly. Modify the check for warning for changing timings with VRR TG disabled. Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com> --- drivers/gpu/drm/i915/display/intel_vblank.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)