Эх сурвалжийг харах

drm/i915: set more FBC chicken bits

Add a couple of missing workaround bits for ILK & SNB.  These disable
clock gating on a couple of units that would otherwise prevent FBC from
working.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Jesse Barnes 14 жил өмнө
parent
commit
1ffa325bac

+ 2 - 0
drivers/gpu/drm/i915/i915_reg.h

@@ -2626,6 +2626,8 @@
 #define DISPLAY_PORT_PLL_BIOS_2         0x46014
 #define DISPLAY_PORT_PLL_BIOS_2         0x46014
 
 
 #define PCH_DSPCLK_GATE_D	0x42020
 #define PCH_DSPCLK_GATE_D	0x42020
+# define DPFCUNIT_CLOCK_GATE_DISABLE		(1 << 9)
+# define DPFCRUNIT_CLOCK_GATE_DISABLE		(1 << 8)
 # define DPFDUNIT_CLOCK_GATE_DISABLE		(1 << 7)
 # define DPFDUNIT_CLOCK_GATE_DISABLE		(1 << 7)
 # define DPARBUNIT_CLOCK_GATE_DISABLE		(1 << 5)
 # define DPARBUNIT_CLOCK_GATE_DISABLE		(1 << 5)
 
 

+ 3 - 1
drivers/gpu/drm/i915/intel_display.c

@@ -6286,7 +6286,9 @@ void intel_enable_clock_gating(struct drm_device *dev)
 
 
 		if (IS_GEN5(dev)) {
 		if (IS_GEN5(dev)) {
 			/* Required for FBC */
 			/* Required for FBC */
-			dspclk_gate |= DPFDUNIT_CLOCK_GATE_DISABLE;
+			dspclk_gate |= DPFCUNIT_CLOCK_GATE_DISABLE |
+				DPFCRUNIT_CLOCK_GATE_DISABLE |
+				DPFDUNIT_CLOCK_GATE_DISABLE;
 			/* Required for CxSR */
 			/* Required for CxSR */
 			dspclk_gate |= DPARBUNIT_CLOCK_GATE_DISABLE;
 			dspclk_gate |= DPARBUNIT_CLOCK_GATE_DISABLE;