]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/i915/intel_pm.c
Merge tag 'drm-misc-next-2016-12-30' of git://anongit.freedesktop.org/git/drm-misc...
[karo-tx-linux.git] / drivers / gpu / drm / i915 / intel_pm.c
index ae2c0bb4b2e8b384c6fc8858490143064ec4dec3..9f3b78dfa9973ab4bddc9eac66c27dfdcb5beb30 100644 (file)
@@ -652,7 +652,7 @@ static void pineview_update_wm(struct intel_crtc *unused_crtc)
                        &crtc->config->base.adjusted_mode;
                const struct drm_framebuffer *fb =
                        crtc->base.primary->state->fb;
-               int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+               int cpp = fb->format->cpp[0];
                int clock = adjusted_mode->crtc_clock;
 
                /* Display SR */
@@ -727,7 +727,7 @@ static bool g4x_compute_wm0(struct drm_i915_private *dev_priv,
        clock = adjusted_mode->crtc_clock;
        htotal = adjusted_mode->crtc_htotal;
        hdisplay = crtc->config->pipe_src_w;
-       cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+       cpp = fb->format->cpp[0];
 
        /* Use the small buffer method to calculate plane watermark */
        entries = ((clock * cpp / 1000) * display_latency_ns) / 1000;
@@ -816,7 +816,7 @@ static bool g4x_compute_srwm(struct drm_i915_private *dev_priv,
        clock = adjusted_mode->crtc_clock;
        htotal = adjusted_mode->crtc_htotal;
        hdisplay = crtc->config->pipe_src_w;
-       cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+       cpp = fb->format->cpp[0];
 
        line_time_us = max(htotal * 1000 / clock, 1);
        line_count = (latency_ns / line_time_us + 1000) / 1000;
@@ -963,7 +963,7 @@ static uint16_t vlv_compute_wm_level(struct intel_plane *plane,
        if (!state->base.visible)
                return 0;
 
-       cpp = drm_format_plane_cpp(state->base.fb->pixel_format, 0);
+       cpp = state->base.fb->format->cpp[0];
        clock = crtc->config->base.adjusted_mode.crtc_clock;
        htotal = crtc->config->base.adjusted_mode.crtc_htotal;
        width = crtc->config->pipe_src_w;
@@ -1004,7 +1004,7 @@ static void vlv_compute_fifo(struct intel_crtc *crtc)
 
                if (state->base.visible) {
                        wm_state->num_active_planes++;
-                       total_rate += drm_format_plane_cpp(state->base.fb->pixel_format, 0);
+                       total_rate += state->base.fb->format->cpp[0];
                }
        }
 
@@ -1023,7 +1023,7 @@ static void vlv_compute_fifo(struct intel_crtc *crtc)
                        continue;
                }
 
-               rate = drm_format_plane_cpp(state->base.fb->pixel_format, 0);
+               rate = state->base.fb->format->cpp[0];
                plane->wm.fifo_size = fifo_size * rate / total_rate;
                fifo_left -= plane->wm.fifo_size;
        }
@@ -1455,7 +1455,7 @@ static void i965_update_wm(struct intel_crtc *unused_crtc)
                int clock = adjusted_mode->crtc_clock;
                int htotal = adjusted_mode->crtc_htotal;
                int hdisplay = crtc->config->pipe_src_w;
-               int cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+               int cpp = fb->format->cpp[0];
                unsigned long line_time_us;
                int entries;
 
@@ -1541,7 +1541,7 @@ static void i9xx_update_wm(struct intel_crtc *unused_crtc)
                if (IS_GEN2(dev_priv))
                        cpp = 4;
                else
-                       cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+                       cpp = fb->format->cpp[0];
 
                planea_wm = intel_calculate_wm(adjusted_mode->crtc_clock,
                                               wm_info, fifo_size, cpp,
@@ -1568,7 +1568,7 @@ static void i9xx_update_wm(struct intel_crtc *unused_crtc)
                if (IS_GEN2(dev_priv))
                        cpp = 4;
                else
-                       cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+                       cpp = fb->format->cpp[0];
 
                planeb_wm = intel_calculate_wm(adjusted_mode->crtc_clock,
                                               wm_info, fifo_size, cpp,
@@ -1621,7 +1621,7 @@ static void i9xx_update_wm(struct intel_crtc *unused_crtc)
                if (IS_I915GM(dev_priv) || IS_I945GM(dev_priv))
                        cpp = 4;
                else
-                       cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+                       cpp = fb->format->cpp[0];
 
                line_time_us = max(htotal * 1000 / clock, 1);
 
@@ -1781,13 +1781,14 @@ static uint32_t ilk_compute_pri_wm(const struct intel_crtc_state *cstate,
                                   uint32_t mem_value,
                                   bool is_lp)
 {
-       int cpp = pstate->base.fb ?
-               drm_format_plane_cpp(pstate->base.fb->pixel_format, 0) : 0;
        uint32_t method1, method2;
+       int cpp;
 
        if (!cstate->base.active || !pstate->base.visible)
                return 0;
 
+       cpp = pstate->base.fb->format->cpp[0];
+
        method1 = ilk_wm_method1(ilk_pipe_pixel_rate(cstate), cpp, mem_value);
 
        if (!is_lp)
@@ -1809,13 +1810,14 @@ static uint32_t ilk_compute_spr_wm(const struct intel_crtc_state *cstate,
                                   const struct intel_plane_state *pstate,
                                   uint32_t mem_value)
 {
-       int cpp = pstate->base.fb ?
-               drm_format_plane_cpp(pstate->base.fb->pixel_format, 0) : 0;
        uint32_t method1, method2;
+       int cpp;
 
        if (!cstate->base.active || !pstate->base.visible)
                return 0;
 
+       cpp = pstate->base.fb->format->cpp[0];
+
        method1 = ilk_wm_method1(ilk_pipe_pixel_rate(cstate), cpp, mem_value);
        method2 = ilk_wm_method2(ilk_pipe_pixel_rate(cstate),
                                 cstate->base.adjusted_mode.crtc_htotal,
@@ -1853,12 +1855,13 @@ static uint32_t ilk_compute_fbc_wm(const struct intel_crtc_state *cstate,
                                   const struct intel_plane_state *pstate,
                                   uint32_t pri_val)
 {
-       int cpp = pstate->base.fb ?
-               drm_format_plane_cpp(pstate->base.fb->pixel_format, 0) : 0;
+       int cpp;
 
        if (!cstate->base.active || !pstate->base.visible)
                return 0;
 
+       cpp = pstate->base.fb->format->cpp[0];
+
        return ilk_wm_fbc(pri_val, drm_rect_width(&pstate->base.dst), cpp);
 }
 
@@ -3213,13 +3216,17 @@ skl_plane_relative_data_rate(const struct intel_crtc_state *cstate,
                             int y)
 {
        struct intel_plane_state *intel_pstate = to_intel_plane_state(pstate);
-       struct drm_framebuffer *fb = pstate->fb;
        uint32_t down_scale_amount, data_rate;
        uint32_t width = 0, height = 0;
-       unsigned format = fb ? fb->pixel_format : DRM_FORMAT_XRGB8888;
+       struct drm_framebuffer *fb;
+       u32 format;
 
        if (!intel_pstate->base.visible)
                return 0;
+
+       fb = pstate->fb;
+       format = fb->format->format;
+
        if (pstate->plane->type == DRM_PLANE_TYPE_CURSOR)
                return 0;
        if (y && format != DRM_FORMAT_NV12)
@@ -3235,13 +3242,13 @@ skl_plane_relative_data_rate(const struct intel_crtc_state *cstate,
        if (format == DRM_FORMAT_NV12) {
                if (y)  /* y-plane data rate */
                        data_rate = width * height *
-                               drm_format_plane_cpp(format, 0);
+                               fb->format->cpp[0];
                else    /* uv-plane data rate */
                        data_rate = (width / 2) * (height / 2) *
-                               drm_format_plane_cpp(format, 1);
+                               fb->format->cpp[1];
        } else {
                /* for packed formats */
-               data_rate = width * height * drm_format_plane_cpp(format, 0);
+               data_rate = width * height * fb->format->cpp[0];
        }
 
        down_scale_amount = skl_plane_downscale_amount(intel_pstate);
@@ -3307,7 +3314,7 @@ skl_ddb_min_alloc(const struct drm_plane_state *pstate,
                return 0;
 
        /* For packed formats, no y-plane, return 0 */
-       if (y && fb->pixel_format != DRM_FORMAT_NV12)
+       if (y && fb->format->format != DRM_FORMAT_NV12)
                return 0;
 
        /* For Non Y-tile return 8-blocks */
@@ -3322,15 +3329,15 @@ skl_ddb_min_alloc(const struct drm_plane_state *pstate,
                swap(src_w, src_h);
 
        /* Halve UV plane width and height for NV12 */
-       if (fb->pixel_format == DRM_FORMAT_NV12 && !y) {
+       if (fb->format->format == DRM_FORMAT_NV12 && !y) {
                src_w /= 2;
                src_h /= 2;
        }
 
-       if (fb->pixel_format == DRM_FORMAT_NV12 && !y)
-               plane_bpp = drm_format_plane_cpp(fb->pixel_format, 1);
+       if (fb->format->format == DRM_FORMAT_NV12 && !y)
+               plane_bpp = fb->format->cpp[1];
        else
-               plane_bpp = drm_format_plane_cpp(fb->pixel_format, 0);
+               plane_bpp = fb->format->cpp[0];
 
        if (drm_rotation_90_or_270(pstate->rotation)) {
                switch (plane_bpp) {
@@ -3590,13 +3597,13 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
        if (drm_rotation_90_or_270(pstate->rotation))
                swap(width, height);
 
-       cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+       cpp = fb->format->cpp[0];
        plane_pixel_rate = skl_adjusted_plane_pixel_rate(cstate, intel_pstate);
 
        if (drm_rotation_90_or_270(pstate->rotation)) {
-               int cpp = (fb->pixel_format == DRM_FORMAT_NV12) ?
-                       drm_format_plane_cpp(fb->pixel_format, 1) :
-                       drm_format_plane_cpp(fb->pixel_format, 0);
+               int cpp = (fb->format->format == DRM_FORMAT_NV12) ?
+                       fb->format->cpp[1] :
+                       fb->format->cpp[0];
 
                switch (cpp) {
                case 1: