summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2015-02-23 04:03:32 +0000
committerEric Anholt <eric@anholt.net>2015-06-04 14:15:34 -0700
commit56102d5e94beca405b551f2f94eb307d0c36c103 (patch)
treed8ce753711fb6fcbfb6d1480232f33ccb7ca02c6
parent7272bdd11c4887efda4ea291ad37f23bcb491a4a (diff)
downloadlinux-56102d5e94beca405b551f2f94eb307d0c36c103.tar.gz
drm/vc4: Return a correct IRQ status.
If there were stray IRQs, the core kernel would never had a chance to shut it down. Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r--drivers/gpu/drm/vc4/vc4_irq.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/vc4/vc4_irq.c b/drivers/gpu/drm/vc4/vc4_irq.c
index 66201229801c..f39d80dafdd1 100644
--- a/drivers/gpu/drm/vc4/vc4_irq.c
+++ b/drivers/gpu/drm/vc4/vc4_irq.c
@@ -106,6 +106,7 @@ vc4_irq(int irq, void *arg)
struct drm_device *dev = arg;
struct vc4_dev *vc4 = to_vc4_dev(dev);
uint32_t intctl;
+ irqreturn_t status = IRQ_NONE;
barrier();
intctl = V3D_READ(V3D_INTCTL);
@@ -114,13 +115,15 @@ vc4_irq(int irq, void *arg)
if (intctl & V3D_INT_OUTOMEM) {
V3D_WRITE(V3D_INTDIS, V3D_INT_OUTOMEM);
schedule_work(&vc4->overflow_mem_work);
+ status = IRQ_HANDLED;
}
if (intctl & V3D_INT_FRDONE) {
vc4_irq_finish_job(dev);
+ status = IRQ_HANDLED;
}
- return intctl ? IRQ_HANDLED : IRQ_NONE;
+ return status;
}
void