diff options
-rw-r--r-- | drivers/gpu/drm/i915/i915_reg.h | 17 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 8 |
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 | } |