diff options
author | Alan Hourihane <alanh@tungstengraphics.com> | 2006-08-08 15:05:54 -0700 |
---|---|---|
committer | Eric Anholt <anholt@FreeBSD.org> | 2006-08-08 15:05:54 -0700 |
commit | 48cb9aceed782a4e9c557f30429e65f845dd777d (patch) | |
tree | 4848dc90ea0f50265f4c2ddd4f0161163efbf54c /shared-core/i915_irq.c | |
parent | e524028630013bb0f436bcdca0396289745843cf (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.c | 32 |
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) |