summaryrefslogtreecommitdiff
path: root/linux/i830_irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'linux/i830_irq.c')
-rw-r--r--linux/i830_irq.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/linux/i830_irq.c b/linux/i830_irq.c
index 1fcd9f0a..301afc8a 100644
--- a/linux/i830_irq.c
+++ b/linux/i830_irq.c
@@ -36,7 +36,7 @@
#include <linux/delay.h>
-void DRM(dma_service)(int irq, void *device, struct pt_regs *regs)
+DRM_IRQ_RET DRM(dma_service)( DRM_IRQ_ARGS )
{
drm_device_t *dev = (drm_device_t *)device;
drm_i830_private_t *dev_priv = (drm_i830_private_t *)dev->dev_private;
@@ -45,15 +45,15 @@ void DRM(dma_service)(int irq, void *device, struct pt_regs *regs)
temp = I830_READ16(I830REG_INT_IDENTITY_R);
DRM_DEBUG("%x\n", temp);
- if (temp == 0)
- return;
+ if ( !( temp & 2 ) )
+ return DRM_IRQ_NONE;
I830_WRITE16(I830REG_INT_IDENTITY_R, temp);
- if (temp & 2) {
- atomic_inc(&dev_priv->irq_received);
- wake_up_interruptible(&dev_priv->irq_queue);
- }
+ atomic_inc(&dev_priv->irq_received);
+ wake_up_interruptible(&dev_priv->irq_queue);
+
+ return DRM_IRQ_HANDLED;
}