• Tomi Valkeinen's avatar
    drm: omapdrm: new vblank and event handling · 5f741b39
    Tomi Valkeinen authored
    Rework the crtc event/flip_wait system as follows:
    
    - If we enable a crtc (full modeset), we set omap_crtc->pending and
      register vblank irq.
    
    - If we need to set GO bit (page flip), we do the same but also set the
      GO bit.
    
    - On vblank we unregister the irq, clear the 'pending' flag, send vblank
      event to userspace if crtc->state->event != NULL, and wake up
      'pending_wait' wq.
    
    - In omap_atomic_complete() we wait for the 'pending' flag to get reset
      for all enabled crtcs  using 'pending_wait' wq.
    
    The above ensures that we send the events to userspace in vblank, and
    that after the wait in omap_atomic_complete() everything for the
    affected crtcs has been completed.
    Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
    5f741b39
omap_drv.c 22.9 KB