aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Widawsky <benjamin.widawsky@intel.com>2013-12-12 18:28:04 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-12-13 11:55:54 -0500
commitab57fff1302c485d74992d34df24ccb5efda244e (patch)
tree52dcadb2d631f37037f01426bd08680ac11c4323
parent63801f211c6eeb6def635ceee39d165e00fd6e09 (diff)
drm/i915/bdw: Implement ff workarounds
WaVSRefCountFullforceMissDisable and WaDSRefCountFullforceMissDisable VS is a carry-over from HSW, and DS is likely not used by anyone yet. Cc: Kenneth Graunke <kenneth@whitecape.org> Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Reviewed-by: Damien Lespiau <damien.lespiau@intel.com> [danvet: Line of 106 chars is too long. Really.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h1
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c12
2 files changed, 10 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 3259e83eb2c6..f1eece4a63d5 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -1003,6 +1003,7 @@
1003 1003
1004#define GEN7_FF_THREAD_MODE 0x20a0 1004#define GEN7_FF_THREAD_MODE 0x20a0
1005#define GEN7_FF_SCHED_MASK 0x0077070 1005#define GEN7_FF_SCHED_MASK 0x0077070
1006#define GEN8_FF_DS_REF_CNT_FFME (1 << 19)
1006#define GEN7_FF_TS_SCHED_HS1 (0x5<<16) 1007#define GEN7_FF_TS_SCHED_HS1 (0x5<<16)
1007#define GEN7_FF_TS_SCHED_HS0 (0x3<<16) 1008#define GEN7_FF_TS_SCHED_HS0 (0x3<<16)
1008#define GEN7_FF_TS_SCHED_LOAD_BALANCE (0x1<<16) 1009#define GEN7_FF_TS_SCHED_LOAD_BALANCE (0x1<<16)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 791fbe386b7c..b35f65ed6c5e 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -5256,14 +5256,14 @@ static void gen8_init_clock_gating(struct drm_device *dev)
5256 I915_WRITE(GEN7_HALF_SLICE_CHICKEN1, 5256 I915_WRITE(GEN7_HALF_SLICE_CHICKEN1,
5257 _MASKED_BIT_ENABLE(GEN7_SINGLE_SUBSCAN_DISPATCH_ENABLE)); 5257 _MASKED_BIT_ENABLE(GEN7_SINGLE_SUBSCAN_DISPATCH_ENABLE));
5258 5258
5259 /* WaSwitchSolVfFArbitrationPriority */ 5259 /* WaSwitchSolVfFArbitrationPriority:bdw */
5260 I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) | HSW_ECOCHK_ARB_PRIO_SOL); 5260 I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) | HSW_ECOCHK_ARB_PRIO_SOL);
5261 5261
5262 /* WaPsrDPAMaskVBlankInSRD */ 5262 /* WaPsrDPAMaskVBlankInSRD:bdw */
5263 I915_WRITE(CHICKEN_PAR1_1, 5263 I915_WRITE(CHICKEN_PAR1_1,
5264 I915_READ(CHICKEN_PAR1_1) | DPA_MASK_VBLANK_SRD); 5264 I915_READ(CHICKEN_PAR1_1) | DPA_MASK_VBLANK_SRD);
5265 5265
5266 /* WaPsrDPRSUnmaskVBlankInSRD */ 5266 /* WaPsrDPRSUnmaskVBlankInSRD:bdw */
5267 for_each_pipe(i) { 5267 for_each_pipe(i) {
5268 I915_WRITE(CHICKEN_PIPESL_1(i), 5268 I915_WRITE(CHICKEN_PIPESL_1(i),
5269 I915_READ(CHICKEN_PIPESL_1(i) | 5269 I915_READ(CHICKEN_PIPESL_1(i) |
@@ -5277,6 +5277,12 @@ static void gen8_init_clock_gating(struct drm_device *dev)
5277 I915_WRITE(HDC_CHICKEN0, 5277 I915_WRITE(HDC_CHICKEN0,
5278 I915_READ(HDC_CHICKEN0) | 5278 I915_READ(HDC_CHICKEN0) |
5279 _MASKED_BIT_ENABLE(HDC_FORCE_NON_COHERENT)); 5279 _MASKED_BIT_ENABLE(HDC_FORCE_NON_COHERENT));
5280
5281 /* WaVSRefCountFullforceMissDisable:bdw */
5282 /* WaDSRefCountFullforceMissDisable:bdw */
5283 I915_WRITE(GEN7_FF_THREAD_MODE,
5284 I915_READ(GEN7_FF_THREAD_MODE) &
5285 ~(GEN8_FF_DS_REF_CNT_FFME | GEN7_FF_VS_REF_CNT_FFME));
5280} 5286}
5281 5287
5282static void haswell_init_clock_gating(struct drm_device *dev) 5288static void haswell_init_clock_gating(struct drm_device *dev)