From 8de123a5d89f8eaf934737758251fb18b2660231 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ville=20Syrj=C3=A4l=C3=A4?= Date: Fri, 30 Aug 2013 14:30:24 +0300 Subject: [PATCH] drm/i915: Use ilk_compute_wm_level to compute WM_PIPE values MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Unify the code a bit to use ilk_compute_wm_level for all watermark levels. Signed-off-by: Ville Syrjälä Reviewed-by: Paulo Zanoni Signed-off-by: Daniel Vetter --- drivers/gpu/drm/i915/intel_pm.c | 44 ++++++++++++++++----------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 3dd2fd859fb0..865d524f1e85 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -2463,33 +2463,31 @@ static bool hsw_compute_lp_wm(struct drm_i915_private *dev_priv, return ilk_check_wm(level, max, result); } -static uint32_t hsw_compute_wm_pipe(struct drm_i915_private *dev_priv, - enum pipe pipe, + +static uint32_t hsw_compute_wm_pipe(struct drm_device *dev, const struct hsw_pipe_wm_parameters *params) { - uint32_t pri_val, cur_val, spr_val; - /* WM0 latency values stored in 0.1us units */ - uint16_t pri_latency = dev_priv->wm.pri_latency[0]; - uint16_t spr_latency = dev_priv->wm.spr_latency[0]; - uint16_t cur_latency = dev_priv->wm.cur_latency[0]; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_wm_config config = { + .num_pipes_active = 1, + .sprites_enabled = params->spr.enabled, + .sprites_scaled = params->spr.scaled, + }; + struct hsw_wm_maximums max; + struct intel_wm_level res; + + if (!params->active) + return 0; + + ilk_wm_max(dev, 0, &config, INTEL_DDB_PART_1_2, &max); - pri_val = ilk_compute_pri_wm(params, pri_latency, false); - spr_val = ilk_compute_spr_wm(params, spr_latency); - cur_val = ilk_compute_cur_wm(params, cur_latency); + ilk_compute_wm_level(dev_priv, 0, params, &res); - WARN(pri_val > 127, - "Primary WM error, mode not supported for pipe %c\n", - pipe_name(pipe)); - WARN(spr_val > 127, - "Sprite WM error, mode not supported for pipe %c\n", - pipe_name(pipe)); - WARN(cur_val > 63, - "Cursor WM error, mode not supported for pipe %c\n", - pipe_name(pipe)); + ilk_check_wm(0, &max, &res); - return (pri_val << WM0_PIPE_PLANE_SHIFT) | - (spr_val << WM0_PIPE_SPRITE_SHIFT) | - cur_val; + return (res.pri_val << WM0_PIPE_PLANE_SHIFT) | + (res.spr_val << WM0_PIPE_SPRITE_SHIFT) | + res.cur_val; } static uint32_t @@ -2718,7 +2716,7 @@ static void hsw_compute_wm_results(struct drm_device *dev, } for_each_pipe(pipe) - results->wm_pipe[pipe] = hsw_compute_wm_pipe(dev_priv, pipe, + results->wm_pipe[pipe] = hsw_compute_wm_pipe(dev, ¶ms[pipe]); for_each_pipe(pipe) { -- 2.39.5