| From 116104b12295ade36a1cd34fa1a7ef6930044aca Mon Sep 17 00:00:00 2001 |
| From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Date: Fri, 10 Feb 2017 13:30:35 +0200 |
| Subject: [PATCH 249/286] drm: rcar-du: Handle event when disabling CRTCs |
| |
| The driver currently handles vblank events only when updating planes on |
| a CRTC. The atomic update API however allows requesting an event when |
| disabling a CRTC. This currently leads to event objects being leaked in |
| the kernel and to events not being sent out. Fix it. |
| |
| Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| (cherry picked from commit 6dd47cfd03a058d08b8caffb06194aa0eb109cf1) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 7 +++++++ |
| 1 file changed, 7 insertions(+) |
| |
| --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c |
| +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c |
| @@ -488,6 +488,13 @@ static void rcar_du_crtc_disable(struct |
| rcar_du_crtc_stop(rcrtc); |
| rcar_du_crtc_put(rcrtc); |
| |
| + spin_lock_irq(&crtc->dev->event_lock); |
| + if (crtc->state->event) { |
| + drm_crtc_send_vblank_event(crtc, crtc->state->event); |
| + crtc->state->event = NULL; |
| + } |
| + spin_unlock_irq(&crtc->dev->event_lock); |
| + |
| rcrtc->outputs = 0; |
| } |
| |