diff options
author | Eric Anholt <eric@anholt.net> | 2015-02-23 04:03:32 +0000 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2015-06-04 14:15:34 -0700 |
commit | 56102d5e94beca405b551f2f94eb307d0c36c103 (patch) | |
tree | d8ce753711fb6fcbfb6d1480232f33ccb7ca02c6 | |
parent | 7272bdd11c4887efda4ea291ad37f23bcb491a4a (diff) | |
download | linux-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.c | 5 |
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 |