aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_ringbuffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.c')
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c36
1 files changed, 12 insertions, 24 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 75081f146390..c7eea7fad16f 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -788,7 +788,7 @@ ring_add_request(struct intel_ring_buffer *ring,
788} 788}
789 789
790static bool 790static bool
791gen6_ring_get_irq(struct intel_ring_buffer *ring, u32 gflag, u32 rflag) 791gen6_ring_get_irq(struct intel_ring_buffer *ring, u32 mask)
792{ 792{
793 struct drm_device *dev = ring->dev; 793 struct drm_device *dev = ring->dev;
794 drm_i915_private_t *dev_priv = dev->dev_private; 794 drm_i915_private_t *dev_priv = dev->dev_private;
@@ -803,9 +803,9 @@ gen6_ring_get_irq(struct intel_ring_buffer *ring, u32 gflag, u32 rflag)
803 803
804 spin_lock(&ring->irq_lock); 804 spin_lock(&ring->irq_lock);
805 if (ring->irq_refcount++ == 0) { 805 if (ring->irq_refcount++ == 0) {
806 ring->irq_mask &= ~rflag; 806 ring->irq_mask &= ~mask;
807 I915_WRITE_IMR(ring, ring->irq_mask); 807 I915_WRITE_IMR(ring, ring->irq_mask);
808 ironlake_enable_irq(dev_priv, gflag); 808 ironlake_enable_irq(dev_priv, mask);
809 } 809 }
810 spin_unlock(&ring->irq_lock); 810 spin_unlock(&ring->irq_lock);
811 811
@@ -813,16 +813,16 @@ gen6_ring_get_irq(struct intel_ring_buffer *ring, u32 gflag, u32 rflag)
813} 813}
814 814
815static void 815static void
816gen6_ring_put_irq(struct intel_ring_buffer *ring, u32 gflag, u32 rflag) 816gen6_ring_put_irq(struct intel_ring_buffer *ring, u32 mask)
817{ 817{
818 struct drm_device *dev = ring->dev; 818 struct drm_device *dev = ring->dev;
819 drm_i915_private_t *dev_priv = dev->dev_private; 819 drm_i915_private_t *dev_priv = dev->dev_private;
820 820
821 spin_lock(&ring->irq_lock); 821 spin_lock(&ring->irq_lock);
822 if (--ring->irq_refcount == 0) { 822 if (--ring->irq_refcount == 0) {
823 ring->irq_mask |= rflag; 823 ring->irq_mask |= mask;
824 I915_WRITE_IMR(ring, ring->irq_mask); 824 I915_WRITE_IMR(ring, ring->irq_mask);
825 ironlake_disable_irq(dev_priv, gflag); 825 ironlake_disable_irq(dev_priv, mask);
826 } 826 }
827 spin_unlock(&ring->irq_lock); 827 spin_unlock(&ring->irq_lock);
828 828
@@ -1376,33 +1376,25 @@ gen6_ring_dispatch_execbuffer(struct intel_ring_buffer *ring,
1376static bool 1376static bool
1377gen6_render_ring_get_irq(struct intel_ring_buffer *ring) 1377gen6_render_ring_get_irq(struct intel_ring_buffer *ring)
1378{ 1378{
1379 return gen6_ring_get_irq(ring, 1379 return gen6_ring_get_irq(ring, GT_USER_INTERRUPT);
1380 GT_USER_INTERRUPT,
1381 GEN6_RENDER_USER_INTERRUPT);
1382} 1380}
1383 1381
1384static void 1382static void
1385gen6_render_ring_put_irq(struct intel_ring_buffer *ring) 1383gen6_render_ring_put_irq(struct intel_ring_buffer *ring)
1386{ 1384{
1387 return gen6_ring_put_irq(ring, 1385 return gen6_ring_put_irq(ring, GT_USER_INTERRUPT);
1388 GT_USER_INTERRUPT,
1389 GEN6_RENDER_USER_INTERRUPT);
1390} 1386}
1391 1387
1392static bool 1388static bool
1393gen6_bsd_ring_get_irq(struct intel_ring_buffer *ring) 1389gen6_bsd_ring_get_irq(struct intel_ring_buffer *ring)
1394{ 1390{
1395 return gen6_ring_get_irq(ring, 1391 return gen6_ring_get_irq(ring, GEN6_BSD_USER_INTERRUPT);
1396 GT_GEN6_BSD_USER_INTERRUPT,
1397 GEN6_BSD_USER_INTERRUPT);
1398} 1392}
1399 1393
1400static void 1394static void
1401gen6_bsd_ring_put_irq(struct intel_ring_buffer *ring) 1395gen6_bsd_ring_put_irq(struct intel_ring_buffer *ring)
1402{ 1396{
1403 return gen6_ring_put_irq(ring, 1397 return gen6_ring_put_irq(ring, GEN6_BSD_USER_INTERRUPT);
1404 GT_GEN6_BSD_USER_INTERRUPT,
1405 GEN6_BSD_USER_INTERRUPT);
1406} 1398}
1407 1399
1408/* ring buffer for Video Codec for Gen6+ */ 1400/* ring buffer for Video Codec for Gen6+ */
@@ -1431,17 +1423,13 @@ static const struct intel_ring_buffer gen6_bsd_ring = {
1431static bool 1423static bool
1432blt_ring_get_irq(struct intel_ring_buffer *ring) 1424blt_ring_get_irq(struct intel_ring_buffer *ring)
1433{ 1425{
1434 return gen6_ring_get_irq(ring, 1426 return gen6_ring_get_irq(ring, GEN6_BLITTER_USER_INTERRUPT);
1435 GT_BLT_USER_INTERRUPT,
1436 GEN6_BLITTER_USER_INTERRUPT);
1437} 1427}
1438 1428
1439static void 1429static void
1440blt_ring_put_irq(struct intel_ring_buffer *ring) 1430blt_ring_put_irq(struct intel_ring_buffer *ring)
1441{ 1431{
1442 gen6_ring_put_irq(ring, 1432 gen6_ring_put_irq(ring, GEN6_BLITTER_USER_INTERRUPT);
1443 GT_BLT_USER_INTERRUPT,
1444 GEN6_BLITTER_USER_INTERRUPT);
1445} 1433}
1446 1434
1447static int blt_ring_flush(struct intel_ring_buffer *ring, 1435static int blt_ring_flush(struct intel_ring_buffer *ring,