]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/display: Drop intel_vrr_vblank_delay and use set_context_latency
authorAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Wed, 24 Sep 2025 14:15:41 +0000 (19:45 +0530)
committerAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Thu, 25 Sep 2025 13:08:20 +0000 (18:38 +0530)
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 <ankit.k.nautiyal@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://lore.kernel.org/r/20250924141542.3122126-10-ankit.k.nautiyal@intel.com
drivers/gpu/drm/i915/display/intel_dsb.c
drivers/gpu/drm/i915/display/intel_vblank.c
drivers/gpu/drm/i915/display/intel_vrr.c
drivers/gpu/drm/i915/display/intel_vrr.h

index 1d9379a3240bc65f3e1e5bca49b291b0eaffb9e5..ae8574880ef2c38281c0560e64be936b9b3cd3d9 100644 (file)
@@ -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;
index c15234c1d96e721cec56e9cef33965379c96a04f..0b7fcc05e64c3c530238ba96524698dd8f977f36 100644 (file)
@@ -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);
 
index da073bbabc46a3d8f22719d56906afc44ae3d9a5..190c51be5cbc9cb5ac6cda343478992ef7fecd02 100644 (file)
@@ -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)
 {
        /*
index 32f8644fc369fbcfa0c64b4ee7357b1c030f6f19..7317f8730089cf0d38168f98d65963760d0f0ba0 100644 (file)
@@ -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);