aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2012-04-24 08:04:12 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-05-03 05:18:08 -0400
commit6b26c86d615747f67fede6ca9609b0f8b2037d11 (patch)
tree5abfc0fecc0549878c0b93fb81e8fa535c1439b6 /drivers/gpu/drm
parentee7b9f93fd96a72e5d09e2b44024c11880873c6b (diff)
drm/i915: create macros to handle masked bits
... and put them to so good use. Note that there's functional change in vlv clock gating code, we now no longer spuriously read back the current value of the bit. According to Bspec the high bits should always read zero, so ORing this in should have no effect. Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com> Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c4
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c8
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c5
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h8
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c5
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c13
6 files changed, 18 insertions, 25 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 95ccdffb5deb..8a98f9a16418 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -438,7 +438,7 @@ void __gen6_gt_force_wake_mt_get(struct drm_i915_private *dev_priv)
438 while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_MT_ACK) & 1)) 438 while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_MT_ACK) & 1))
439 udelay(10); 439 udelay(10);
440 440
441 I915_WRITE_NOTRACE(FORCEWAKE_MT, (1<<16) | 1); 441 I915_WRITE_NOTRACE(FORCEWAKE_MT, _MASKED_BIT_ENABLE(1));
442 POSTING_READ(FORCEWAKE_MT); 442 POSTING_READ(FORCEWAKE_MT);
443 443
444 count = 0; 444 count = 0;
@@ -480,7 +480,7 @@ void __gen6_gt_force_wake_put(struct drm_i915_private *dev_priv)
480 480
481void __gen6_gt_force_wake_mt_put(struct drm_i915_private *dev_priv) 481void __gen6_gt_force_wake_mt_put(struct drm_i915_private *dev_priv)
482{ 482{
483 I915_WRITE_NOTRACE(FORCEWAKE_MT, (1<<16) | 0); 483 I915_WRITE_NOTRACE(FORCEWAKE_MT, _MASKED_BIT_DISABLE(1));
484 /* The below doubles as a POSTING_READ */ 484 /* The below doubles as a POSTING_READ */
485 gen6_gt_check_fifodbg(dev_priv); 485 gen6_gt_check_fifodbg(dev_priv);
486} 486}
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 38490cdf2d9f..cfbcf7ef567e 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3494,9 +3494,9 @@ void i915_gem_init_swizzling(struct drm_device *dev)
3494 3494
3495 I915_WRITE(TILECTL, I915_READ(TILECTL) | TILECTL_SWZCTL); 3495 I915_WRITE(TILECTL, I915_READ(TILECTL) | TILECTL_SWZCTL);
3496 if (IS_GEN6(dev)) 3496 if (IS_GEN6(dev))
3497 I915_WRITE(ARB_MODE, ARB_MODE_ENABLE(ARB_MODE_SWIZZLE_SNB)); 3497 I915_WRITE(ARB_MODE, _MASKED_BIT_ENABLE(ARB_MODE_SWIZZLE_SNB));
3498 else 3498 else
3499 I915_WRITE(ARB_MODE, ARB_MODE_ENABLE(ARB_MODE_SWIZZLE_IVB)); 3499 I915_WRITE(ARB_MODE, _MASKED_BIT_ENABLE(ARB_MODE_SWIZZLE_IVB));
3500} 3500}
3501 3501
3502void i915_gem_init_ppgtt(struct drm_device *dev) 3502void i915_gem_init_ppgtt(struct drm_device *dev)
@@ -3545,7 +3545,7 @@ void i915_gem_init_ppgtt(struct drm_device *dev)
3545 ecochk = I915_READ(GAM_ECOCHK); 3545 ecochk = I915_READ(GAM_ECOCHK);
3546 I915_WRITE(GAM_ECOCHK, ecochk | ECOCHK_SNB_BIT | 3546 I915_WRITE(GAM_ECOCHK, ecochk | ECOCHK_SNB_BIT |
3547 ECOCHK_PPGTT_CACHE64B); 3547 ECOCHK_PPGTT_CACHE64B);
3548 I915_WRITE(GFX_MODE, GFX_MODE_ENABLE(GFX_PPGTT_ENABLE)); 3548 I915_WRITE(GFX_MODE, _MASKED_BIT_ENABLE(GFX_PPGTT_ENABLE));
3549 } else if (INTEL_INFO(dev)->gen >= 7) { 3549 } else if (INTEL_INFO(dev)->gen >= 7) {
3550 I915_WRITE(GAM_ECOCHK, ECOCHK_PPGTT_CACHE64B); 3550 I915_WRITE(GAM_ECOCHK, ECOCHK_PPGTT_CACHE64B);
3551 /* GFX_MODE is per-ring on gen7+ */ 3551 /* GFX_MODE is per-ring on gen7+ */
@@ -3556,7 +3556,7 @@ void i915_gem_init_ppgtt(struct drm_device *dev)
3556 3556
3557 if (INTEL_INFO(dev)->gen >= 7) 3557 if (INTEL_INFO(dev)->gen >= 7)
3558 I915_WRITE(RING_MODE_GEN7(ring), 3558 I915_WRITE(RING_MODE_GEN7(ring),
3559 GFX_MODE_ENABLE(GFX_PPGTT_ENABLE)); 3559 _MASKED_BIT_ENABLE(GFX_PPGTT_ENABLE));
3560 3560
3561 I915_WRITE(RING_PP_DIR_DCLV(ring), PP_DIR_DCLV_2G); 3561 I915_WRITE(RING_PP_DIR_DCLV(ring), PP_DIR_DCLV_2G);
3562 I915_WRITE(RING_PP_DIR_BASE(ring), pd_offset); 3562 I915_WRITE(RING_PP_DIR_BASE(ring), pd_offset);
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index d45b43a35f15..26172eef9787 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1648,7 +1648,7 @@ static int i915_enable_vblank(struct drm_device *dev, int pipe)
1648 1648
1649 /* maintain vblank delivery even in deep C-states */ 1649 /* maintain vblank delivery even in deep C-states */
1650 if (dev_priv->info->gen == 3) 1650 if (dev_priv->info->gen == 3)
1651 I915_WRITE(INSTPM, INSTPM_AGPBUSY_DIS << 16); 1651 I915_WRITE(INSTPM, _MASKED_BIT_DISABLE(INSTPM_AGPBUSY_DIS));
1652 spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); 1652 spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
1653 1653
1654 return 0; 1654 return 0;
@@ -1722,8 +1722,7 @@ static void i915_disable_vblank(struct drm_device *dev, int pipe)
1722 1722
1723 spin_lock_irqsave(&dev_priv->irq_lock, irqflags); 1723 spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
1724 if (dev_priv->info->gen == 3) 1724 if (dev_priv->info->gen == 3)
1725 I915_WRITE(INSTPM, 1725 I915_WRITE(INSTPM, _MASKED_BIT_ENABLE(INSTPM_AGPBUSY_DIS));
1726 INSTPM_AGPBUSY_DIS << 16 | INSTPM_AGPBUSY_DIS);
1727 1726
1728 i915_disable_pipestat(dev_priv, pipe, 1727 i915_disable_pipestat(dev_priv, pipe,
1729 PIPE_VBLANK_INTERRUPT_ENABLE | 1728 PIPE_VBLANK_INTERRUPT_ENABLE |
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 91f1d1cd0070..f1f4d8f1df6a 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -29,6 +29,9 @@
29 29
30#define _PORT(port, a, b) ((a) + (port)*((b)-(a))) 30#define _PORT(port, a, b) ((a) + (port)*((b)-(a)))
31 31
32#define _MASKED_BIT_ENABLE(a) (((a) << 16) | (a))
33#define _MASKED_BIT_DISABLE(a) ((a) << 16)
34
32/* 35/*
33 * The Bridge device's PCI config space has information about the 36 * The Bridge device's PCI config space has information about the
34 * fb aperture size and the amount of pre-reserved memory. 37 * fb aperture size and the amount of pre-reserved memory.
@@ -425,8 +428,6 @@
425#define ARB_MODE 0x04030 428#define ARB_MODE 0x04030
426#define ARB_MODE_SWIZZLE_SNB (1<<4) 429#define ARB_MODE_SWIZZLE_SNB (1<<4)
427#define ARB_MODE_SWIZZLE_IVB (1<<5) 430#define ARB_MODE_SWIZZLE_IVB (1<<5)
428#define ARB_MODE_ENABLE(x) GFX_MODE_ENABLE(x)
429#define ARB_MODE_DISABLE(x) GFX_MODE_DISABLE(x)
430#define RENDER_HWS_PGA_GEN7 (0x04080) 431#define RENDER_HWS_PGA_GEN7 (0x04080)
431#define RING_FAULT_REG(ring) (0x4094 + 0x100*(ring)->id) 432#define RING_FAULT_REG(ring) (0x4094 + 0x100*(ring)->id)
432#define DONE_REG 0x40b0 433#define DONE_REG 0x40b0
@@ -514,9 +515,6 @@
514#define GFX_PSMI_GRANULARITY (1<<10) 515#define GFX_PSMI_GRANULARITY (1<<10)
515#define GFX_PPGTT_ENABLE (1<<9) 516#define GFX_PPGTT_ENABLE (1<<9)
516 517
517#define GFX_MODE_ENABLE(bit) (((bit) << 16) | (bit))
518#define GFX_MODE_DISABLE(bit) (((bit) << 16) | (0))
519
520#define SCPD0 0x0209c /* 915+ only */ 518#define SCPD0 0x0209c /* 915+ only */
521#define IER 0x020a0 519#define IER 0x020a0
522#define IIR 0x020a4 520#define IIR 0x020a4
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index a2d2ce474d0e..a26bf49c4649 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -2821,9 +2821,8 @@ static void valleyview_init_clock_gating(struct drm_device *dev)
2821 intel_flush_display_plane(dev_priv, pipe); 2821 intel_flush_display_plane(dev_priv, pipe);
2822 } 2822 }
2823 2823
2824 I915_WRITE(CACHE_MODE_1, I915_READ(CACHE_MODE_1) | 2824 I915_WRITE(CACHE_MODE_1,
2825 (PIXEL_SUBSPAN_COLLECT_OPT_DISABLE << 16) | 2825 _MASKED_BIT_ENABLE(PIXEL_SUBSPAN_COLLECT_OPT_DISABLE));
2826 PIXEL_SUBSPAN_COLLECT_OPT_DISABLE);
2827} 2826}
2828 2827
2829static void g4x_init_clock_gating(struct drm_device *dev) 2828static void g4x_init_clock_gating(struct drm_device *dev)
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 6249a7fa9acc..f797613e6c4a 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -401,12 +401,11 @@ static int init_render_ring(struct intel_ring_buffer *ring)
401 int ret = init_ring_common(ring); 401 int ret = init_ring_common(ring);
402 402
403 if (INTEL_INFO(dev)->gen > 3) { 403 if (INTEL_INFO(dev)->gen > 3) {
404 int mode = VS_TIMER_DISPATCH << 16 | VS_TIMER_DISPATCH; 404 I915_WRITE(MI_MODE, _MASKED_BIT_ENABLE(VS_TIMER_DISPATCH));
405 I915_WRITE(MI_MODE, mode);
406 if (IS_GEN7(dev)) 405 if (IS_GEN7(dev))
407 I915_WRITE(GFX_MODE_GEN7, 406 I915_WRITE(GFX_MODE_GEN7,
408 GFX_MODE_DISABLE(GFX_TLB_INVALIDATE_ALWAYS) | 407 _MASKED_BIT_DISABLE(GFX_TLB_INVALIDATE_ALWAYS) |
409 GFX_MODE_ENABLE(GFX_REPLAY_MODE)); 408 _MASKED_BIT_ENABLE(GFX_REPLAY_MODE));
410 } 409 }
411 410
412 if (INTEL_INFO(dev)->gen >= 5) { 411 if (INTEL_INFO(dev)->gen >= 5) {
@@ -415,10 +414,8 @@ static int init_render_ring(struct intel_ring_buffer *ring)
415 return ret; 414 return ret;
416 } 415 }
417 416
418 if (INTEL_INFO(dev)->gen >= 6) { 417 if (INTEL_INFO(dev)->gen >= 6)
419 I915_WRITE(INSTPM, 418 I915_WRITE(INSTPM, _MASKED_BIT_ENABLE(INSTPM_FORCE_ORDERING));
420 INSTPM_FORCE_ORDERING << 16 | INSTPM_FORCE_ORDERING);
421 }
422 419
423 return ret; 420 return ret;
424} 421}