On Sun, Sep 21, 2025 at 10:05:32AM +0530, Ankit Nautiyal wrote:
> Currently we use difference between vactive and vblank delay to
> implicitly wait for SCL lines.
> 
> Remove the function intel_mode_vblank_delay as we can simply use
> the set context latency instead.
> 
> Signed-off-by: Ankit Nautiyal <[email protected]>
> ---
>  drivers/gpu/drm/i915/display/intel_dsb.c    | 4 ++--
>  drivers/gpu/drm/i915/display/intel_vblank.c | 7 +------
>  drivers/gpu/drm/i915/display/intel_vblank.h | 1 -
>  3 files changed, 3 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c 
> b/drivers/gpu/drm/i915/display/intel_dsb.c
> index ca31e928ecb0..dfe928aefdcd 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsb.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsb.c
> @@ -130,7 +130,7 @@ static int dsb_vblank_delay(struct intel_atomic_state 
> *state,
>                */
>               return intel_vrr_scl_delay(crtc_state) + 1;
>       else
> -             return intel_mode_vblank_delay(&crtc_state->hw.adjusted_mode);
> +             return crtc_state->set_context_latency;

I think we want to leave all the non-VRR cases to use
intel_mode_vblank_delay(). Otherwise when running with fixed
refresh rate we won't account for a reduced guardband.

And for the cases where the fixed refresh rate is handle by the legacy
timing generator we actually need a slightly different delay for the
legacy and VRR timing generators on TGL (due to
intel_vrr_extra_vblank_delay() only affecting the VRR timing generator).

>  }
>  
>  static int dsb_vtotal(struct intel_atomic_state *state,
> @@ -733,7 +733,7 @@ void intel_dsb_vblank_evade(struct intel_atomic_state 
> *state,
>               start = end - vblank_delay - latency;
>               intel_dsb_wait_scanline_out(state, dsb, start, end);
>       } else {
> -             int vblank_delay = 
> intel_mode_vblank_delay(&crtc_state->hw.adjusted_mode);
> +             int vblank_delay = crtc_state->set_context_latency;
>  
>               end = intel_mode_vblank_start(&crtc_state->hw.adjusted_mode);
>               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 9441b7bacd27..8c4cb6913ef9 100644
> --- a/drivers/gpu/drm/i915/display/intel_vblank.c
> +++ b/drivers/gpu/drm/i915/display/intel_vblank.c
> @@ -619,11 +619,6 @@ int intel_mode_vtotal(const struct drm_display_mode 
> *mode)
>       return vtotal;
>  }
>  
> -int intel_mode_vblank_delay(const struct drm_display_mode *mode)
> -{
> -     return intel_mode_vblank_start(mode) - intel_mode_vdisplay(mode);
> -}
> -
>  static const struct intel_crtc_state *
>  pre_commit_crtc_state(const struct intel_crtc_state *old_crtc_state,
>                     const struct intel_crtc_state *new_crtc_state)
> @@ -685,7 +680,7 @@ void intel_vblank_evade_init(const struct 
> intel_crtc_state *old_crtc_state,
>       } else {
>               evade->vblank_start = intel_mode_vblank_start(adjusted_mode);
>  
> -             vblank_delay = intel_mode_vblank_delay(adjusted_mode);
> +             vblank_delay = crtc_state->set_context_latency;
>       }
>  
>       /* FIXME needs to be calibrated sensibly */
> diff --git a/drivers/gpu/drm/i915/display/intel_vblank.h 
> b/drivers/gpu/drm/i915/display/intel_vblank.h
> index 21fbb08d61d5..0fd6f7aeffd4 100644
> --- a/drivers/gpu/drm/i915/display/intel_vblank.h
> +++ b/drivers/gpu/drm/i915/display/intel_vblank.h
> @@ -25,7 +25,6 @@ int intel_mode_vdisplay(const struct drm_display_mode 
> *mode);
>  int intel_mode_vblank_start(const struct drm_display_mode *mode);
>  int intel_mode_vblank_end(const struct drm_display_mode *mode);
>  int intel_mode_vtotal(const struct drm_display_mode *mode);
> -int intel_mode_vblank_delay(const struct drm_display_mode *mode);
>  
>  void intel_vblank_evade_init(const struct intel_crtc_state *old_crtc_state,
>                            const struct intel_crtc_state *new_crtc_state,
> -- 
> 2.45.2

-- 
Ville Syrjälä
Intel

Reply via email to