• Laurent Pinchart's avatar
    drm: omapdrm: Turn vblank on/off when enabling/disabling CRTC · c397cfd4
    Laurent Pinchart authored
    The DRM core vblank handling mechanism requires drivers to forcefully
    turn vblank reporting off when disabling the CRTC, and to restore the
    vblank reporting status when enabling the CRTC.
    
    Implement this using the drm_crtc_vblank_on/off helpers. When disabling
    vblank we must first wait for page flips to complete, so implement page
    flip completion wait as well.
    
    Finally, drm_crtc_vblank_off() must be called at startup to synchronize
    the state of the vblank core code with the hardware, which is initially
    disabled. An interesting side effect is that the .disable_vblank()
    operation will now be called for the first time with the CRTC disabled
    and the DISPC runtime suspended. The dispc_runtime_get() call in
    .disable_vblank() is supposed to take care of that, but the operation is
    called with a spinlock held, which prevents it from sleeping.
    
    To fix that move DISPC runtime PM handling out of the vblank operations
    to the CRTC code, ensuring that the display controller will always be
    powered when enabling or disabling vblank interrupts.
    Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
    c397cfd4
omap_crtc.c 21.5 KB