diff options
author | Arun Siluvery <arun.siluvery@linux.intel.com> | 2015-09-25 12:40:37 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-09-30 04:20:27 -0400 |
commit | e9a64adaec93ce5dfcdee44bbd89c90b4d997f6f (patch) | |
tree | bd07eb8bb2df217d0dee581a0309acb61f49208e /drivers/gpu/drm/i915/intel_ringbuffer.c | |
parent | 010e9f5fad88bce83dc21a864540fcbf6d17e9b3 (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>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 16 |
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 | ||
803 | static int gen8_init_workarounds(struct intel_engine_cs *ring) | ||
804 | { | ||
805 | |||
806 | return 0; | ||
807 | } | ||
808 | |||
803 | static int bdw_init_workarounds(struct intel_engine_cs *ring) | 809 | static 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 | ||
869 | static int chv_init_workarounds(struct intel_engine_cs *ring) | 880 | static 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 */ |