• Kieran Bingham's avatar
    drm: rcar-du: Repair vblank for DRM page flips using the VSP · 5e0594fd
    Kieran Bingham authored
    The driver recently switched from handling page flip completion in the
    DU vertical blanking handler to the VSP frame end handler to fix a race
    condition. This unfortunately resulted in incorrect timestamps in the
    vertical blanking events sent to userspace as vertical blanking is now
    handled after sending the event.
    
    To fix this we must reverse the order of the two operations. The easiest
    way is to handle vertical blanking in the VSP frame end handler before
    sending the event. The VSP frame end interrupt occurs approximately 50µs
    earlier than the DU frame end interrupt, but this should not cause any
    undue harm.
    
    As we need to handle vertical blanking even when page flip completion is
    delayed, the VSP driver now needs to call the frame end completion
    callback unconditionally, with a new argument to report whether page
    flip has completed.
    
    With this new scheme the DU vertical blanking interrupt isn't needed
    anymore, so we can stop enabling it.
    
    Fixes: d503a43a ("drm: rcar-du: Register a completion callback with VSP1")
    Signed-off-by: 's avatarKieran Bingham <kieran.bingham+renesas@ideasonboard.com>
    Signed-off-by: 's avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Acked-by: 's avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
    5e0594fd