drm/i915: Include need_vlv_dsi_wa in intel_vblank_evade_ctx
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 13 Dec 2023 10:25:14 +0000 (12:25 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 22 Jan 2024 17:03:32 +0000 (19:03 +0200)
Pull the need_vlv_dsi_wa details into intel_vblank_evade_init()
so that caller doesn't have to care about it.

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

index 93474fc9e5023f327ebf82e5b2c14825f4dc6efc..92cfb7c8eadb0486c1f8fc3023d85a784b75295c 100644 (file)
@@ -473,6 +473,7 @@ static int intel_mode_vblank_start(const struct drm_display_mode *mode)
 
 struct intel_vblank_evade_ctx {
        int min, max, vblank_start;
+       bool need_vlv_dsi_wa;
 };
 
 static void intel_vblank_evade_init(const struct intel_crtc_state *old_crtc_state,
@@ -480,9 +481,13 @@ static void intel_vblank_evade_init(const struct intel_crtc_state *old_crtc_stat
                                    struct intel_vblank_evade_ctx *evade)
 {
        struct intel_crtc *crtc = to_intel_crtc(new_crtc_state->uapi.crtc);
+       struct drm_i915_private *i915 = to_i915(crtc->base.dev);
        const struct intel_crtc_state *crtc_state;
        const struct drm_display_mode *adjusted_mode;
 
+       evade->need_vlv_dsi_wa = (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) &&
+               intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI);
+
        /*
         * During fastsets/etc. the transcoder is still
         * running with the old timings at this point.
@@ -550,8 +555,6 @@ void intel_pipe_update_start(struct intel_atomic_state *state,
        long timeout = msecs_to_jiffies_timeout(1);
        int scanline;
        wait_queue_head_t *wq = drm_crtc_vblank_waitqueue(&crtc->base);
-       bool need_vlv_dsi_wa = (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) &&
-               intel_crtc_has_type(new_crtc_state, INTEL_OUTPUT_DSI);
        struct intel_vblank_evade_ctx evade;
        DEFINE_WAIT(wait);
 
@@ -633,7 +636,7 @@ void intel_pipe_update_start(struct intel_atomic_state *state,
         *
         * FIXME figure out if BXT+ DSI suffers from this as well
         */
-       while (need_vlv_dsi_wa && scanline == evade.vblank_start)
+       while (evade.need_vlv_dsi_wa && scanline == evade.vblank_start)
                scanline = intel_get_crtc_scanline(crtc);
 
        drm_crtc_vblank_put(&crtc->base);