Commit d9f3af96 authored by Tvrtko Ursulin's avatar Tvrtko Ursulin

drm/i915: Compact logical ring interrupt initialization

Identically to vfuncs interrupt mask initialization can also be
compacted for more readable code.
Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/1452619956-27014-2-git-send-email-tvrtko.ursulin@linux.intel.com
parent c9cacf93
...@@ -1962,6 +1962,13 @@ logical_ring_default_vfuncs(struct drm_device *dev, ...@@ -1962,6 +1962,13 @@ logical_ring_default_vfuncs(struct drm_device *dev,
} }
} }
static inline void
logical_ring_default_irqs(struct intel_engine_cs *ring, unsigned shift)
{
ring->irq_enable_mask = GT_RENDER_USER_INTERRUPT << shift;
ring->irq_keep_mask = GT_CONTEXT_SWITCH_INTERRUPT << shift;
}
static int static int
logical_ring_init(struct drm_device *dev, struct intel_engine_cs *ring) logical_ring_init(struct drm_device *dev, struct intel_engine_cs *ring)
{ {
...@@ -2017,10 +2024,8 @@ static int logical_render_ring_init(struct drm_device *dev) ...@@ -2017,10 +2024,8 @@ static int logical_render_ring_init(struct drm_device *dev)
ring->name = "render ring"; ring->name = "render ring";
ring->id = RCS; ring->id = RCS;
ring->mmio_base = RENDER_RING_BASE; ring->mmio_base = RENDER_RING_BASE;
ring->irq_enable_mask =
GT_RENDER_USER_INTERRUPT << GEN8_RCS_IRQ_SHIFT; logical_ring_default_irqs(ring, GEN8_RCS_IRQ_SHIFT);
ring->irq_keep_mask =
GT_CONTEXT_SWITCH_INTERRUPT << GEN8_RCS_IRQ_SHIFT;
if (HAS_L3_DPF(dev)) if (HAS_L3_DPF(dev))
ring->irq_keep_mask |= GT_RENDER_L3_PARITY_ERROR_INTERRUPT; ring->irq_keep_mask |= GT_RENDER_L3_PARITY_ERROR_INTERRUPT;
...@@ -2068,11 +2073,8 @@ static int logical_bsd_ring_init(struct drm_device *dev) ...@@ -2068,11 +2073,8 @@ static int logical_bsd_ring_init(struct drm_device *dev)
ring->name = "bsd ring"; ring->name = "bsd ring";
ring->id = VCS; ring->id = VCS;
ring->mmio_base = GEN6_BSD_RING_BASE; ring->mmio_base = GEN6_BSD_RING_BASE;
ring->irq_enable_mask =
GT_RENDER_USER_INTERRUPT << GEN8_VCS1_IRQ_SHIFT;
ring->irq_keep_mask =
GT_CONTEXT_SWITCH_INTERRUPT << GEN8_VCS1_IRQ_SHIFT;
logical_ring_default_irqs(ring, GEN8_VCS1_IRQ_SHIFT);
logical_ring_default_vfuncs(dev, ring); logical_ring_default_vfuncs(dev, ring);
return logical_ring_init(dev, ring); return logical_ring_init(dev, ring);
...@@ -2086,11 +2088,8 @@ static int logical_bsd2_ring_init(struct drm_device *dev) ...@@ -2086,11 +2088,8 @@ static int logical_bsd2_ring_init(struct drm_device *dev)
ring->name = "bds2 ring"; ring->name = "bds2 ring";
ring->id = VCS2; ring->id = VCS2;
ring->mmio_base = GEN8_BSD2_RING_BASE; ring->mmio_base = GEN8_BSD2_RING_BASE;
ring->irq_enable_mask =
GT_RENDER_USER_INTERRUPT << GEN8_VCS2_IRQ_SHIFT;
ring->irq_keep_mask =
GT_CONTEXT_SWITCH_INTERRUPT << GEN8_VCS2_IRQ_SHIFT;
logical_ring_default_irqs(ring, GEN8_VCS2_IRQ_SHIFT);
logical_ring_default_vfuncs(dev, ring); logical_ring_default_vfuncs(dev, ring);
return logical_ring_init(dev, ring); return logical_ring_init(dev, ring);
...@@ -2104,11 +2103,8 @@ static int logical_blt_ring_init(struct drm_device *dev) ...@@ -2104,11 +2103,8 @@ static int logical_blt_ring_init(struct drm_device *dev)
ring->name = "blitter ring"; ring->name = "blitter ring";
ring->id = BCS; ring->id = BCS;
ring->mmio_base = BLT_RING_BASE; ring->mmio_base = BLT_RING_BASE;
ring->irq_enable_mask =
GT_RENDER_USER_INTERRUPT << GEN8_BCS_IRQ_SHIFT;
ring->irq_keep_mask =
GT_CONTEXT_SWITCH_INTERRUPT << GEN8_BCS_IRQ_SHIFT;
logical_ring_default_irqs(ring, GEN8_BCS_IRQ_SHIFT);
logical_ring_default_vfuncs(dev, ring); logical_ring_default_vfuncs(dev, ring);
return logical_ring_init(dev, ring); return logical_ring_init(dev, ring);
...@@ -2122,11 +2118,8 @@ static int logical_vebox_ring_init(struct drm_device *dev) ...@@ -2122,11 +2118,8 @@ static int logical_vebox_ring_init(struct drm_device *dev)
ring->name = "video enhancement ring"; ring->name = "video enhancement ring";
ring->id = VECS; ring->id = VECS;
ring->mmio_base = VEBOX_RING_BASE; ring->mmio_base = VEBOX_RING_BASE;
ring->irq_enable_mask =
GT_RENDER_USER_INTERRUPT << GEN8_VECS_IRQ_SHIFT;
ring->irq_keep_mask =
GT_CONTEXT_SWITCH_INTERRUPT << GEN8_VECS_IRQ_SHIFT;
logical_ring_default_irqs(ring, GEN8_VECS_IRQ_SHIFT);
logical_ring_default_vfuncs(dev, ring); logical_ring_default_vfuncs(dev, ring);
return logical_ring_init(dev, ring); return logical_ring_init(dev, ring);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment