aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h17
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c6
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c8
3 files changed, 23 insertions, 8 deletions
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 544675895c8d..b607bbe55261 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -32,8 +32,19 @@
32#define _PIPE3(pipe, a, b, c) ((pipe) == PIPE_A ? (a) : \ 32#define _PIPE3(pipe, a, b, c) ((pipe) == PIPE_A ? (a) : \
33 (pipe) == PIPE_B ? (b) : (c)) 33 (pipe) == PIPE_B ? (b) : (c))
34 34
35#define _MASKED_BIT_ENABLE(a) (((a) << 16) | (a)) 35#define _MASKED_FIELD(mask, value) ({ \
36#define _MASKED_BIT_DISABLE(a) ((a) << 16) 36 if (__builtin_constant_p(mask)) \
37 BUILD_BUG_ON_MSG(((mask) & 0xffff0000), "Incorrect mask"); \
38 if (__builtin_constant_p(value)) \
39 BUILD_BUG_ON_MSG((value) & 0xffff0000, "Incorrect value"); \
40 if (__builtin_constant_p(mask) && __builtin_constant_p(value)) \
41 BUILD_BUG_ON_MSG((value) & ~(mask), \
42 "Incorrect value for mask"); \
43 (mask) << 16 | (value); })
44#define _MASKED_BIT_ENABLE(a) ({ typeof(a) _a = (a); _MASKED_FIELD(_a, _a); })
45#define _MASKED_BIT_DISABLE(a) (_MASKED_FIELD((a), 0))
46
47
37 48
38/* PCI config space */ 49/* PCI config space */
39 50
@@ -1282,7 +1293,7 @@ enum punit_power_well {
1282#define GEN6_WIZ_HASHING_8x8 GEN6_WIZ_HASHING(0, 0) 1293#define GEN6_WIZ_HASHING_8x8 GEN6_WIZ_HASHING(0, 0)
1283#define GEN6_WIZ_HASHING_8x4 GEN6_WIZ_HASHING(0, 1) 1294#define GEN6_WIZ_HASHING_8x4 GEN6_WIZ_HASHING(0, 1)
1284#define GEN6_WIZ_HASHING_16x4 GEN6_WIZ_HASHING(1, 0) 1295#define GEN6_WIZ_HASHING_16x4 GEN6_WIZ_HASHING(1, 0)
1285#define GEN6_WIZ_HASHING_MASK (GEN6_WIZ_HASHING(1, 1) << 16) 1296#define GEN6_WIZ_HASHING_MASK GEN6_WIZ_HASHING(1, 1)
1286#define GEN6_TD_FOUR_ROW_DISPATCH_DISABLE (1 << 5) 1297#define GEN6_TD_FOUR_ROW_DISPATCH_DISABLE (1 << 5)
1287 1298
1288#define GFX_MODE 0x02520 1299#define GFX_MODE 0x02520
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 9af0af49382e..1f4b56e273c8 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -6508,7 +6508,7 @@ static void gen6_init_clock_gating(struct drm_device *dev)
6508 * to keep in mind (see 3DSTATE_PS and 3DSTATE_WM). 6508 * to keep in mind (see 3DSTATE_PS and 3DSTATE_WM).
6509 */ 6509 */
6510 I915_WRITE(GEN6_GT_MODE, 6510 I915_WRITE(GEN6_GT_MODE,
6511 GEN6_WIZ_HASHING_MASK | GEN6_WIZ_HASHING_16x4); 6511 _MASKED_FIELD(GEN6_WIZ_HASHING_MASK, GEN6_WIZ_HASHING_16x4));
6512 6512
6513 ilk_init_lp_watermarks(dev); 6513 ilk_init_lp_watermarks(dev);
6514 6514
@@ -6706,7 +6706,7 @@ static void haswell_init_clock_gating(struct drm_device *dev)
6706 * to keep in mind (see 3DSTATE_PS and 3DSTATE_WM). 6706 * to keep in mind (see 3DSTATE_PS and 3DSTATE_WM).
6707 */ 6707 */
6708 I915_WRITE(GEN7_GT_MODE, 6708 I915_WRITE(GEN7_GT_MODE,
6709 GEN6_WIZ_HASHING_MASK | GEN6_WIZ_HASHING_16x4); 6709 _MASKED_FIELD(GEN6_WIZ_HASHING_MASK, GEN6_WIZ_HASHING_16x4));
6710 6710
6711 /* WaSwitchSolVfFArbitrationPriority:hsw */ 6711 /* WaSwitchSolVfFArbitrationPriority:hsw */
6712 I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) | HSW_ECOCHK_ARB_PRIO_SOL); 6712 I915_WRITE(GAM_ECOCHK, I915_READ(GAM_ECOCHK) | HSW_ECOCHK_ARB_PRIO_SOL);
@@ -6803,7 +6803,7 @@ static void ivybridge_init_clock_gating(struct drm_device *dev)
6803 * to keep in mind (see 3DSTATE_PS and 3DSTATE_WM). 6803 * to keep in mind (see 3DSTATE_PS and 3DSTATE_WM).
6804 */ 6804 */
6805 I915_WRITE(GEN7_GT_MODE, 6805 I915_WRITE(GEN7_GT_MODE,
6806 GEN6_WIZ_HASHING_MASK | GEN6_WIZ_HASHING_16x4); 6806 _MASKED_FIELD(GEN6_WIZ_HASHING_MASK, GEN6_WIZ_HASHING_16x4));
6807 6807
6808 snpcr = I915_READ(GEN6_MBCUNIT_SNPCR); 6808 snpcr = I915_READ(GEN6_MBCUNIT_SNPCR);
6809 snpcr &= ~GEN6_MBC_SNPCR_MASK; 6809 snpcr &= ~GEN6_MBC_SNPCR_MASK;
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 1d01b51ff058..28db934b2359 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -729,6 +729,9 @@ static int wa_add(struct drm_i915_private *dev_priv,
729#define WA_CLR_BIT_MASKED(addr, mask) \ 729#define WA_CLR_BIT_MASKED(addr, mask) \
730 WA_REG(addr, _MASKED_BIT_DISABLE(mask), (mask) & 0xffff) 730 WA_REG(addr, _MASKED_BIT_DISABLE(mask), (mask) & 0xffff)
731 731
732#define WA_SET_FIELD_MASKED(addr, mask, value) \
733 WA_REG(addr, _MASKED_FIELD(mask, value), mask)
734
732#define WA_SET_BIT(addr, mask) WA_REG(addr, I915_READ(addr) | (mask), mask) 735#define WA_SET_BIT(addr, mask) WA_REG(addr, I915_READ(addr) | (mask), mask)
733#define WA_CLR_BIT(addr, mask) WA_REG(addr, I915_READ(addr) & ~(mask), mask) 736#define WA_CLR_BIT(addr, mask) WA_REG(addr, I915_READ(addr) & ~(mask), mask)
734 737
@@ -773,8 +776,9 @@ static int bdw_init_workarounds(struct intel_engine_cs *ring)
773 * disable bit, which we don't touch here, but it's good 776 * disable bit, which we don't touch here, but it's good
774 * to keep in mind (see 3DSTATE_PS and 3DSTATE_WM). 777 * to keep in mind (see 3DSTATE_PS and 3DSTATE_WM).
775 */ 778 */
776 WA_SET_BIT_MASKED(GEN7_GT_MODE, 779 WA_SET_FIELD_MASKED(GEN7_GT_MODE,
777 GEN6_WIZ_HASHING_MASK | GEN6_WIZ_HASHING_16x4); 780 GEN6_WIZ_HASHING_MASK,
781 GEN6_WIZ_HASHING_16x4);
778 782
779 return 0; 783 return 0;
780} 784}