drm/i915: don't enable self-refresh on Ironlake

We don't know how to enable it safely, especially as outputs turn on and
off. When disabling LP1 we also need to make sure LP2 and 3 are already
disabled.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29173
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29082
Reported-by: Chris Lord <chris@linux.intel.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Tested-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: stable@kernel.org
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

authored by Jesse Barnes and committed by Chris Wilson dd8849c8 7839d956

+12 -2
+8
drivers/gpu/drm/i915/i915_reg.h
··· 2206 2206 #define WM1_LP_SR_EN (1<<31) 2207 2207 #define WM1_LP_LATENCY_SHIFT 24 2208 2208 #define WM1_LP_LATENCY_MASK (0x7f<<24) 2209 + #define WM1_LP_FBC_LP1_MASK (0xf<<20) 2210 + #define WM1_LP_FBC_LP1_SHIFT 20 2209 2211 #define WM1_LP_SR_MASK (0x1ff<<8) 2210 2212 #define WM1_LP_SR_SHIFT 8 2211 2213 #define WM1_LP_CURSOR_MASK (0x3f) 2214 + #define WM2_LP_ILK 0x4510c 2215 + #define WM2_LP_EN (1<<31) 2216 + #define WM3_LP_ILK 0x45110 2217 + #define WM3_LP_EN (1<<31) 2218 + #define WM1S_LP_ILK 0x45120 2219 + #define WM1S_LP_EN (1<<31) 2212 2220 2213 2221 /* Memory latency timer register */ 2214 2222 #define MLTR_ILK 0x11222
+4 -2
drivers/gpu/drm/i915/intel_display.c
··· 3382 3382 reg_value = I915_READ(WM1_LP_ILK); 3383 3383 reg_value &= ~(WM1_LP_LATENCY_MASK | WM1_LP_SR_MASK | 3384 3384 WM1_LP_CURSOR_MASK); 3385 - reg_value |= WM1_LP_SR_EN | 3386 - (ilk_sr_latency << WM1_LP_LATENCY_SHIFT) | 3385 + reg_value |= (ilk_sr_latency << WM1_LP_LATENCY_SHIFT) | 3387 3386 (sr_wm << WM1_LP_SR_SHIFT) | cursor_wm; 3388 3387 3389 3388 I915_WRITE(WM1_LP_ILK, reg_value); ··· 5668 5669 I915_WRITE(DISP_ARB_CTL, 5669 5670 (I915_READ(DISP_ARB_CTL) | 5670 5671 DISP_FBC_WM_DIS)); 5672 + I915_WRITE(WM3_LP_ILK, 0); 5673 + I915_WRITE(WM2_LP_ILK, 0); 5674 + I915_WRITE(WM1_LP_ILK, 0); 5671 5675 } 5672 5676 /* 5673 5677 * Based on the document from hardware guys the following bits