diff options
Diffstat (limited to 'linux/i830_irq.c')
-rw-r--r-- | linux/i830_irq.c | 14 |
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; } |