diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index a5503cd7a1c85..9f33e37f8a2db 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -2705,6 +2705,12 @@ static void ilk_wm_merge(struct drm_device *dev, } } +static int ilk_wm_lp_to_level(int wm_lp, const struct intel_pipe_wm *pipe_wm) +{ + /* LP1,LP2,LP3 levels are either 1,2,3 or 1,3,4 */ + return wm_lp + (wm_lp >= 2 && pipe_wm->wm[4].enable); +} + static void hsw_compute_wm_results(struct drm_device *dev, const struct intel_pipe_wm *merged, struct hsw_wm_values *results) @@ -2718,7 +2724,7 @@ static void hsw_compute_wm_results(struct drm_device *dev, 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 = ilk_wm_lp_to_level(wm_lp, merged); r = &merged->wm[level]; if (!r->enable)