drm/i915: Pass crtc state to vlv_compute_wm_level()
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 28 Nov 2016 17:37:17 +0000 (19:37 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 5 Dec 2016 14:23:28 +0000 (16:23 +0200)
Rather than accessing crtc->config in vlv_compute_wm_level() let's
pass in the crtc state explicitly. One step closer to atomic.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1480354637-14209-16-git-send-email-ville.syrjala@linux.intel.com
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
drivers/gpu/drm/i915/intel_pm.c

index 46ac7f5..d414c87 100644 (file)
@@ -978,24 +978,26 @@ static void vlv_setup_wm_latency(struct drm_i915_private *dev_priv)
        }
 }
 
-static uint16_t vlv_compute_wm_level(struct intel_plane *plane,
-                                    struct intel_crtc *crtc,
-                                    const struct intel_plane_state *state,
+static uint16_t vlv_compute_wm_level(const struct intel_crtc_state *crtc_state,
+                                    const struct intel_plane_state *plane_state,
                                     int level)
 {
+       struct intel_plane *plane = to_intel_plane(plane_state->base.plane);
        struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
+       const struct drm_display_mode *adjusted_mode =
+               &crtc_state->base.adjusted_mode;
        int clock, htotal, cpp, width, wm;
 
        if (dev_priv->wm.pri_latency[level] == 0)
                return USHRT_MAX;
 
-       if (!state->base.visible)
+       if (!plane_state->base.visible)
                return 0;
 
-       cpp = drm_format_plane_cpp(state->base.fb->pixel_format, 0);
-       clock = crtc->config->base.adjusted_mode.crtc_clock;
-       htotal = crtc->config->base.adjusted_mode.crtc_htotal;
-       width = crtc->config->pipe_src_w;
+       cpp = drm_format_plane_cpp(plane_state->base.fb->pixel_format, 0);
+       clock = adjusted_mode->crtc_clock;
+       htotal = adjusted_mode->crtc_htotal;
+       width = crtc_state->pipe_src_w;
        if (WARN_ON(htotal == 0))
                htotal = 1;
 
@@ -1145,7 +1147,7 @@ static void vlv_compute_wm(struct intel_crtc *crtc)
 
                /* normal watermarks */
                for (level = 0; level < wm_state->num_levels; level++) {
-                       int wm = vlv_compute_wm_level(plane, crtc, state, level);
+                       int wm = vlv_compute_wm_level(crtc->config, state, level);
                        int max_wm = plane->wm.fifo_size;
 
                        /* hack */