]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/dsb: Fix dewake scanline
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 24 Jun 2024 19:10:24 +0000 (22:10 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 29 Aug 2024 11:54:03 +0000 (14:54 +0300)
Currently we calculate the DEwake scanline based on
the delayed vblank start, while in reality it should be computed
based on the undelayed vblank start (as that is where the DSB
actually starts). Currently it doesn't really matter as we
don't have any vblank delay configured, but that may change
in the future so let's be accurate in what we do.

We can also remove the max() as intel_crtc_scanline_to_hw()
can deal with negative numbers, which there really shouldn't
be anyway.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240624191032.27333-7-ville.syrjala@linux.intel.com
Reviewed-by: Animesh Manna <animesh.manna@intel.com>
drivers/gpu/drm/i915/display/intel_dsb.c

index 944fb09900459dae61625a7b40ee1e328be407c2..6ca052558e3bda4852ab4c566f5468e8002b06a1 100644 (file)
@@ -86,16 +86,10 @@ struct intel_dsb {
 static int dsb_dewake_scanline(const struct intel_crtc_state *crtc_state)
 {
        struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
-       const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
        unsigned int latency = skl_watermark_max_latency(i915, 0);
-       int vblank_start;
 
-       if (crtc_state->vrr.enable)
-               vblank_start = intel_vrr_vmin_vblank_start(crtc_state);
-       else
-               vblank_start = intel_mode_vblank_start(adjusted_mode);
-
-       return max(0, vblank_start - intel_usecs_to_scanlines(adjusted_mode, latency));
+       return intel_mode_vdisplay(&crtc_state->hw.adjusted_mode) -
+               intel_usecs_to_scanlines(&crtc_state->hw.adjusted_mode, latency);
 }
 
 static u32 dsb_chicken(struct intel_crtc *crtc)