From: Ankit Nautiyal Date: Wed, 24 Sep 2025 14:15:41 +0000 (+0530) Subject: drm/i915/display: Drop intel_vrr_vblank_delay and use set_context_latency X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=68f1d1764d50cf65f466cac0e6286f40c8ff93e9;p=thirdparty%2Fkernel%2Flinux.git drm/i915/display: Drop intel_vrr_vblank_delay and use set_context_latency The helper intel_vrr_vblank_delay() was used to keep track of the SCL lines + the extra vblank delay required for ICL/TGL. This was used to wait for sufficient lines for: -push send bit to clear for VRR case -evasion to delay the commit. For first case we are using safe window scanline wait and with that we just need to wait for SCL lines, we do not need to wait for the extra vblank delay required for ICL/TGL. For the second case, we actually do not need to wait for extra lines before the undelayed vblank, if we are already in the safe window. To sum up, SCL lines is sufficient for both cases. So drop the helper intel_vrr_vblank_delay and just use crtc_state->set_context_latency instead. Signed-off-by: Ankit Nautiyal Reviewed-by: Ville Syrjälä Link: https://lore.kernel.org/r/20250924141542.3122126-10-ankit.k.nautiyal@intel.com --- diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c b/drivers/gpu/drm/i915/display/intel_dsb.c index 1d9379a3240bc..ae8574880ef2c 100644 --- a/drivers/gpu/drm/i915/display/intel_dsb.c +++ b/drivers/gpu/drm/i915/display/intel_dsb.c @@ -128,7 +128,7 @@ static int dsb_vblank_delay(struct intel_atomic_state *state, * scanline until the delayed vblank occurs after * TRANS_PUSH has been written. */ - return intel_vrr_vblank_delay(crtc_state) + 1; + return crtc_state->set_context_latency + 1; else return intel_mode_vblank_delay(&crtc_state->hw.adjusted_mode); } @@ -723,7 +723,7 @@ void intel_dsb_vblank_evade(struct intel_atomic_state *state, intel_dsb_emit_wait_dsl(dsb, DSB_OPCODE_WAIT_DSL_OUT, 0, 0); if (pre_commit_is_vrr_active(state, crtc)) { - int vblank_delay = intel_vrr_vblank_delay(crtc_state); + int vblank_delay = crtc_state->set_context_latency; end = intel_vrr_vmin_vblank_start(crtc_state); start = end - vblank_delay - latency; diff --git a/drivers/gpu/drm/i915/display/intel_vblank.c b/drivers/gpu/drm/i915/display/intel_vblank.c index c15234c1d96e7..0b7fcc05e64c3 100644 --- a/drivers/gpu/drm/i915/display/intel_vblank.c +++ b/drivers/gpu/drm/i915/display/intel_vblank.c @@ -681,7 +681,7 @@ void intel_vblank_evade_init(const struct intel_crtc_state *old_crtc_state, else evade->vblank_start = intel_vrr_vmax_vblank_start(crtc_state); - vblank_delay = intel_vrr_vblank_delay(crtc_state); + vblank_delay = crtc_state->set_context_latency; } else { evade->vblank_start = intel_mode_vblank_start(adjusted_mode); diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c index da073bbabc46a..190c51be5cbc9 100644 --- a/drivers/gpu/drm/i915/display/intel_vrr.c +++ b/drivers/gpu/drm/i915/display/intel_vrr.c @@ -92,14 +92,6 @@ static int intel_vrr_extra_vblank_delay(struct intel_display *display) return DISPLAY_VER(display) < 13 ? 1 : 0; } -int intel_vrr_vblank_delay(const struct intel_crtc_state *crtc_state) -{ - struct intel_display *display = to_intel_display(crtc_state); - - return crtc_state->set_context_latency + - intel_vrr_extra_vblank_delay(display); -} - static int intel_vrr_vmin_flipline_offset(struct intel_display *display) { /* diff --git a/drivers/gpu/drm/i915/display/intel_vrr.h b/drivers/gpu/drm/i915/display/intel_vrr.h index 32f8644fc369f..7317f8730089c 100644 --- a/drivers/gpu/drm/i915/display/intel_vrr.h +++ b/drivers/gpu/drm/i915/display/intel_vrr.h @@ -35,7 +35,6 @@ int intel_vrr_vmax_vtotal(const struct intel_crtc_state *crtc_state); int intel_vrr_vmin_vtotal(const struct intel_crtc_state *crtc_state); int intel_vrr_vmax_vblank_start(const struct intel_crtc_state *crtc_state); 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_fixed_rr(const struct intel_crtc_state *crtc_state); void intel_vrr_transcoder_enable(const struct intel_crtc_state *crtc_state); void intel_vrr_transcoder_disable(const struct intel_crtc_state *crtc_state);