| From 6ba819b40f7d1e34a19093a03a29c5822a2fb25d Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com> |
| Date: Wed, 9 Oct 2013 19:17:57 +0300 |
| Subject: drm/i915: Move LP1+ watermark merging out from |
| hsw_compute_wm_results() |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| I want to convert hsw_find_best_result() to use intel_pipe_wm, so we |
| need to move the merging to happen outside hsw_compute_wm_results(). |
| |
| Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> |
| Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| (cherry picked from commit 0362c7816c8ad5d838ecd93f5526c1c725a1a8fd) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/intel_pm.c | 19 ++++++++++--------- |
| 1 file changed, 10 insertions(+), 9 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c |
| index 3699f1d574c5..71524ae0f07a 100644 |
| --- a/drivers/gpu/drm/i915/intel_pm.c |
| +++ b/drivers/gpu/drm/i915/intel_pm.c |
| @@ -2716,26 +2716,23 @@ static void ilk_wm_merge(struct drm_device *dev, |
| } |
| |
| static void hsw_compute_wm_results(struct drm_device *dev, |
| - const struct hsw_wm_maximums *lp_maximums, |
| + const struct intel_pipe_wm *merged, |
| struct hsw_wm_values *results) |
| { |
| struct intel_crtc *intel_crtc; |
| int level, wm_lp; |
| - struct intel_pipe_wm merged = {}; |
| - |
| - ilk_wm_merge(dev, lp_maximums, &merged); |
| |
| memset(results, 0, sizeof(*results)); |
| |
| - results->enable_fbc_wm = merged.fbc_wm_enabled; |
| + results->enable_fbc_wm = merged->fbc_wm_enabled; |
| |
| /* LP1+ register values */ |
| for (wm_lp = 1; wm_lp <= 3; wm_lp++) { |
| const struct intel_wm_level *r; |
| |
| - level = wm_lp + (wm_lp >= 2 && merged.wm[4].enable); |
| + level = wm_lp + (wm_lp >= 2 && merged->wm[4].enable); |
| |
| - r = &merged.wm[level]; |
| + r = &merged->wm[level]; |
| if (!r->enable) |
| break; |
| |
| @@ -2897,6 +2894,7 @@ static void haswell_update_wm(struct drm_crtc *crtc) |
| struct hsw_wm_values results_1_2, results_5_6, *best_results; |
| enum intel_ddb_partitioning partitioning; |
| struct intel_pipe_wm pipe_wm = {}; |
| + struct intel_pipe_wm lp_wm_1_2 = {}, lp_wm_5_6 = {}; |
| |
| hsw_compute_wm_parameters(crtc, ¶ms, &lp_max_1_2, &lp_max_5_6); |
| |
| @@ -2907,9 +2905,12 @@ static void haswell_update_wm(struct drm_crtc *crtc) |
| |
| intel_crtc->wm.active = pipe_wm; |
| |
| - hsw_compute_wm_results(dev, &lp_max_1_2, &results_1_2); |
| + ilk_wm_merge(dev, &lp_max_1_2, &lp_wm_1_2); |
| + ilk_wm_merge(dev, &lp_max_5_6, &lp_wm_5_6); |
| + |
| + hsw_compute_wm_results(dev, &lp_wm_1_2, &results_1_2); |
| if (lp_max_1_2.pri != lp_max_5_6.pri) { |
| - hsw_compute_wm_results(dev, &lp_max_5_6, &results_5_6); |
| + hsw_compute_wm_results(dev, &lp_wm_5_6, &results_5_6); |
| best_results = hsw_find_best_result(&results_1_2, &results_5_6); |
| } else { |
| best_results = &results_1_2; |
| -- |
| 1.8.5.rc3 |
| |