summaryrefslogtreecommitdiff
path: root/shared-core/i915_irq.c
diff options
context:
space:
mode:
authorZou Nan hai <nanhai.zou@intel.com>2007-01-24 16:33:21 +0800
committerZou Nan hai <nanhai.zou@intel.com>2007-01-24 16:33:21 +0800
commit7d4e6b1445d4c734f1dd6070ffa041c42e649e91 (patch)
tree86b83e2e8b80ae41c8f4afcd5e1bcfd9484037e6 /shared-core/i915_irq.c
parent19ba0749384994662e0d6167c70cc6fbd78eb0ff (diff)
vblank interrupt fix
Diffstat (limited to 'shared-core/i915_irq.c')
-rw-r--r--shared-core/i915_irq.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/shared-core/i915_irq.c b/shared-core/i915_irq.c
index 97723653..5ff87880 100644
--- a/shared-core/i915_irq.c
+++ b/shared-core/i915_irq.c
@@ -214,9 +214,12 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
drm_device_t *dev = (drm_device_t *) arg;
drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
u16 temp;
+ u32 pipea_stats, pipeb_stats;
+ pipea_stats = I915_READ(I915REG_PIPEASTAT);
+ pipeb_stats = I915_READ(I915REG_PIPEBSTAT);
+
temp = I915_READ16(I915REG_INT_IDENTITY_R);
-
temp &= (dev_priv->irq_enable_reg | USER_INT_FLAG);
#if 0
@@ -257,6 +260,12 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
if (dev_priv->swaps_pending > 0)
drm_locked_tasklet(dev, i915_vblank_tasklet);
+ I915_WRITE(I915REG_PIPEASTAT,
+ pipea_stats|I915_VBLANK_INTERRUPT_ENABLE|
+ I915_VBLANK_CLEAR);
+ I915_WRITE(I915REG_PIPEBSTAT,
+ pipeb_stats|I915_VBLANK_INTERRUPT_ENABLE|
+ I915_VBLANK_CLEAR);
}
return IRQ_HANDLED;