]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915: Reorder drm_vblank_put() vs. need_vlv_dsi_wa
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 13 Dec 2023 10:25:12 +0000 (12:25 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 22 Jan 2024 17:03:11 +0000 (19:03 +0200)
Drop the vblank reference only after we've done the hideous
need_vlv_dsi_wa stuff. This will make it easier to reuse the
the vblank evasion machinery elsewhere.

Keeping the vblank reference for a bit longer is not a
problem. In fact we might want to not drop it at all until
intel_pipe_update_end(), but we'll leave that idea for later.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231213102519.13500-3-ville.syrjala@linux.intel.com
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
drivers/gpu/drm/i915/display/intel_crtc.c

index d5c3f6078e42b2335bf77804975862c54aed0e82..4df8927bb0627f1956115f7e82dc0e800f5d2af9 100644 (file)
@@ -614,8 +614,6 @@ void intel_pipe_update_start(struct intel_atomic_state *state,
 
        finish_wait(wq, &wait);
 
-       drm_crtc_vblank_put(&crtc->base);
-
        /*
         * On VLV/CHV DSI the scanline counter would appear to
         * increment approx. 1/3 of a scanline before start of vblank.
@@ -634,6 +632,8 @@ void intel_pipe_update_start(struct intel_atomic_state *state,
        while (need_vlv_dsi_wa && scanline == vblank_start)
                scanline = intel_get_crtc_scanline(crtc);
 
+       drm_crtc_vblank_put(&crtc->base);
+
        crtc->debug.scanline_start = scanline;
        crtc->debug.start_vbl_time = ktime_get();
        crtc->debug.start_vbl_count = intel_crtc_get_vblank_counter(crtc);