aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2012-12-14 17:38:29 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-12-17 11:22:25 -0500
commit6547fbdbfff62c99e4f7b4f985ff8b3454f33b0f (patch)
tree4a0897646ca0f0675b804611f38f9a81dfc4cc92 /drivers/gpu
parent4283908ef7f11a72c3b80dd4cf026f1a86429f82 (diff)
drm/i915: Implement WaSetupGtModeTdRowDispatch
I'm not really sure, since the w/a entry is as thin on details as ever, and Bspec doesn't say anything about it. But I've figured only dispatching to rows 0&1 instead of all four should be the right thing for GT1. Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com> [danvet: Add the missing snb server GT1 to the check, spotted by Chris Wilson.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h3
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h3
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c5
3 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 557843dd4b2..062a60b381b 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1166,6 +1166,9 @@ struct drm_i915_file_private {
1166#define IS_IVB_GT1(dev) ((dev)->pci_device == 0x0156 || \ 1166#define IS_IVB_GT1(dev) ((dev)->pci_device == 0x0156 || \
1167 (dev)->pci_device == 0x0152 || \ 1167 (dev)->pci_device == 0x0152 || \
1168 (dev)->pci_device == 0x015a) 1168 (dev)->pci_device == 0x015a)
1169#define IS_SNB_GT1(dev) ((dev)->pci_device == 0x0102 || \
1170 (dev)->pci_device == 0x0106 || \
1171 (dev)->pci_device == 0x010A)
1169#define IS_VALLEYVIEW(dev) (INTEL_INFO(dev)->is_valleyview) 1172#define IS_VALLEYVIEW(dev) (INTEL_INFO(dev)->is_valleyview)
1170#define IS_HASWELL(dev) (INTEL_INFO(dev)->is_haswell) 1173#define IS_HASWELL(dev) (INTEL_INFO(dev)->is_haswell)
1171#define IS_MOBILE(dev) (INTEL_INFO(dev)->is_mobile) 1174#define IS_MOBILE(dev) (INTEL_INFO(dev)->is_mobile)
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index e0019378f8b..186ee5c85b5 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -533,7 +533,8 @@
533# define MI_FLUSH_ENABLE (1 << 12) 533# define MI_FLUSH_ENABLE (1 << 12)
534 534
535#define GEN6_GT_MODE 0x20d0 535#define GEN6_GT_MODE 0x20d0
536#define GEN6_GT_MODE_HI (1 << 9) 536#define GEN6_GT_MODE_HI (1 << 9)
537#define GEN6_TD_FOUR_ROW_DISPATCH_DISABLE (1 << 5)
537 538
538#define GFX_MODE 0x02520 539#define GFX_MODE 0x02520
539#define GFX_MODE_GEN7 0x0229c 540#define GFX_MODE_GEN7 0x0229c
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 3b85660ce4e..55f7a896a12 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -3596,6 +3596,11 @@ static void gen6_init_clock_gating(struct drm_device *dev)
3596 I915_WRITE(_3D_CHICKEN, 3596 I915_WRITE(_3D_CHICKEN,
3597 _MASKED_BIT_ENABLE(_3D_CHICKEN_HIZ_PLANE_DISABLE_MSAA_4X_SNB)); 3597 _MASKED_BIT_ENABLE(_3D_CHICKEN_HIZ_PLANE_DISABLE_MSAA_4X_SNB));
3598 3598
3599 /* WaSetupGtModeTdRowDispatch */
3600 if (IS_SNB_GT1(dev))
3601 I915_WRITE(GEN6_GT_MODE,
3602 _MASKED_BIT_ENABLE(GEN6_TD_FOUR_ROW_DISPATCH_DISABLE));
3603
3599 I915_WRITE(WM3_LP_ILK, 0); 3604 I915_WRITE(WM3_LP_ILK, 0);
3600 I915_WRITE(WM2_LP_ILK, 0); 3605 I915_WRITE(WM2_LP_ILK, 0);
3601 I915_WRITE(WM1_LP_ILK, 0); 3606 I915_WRITE(WM1_LP_ILK, 0);