aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArun Siluvery <arun.siluvery@linux.intel.com>2015-09-25 12:40:37 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-09-30 04:20:27 -0400
commite9a64adaec93ce5dfcdee44bbd89c90b4d997f6f (patch)
treebd07eb8bb2df217d0dee581a0309acb61f49208e
parent010e9f5fad88bce83dc21a864540fcbf6d17e9b3 (diff)
drm/i915/gen8: Add gen8_init_workarounds for common WA
WA in this function should be ordered based on register address. The following order is suggested (Ville), instpm mi_mode row chicken half slice chicken common slice chicken hdc chicken cache_mode_0 cache_mode_1 gt_mode Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Arun Siluvery <arun.siluvery@linux.intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index a0b2219baf77..2c4f097acd0e 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -800,11 +800,22 @@ static int wa_add(struct drm_i915_private *dev_priv,
800 800
801#define WA_WRITE(addr, val) WA_REG(addr, 0xffffffff, val) 801#define WA_WRITE(addr, val) WA_REG(addr, 0xffffffff, val)
802 802
803static int gen8_init_workarounds(struct intel_engine_cs *ring)
804{
805
806 return 0;
807}
808
803static int bdw_init_workarounds(struct intel_engine_cs *ring) 809static int bdw_init_workarounds(struct intel_engine_cs *ring)
804{ 810{
811 int ret;
805 struct drm_device *dev = ring->dev; 812 struct drm_device *dev = ring->dev;
806 struct drm_i915_private *dev_priv = dev->dev_private; 813 struct drm_i915_private *dev_priv = dev->dev_private;
807 814
815 ret = gen8_init_workarounds(ring);
816 if (ret)
817 return ret;
818
808 WA_SET_BIT_MASKED(INSTPM, INSTPM_FORCE_ORDERING); 819 WA_SET_BIT_MASKED(INSTPM, INSTPM_FORCE_ORDERING);
809 820
810 /* WaDisableAsyncFlipPerfMode:bdw */ 821 /* WaDisableAsyncFlipPerfMode:bdw */
@@ -868,9 +879,14 @@ static int bdw_init_workarounds(struct intel_engine_cs *ring)
868 879
869static int chv_init_workarounds(struct intel_engine_cs *ring) 880static int chv_init_workarounds(struct intel_engine_cs *ring)
870{ 881{
882 int ret;
871 struct drm_device *dev = ring->dev; 883 struct drm_device *dev = ring->dev;
872 struct drm_i915_private *dev_priv = dev->dev_private; 884 struct drm_i915_private *dev_priv = dev->dev_private;
873 885
886 ret = gen8_init_workarounds(ring);
887 if (ret)
888 return ret;
889
874 WA_SET_BIT_MASKED(INSTPM, INSTPM_FORCE_ORDERING); 890 WA_SET_BIT_MASKED(INSTPM, INSTPM_FORCE_ORDERING);
875 891
876 /* WaDisableAsyncFlipPerfMode:chv */ 892 /* WaDisableAsyncFlipPerfMode:chv */