summaryrefslogtreecommitdiff
path: root/shared-core/i915_irq.c
diff options
context:
space:
mode:
authorAlan Hourihane <alanh@tungstengraphics.com>2006-08-08 15:05:54 -0700
committerEric Anholt <anholt@FreeBSD.org>2006-08-08 15:05:54 -0700
commit48cb9aceed782a4e9c557f30429e65f845dd777d (patch)
tree4848dc90ea0f50265f4c2ddd4f0161163efbf54c /shared-core/i915_irq.c
parente524028630013bb0f436bcdca0396289745843cf (diff)
Add support for Intel i965G chipsets.
This is a patch prepared by Guangdeng Liao based off of Tungsten Graphics's final code drop.
Diffstat (limited to 'shared-core/i915_irq.c')
-rw-r--r--shared-core/i915_irq.c32
1 files changed, 21 insertions, 11 deletions
diff --git a/shared-core/i915_irq.c b/shared-core/i915_irq.c
index df4ce4e2..64d89a75 100644
--- a/shared-core/i915_irq.c
+++ b/shared-core/i915_irq.c
@@ -70,22 +70,32 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
static int i915_emit_irq(drm_device_t * dev)
{
- drm_i915_private_t *dev_priv = dev->dev_private;
- u32 ret;
- RING_LOCALS;
+
+ drm_i915_private_t *dev_priv = dev->dev_private;
+ RING_LOCALS;
- i915_kernel_lost_context(dev);
+ i915_kernel_lost_context(dev);
- DRM_DEBUG("%s\n", __FUNCTION__);
+ DRM_DEBUG("%s\n", __FUNCTION__);
- ret = dev_priv->counter;
+ dev_priv->sarea_priv->last_enqueue = ++dev_priv->counter;
+
+ if (dev_priv->counter > 0x7FFFFFFFUL)
+ dev_priv->sarea_priv->last_enqueue = dev_priv->counter = 1;
+
+ BEGIN_LP_RING(6);
+ OUT_RING(CMD_STORE_DWORD_IDX);
+ OUT_RING(20);
+ OUT_RING(dev_priv->counter);
+
+ OUT_RING(0);
+ OUT_RING(0);
+ OUT_RING(GFX_OP_USER_INTERRUPT);
+ ADVANCE_LP_RING();
+
+ return dev_priv->counter;
- BEGIN_LP_RING(2);
- OUT_RING(0);
- OUT_RING(GFX_OP_USER_INTERRUPT);
- ADVANCE_LP_RING();
- return ret;
}
static int i915_wait_irq(drm_device_t * dev, int irq_nr)