drm/i915: Set two chicken bits implicated in missed IRQs on Ivybridge.
authorEric Anholt <eric@anholt.net>
Wed, 21 Dec 2011 18:31:09 +0000 (10:31 -0800)
committerKeith Packard <keithp@keithp.com>
Tue, 3 Jan 2012 17:31:13 +0000 (09:31 -0800)
They don't fix our problems alone, but we're told to set them.

Signed-off-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_display.c

index eb44432..edced95 100644 (file)
 #define   ILK_DPFC_DIS1                (1<<8)
 #define   ILK_DPFC_DIS2                (1<<9)
 
+#define IVB_CHICKEN3   0x4200c
+# define CHICKEN3_DGMG_REQ_OUT_FIX_DISABLE     (1 << 5)
+# define CHICKEN3_DGMG_DONE_FIX_DISABLE                (1 << 2)
+
 #define DISP_ARB_CTL   0x45000
 #define  DISP_TILE_SURFACE_SWIZZLING   (1<<13)
 #define  DISP_FBC_WM_DIS               (1<<15)
index 30397b7..2e00c8a 100644 (file)
@@ -8450,6 +8450,10 @@ static void ivybridge_init_clock_gating(struct drm_device *dev)
 
        I915_WRITE(ILK_DSPCLK_GATE, IVB_VRHUNIT_CLK_GATE);
 
+       I915_WRITE(IVB_CHICKEN3,
+                  CHICKEN3_DGMG_REQ_OUT_FIX_DISABLE |
+                  CHICKEN3_DGMG_DONE_FIX_DISABLE);
+
        for_each_pipe(pipe) {
                I915_WRITE(DSPCNTR(pipe),
                           I915_READ(DSPCNTR(pipe)) |