diff options
Diffstat (limited to 'drivers/gpu/drm/vc4/vc4_irq.c')
-rw-r--r-- | drivers/gpu/drm/vc4/vc4_irq.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/vc4/vc4_irq.c b/drivers/gpu/drm/vc4/vc4_irq.c index 7d7af3a93d94..61b2e5377993 100644 --- a/drivers/gpu/drm/vc4/vc4_irq.c +++ b/drivers/gpu/drm/vc4/vc4_irq.c | |||
@@ -208,6 +208,9 @@ vc4_irq_postinstall(struct drm_device *dev) | |||
208 | { | 208 | { |
209 | struct vc4_dev *vc4 = to_vc4_dev(dev); | 209 | struct vc4_dev *vc4 = to_vc4_dev(dev); |
210 | 210 | ||
211 | /* Undo the effects of a previous vc4_irq_uninstall. */ | ||
212 | enable_irq(dev->irq); | ||
213 | |||
211 | /* Enable both the render done and out of memory interrupts. */ | 214 | /* Enable both the render done and out of memory interrupts. */ |
212 | V3D_WRITE(V3D_INTENA, V3D_DRIVER_IRQS); | 215 | V3D_WRITE(V3D_INTENA, V3D_DRIVER_IRQS); |
213 | 216 | ||
@@ -225,6 +228,9 @@ vc4_irq_uninstall(struct drm_device *dev) | |||
225 | /* Clear any pending interrupts we might have left. */ | 228 | /* Clear any pending interrupts we might have left. */ |
226 | V3D_WRITE(V3D_INTCTL, V3D_DRIVER_IRQS); | 229 | V3D_WRITE(V3D_INTCTL, V3D_DRIVER_IRQS); |
227 | 230 | ||
231 | /* Finish any interrupt handler still in flight. */ | ||
232 | disable_irq(dev->irq); | ||
233 | |||
228 | cancel_work_sync(&vc4->overflow_mem_work); | 234 | cancel_work_sync(&vc4->overflow_mem_work); |
229 | } | 235 | } |
230 | 236 | ||