]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915: Extract intel_mode_vblank_delay()
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 10 Dec 2024 21:09:58 +0000 (23:09 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 15 Jan 2025 17:43:29 +0000 (19:43 +0200)
Extract the code that computes the hardware centric view
of the vblank delay into a helper. We'll need a slightly
different variant for VRR soon.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241210211007.5976-10-ville.syrjala@linux.intel.com
Reviewed-by: Ankit Nautiyal <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_vblank.h

index fcb8bf9cb313226bc73ca4b940aa35766b0d8eb2..d755825edb3520662bda0bb57490cc40eccfbba0 100644 (file)
@@ -130,8 +130,7 @@ pre_commit_crtc_state(struct intel_atomic_state *state,
 
 static int dsb_vblank_delay(const struct intel_crtc_state *crtc_state)
 {
-       return intel_mode_vblank_start(&crtc_state->hw.adjusted_mode) -
-               intel_mode_vdisplay(&crtc_state->hw.adjusted_mode);
+       return intel_mode_vblank_delay(&crtc_state->hw.adjusted_mode);
 }
 
 static int dsb_vtotal(struct intel_atomic_state *state,
index 6f0e0c64187da2c6903a2a3a087685b46c42ebf4..ee33a49d987366ab11d412b3c6f5af6c2a1cdd4a 100644 (file)
@@ -597,6 +597,11 @@ 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);
+}
+
 void intel_vblank_evade_init(const struct intel_crtc_state *old_crtc_state,
                             const struct intel_crtc_state *new_crtc_state,
                             struct intel_vblank_evade_ctx *evade)
@@ -653,8 +658,7 @@ void intel_vblank_evade_init(const struct intel_crtc_state *old_crtc_state,
         */
        if (intel_color_uses_dsb(new_crtc_state) ||
            new_crtc_state->update_m_n || new_crtc_state->update_lrr)
-               evade->min -= intel_mode_vblank_start(adjusted_mode) -
-                       intel_mode_vdisplay(adjusted_mode);
+               evade->min -= intel_mode_vblank_delay(adjusted_mode);
 }
 
 /* must be called with vblank interrupt already enabled! */
index 6d7336256982619073cb5ae84a48d3d1481a5264..12c8e1f829a46fa0c531b8cfedc02ee1ad2938d3 100644 (file)
@@ -24,6 +24,7 @@ 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,