• Leo Li's avatar
    drm/amd/display: Send vblank and user events at vsartup for DCN · 16f17eda
    Leo Li authored
    [Why]
    
    For DCN hardware, the crtc_high_irq handler is assigned to the vstartup
    interrupt. This is different from DCE, which has it assigned to vblank
    start.
    
    We'd like to send vblank and user events at vstartup because:
    
    * It happens close enough to vupdate - the point of no return for HW.
    
    * It is programmed as lines relative to vblank end - i.e. it is not in
      the variable portion when VRR is enabled. We should signal user
      events here.
    
    * The pflip interrupt responsible for sending user events today only
      fires if the DCH HUBP component is not clock gated. In situations
      where planes are disabled - but the CRTC is enabled - user events won't
      be sent out, leading to flip done timeouts.
    
    Consequently, this makes vupdate on DCN hardware redundant. It will be
    removed in the next change.
    
    [How]
    
    Add a DCN-specific crtc_high_irq handler, and hook it to the VStartup
    signal. Inside the DCN handler, we send off user events if the pflip
    handler hasn't already done so.
    Reviewed-by: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Signed-off-by: default avatarLeo Li <sunpeng.li@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    16f17eda
amdgpu_dm.c 229 KB