diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2016-04-18 18:43:03 -0400 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2016-12-19 04:25:00 -0500 |
commit | 14389a374b12347eecdc98a3082921ef68cad179 (patch) | |
tree | d72c223ab4a47e68154cc56eee6a9498dd7641e3 /drivers/gpu/drm/omapdrm/omap_irq.c | |
parent | d173d3dc5e41af969c1b230a3a6357e51b9baaeb (diff) |
drm: omapdrm: Keep vblank interrupt enabled while CRTC is active
Instead of going through a complicated private IRQ registration
mechanism, handle the vblank interrupt activation with the standard
drm_crtc_vblank_get() and drm_crtc_vblank_put() mechanism. This will let
the DRM core keep the vblank interrupt enabled as long as needed to
update the frame counter.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_irq.c')
-rw-r--r-- | drivers/gpu/drm/omapdrm/omap_irq.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_irq.c b/drivers/gpu/drm/omapdrm/omap_irq.c index e1925fa6d849..1c826907dead 100644 --- a/drivers/gpu/drm/omapdrm/omap_irq.c +++ b/drivers/gpu/drm/omapdrm/omap_irq.c | |||
@@ -245,8 +245,10 @@ static irqreturn_t omap_irq_handler(int irq, void *arg) | |||
245 | struct drm_crtc *crtc = priv->crtcs[id]; | 245 | struct drm_crtc *crtc = priv->crtcs[id]; |
246 | enum omap_channel channel = omap_crtc_channel(crtc); | 246 | enum omap_channel channel = omap_crtc_channel(crtc); |
247 | 247 | ||
248 | if (irqstatus & pipe2vbl(crtc)) | 248 | if (irqstatus & pipe2vbl(crtc)) { |
249 | drm_handle_vblank(dev, id); | 249 | drm_handle_vblank(dev, id); |
250 | omap_crtc_vblank_irq(crtc); | ||
251 | } | ||
250 | 252 | ||
251 | if (irqstatus & dispc_mgr_get_sync_lost_irq(channel)) | 253 | if (irqstatus & dispc_mgr_get_sync_lost_irq(channel)) |
252 | omap_crtc_error_irq(crtc, irqstatus); | 254 | omap_crtc_error_irq(crtc, irqstatus); |