• Stephane Viau's avatar
    drm/msm/mdp5: only flush on a CRTC ->atomic_flush() · a73f3382
    Stephane Viau authored
    MDP5 hardware has some limitation and requires to avoid flushing
    registers more than once between two Vblanks.
    
    This change removes all FLUSH operations (except for HW cursor)
    beside the one coming from a CRTC's ->atomic_flush().
    
    This avoid this type of behavior (eg: CRTC + 1 plane overlay):
    
    	[drm:mdp5_crtc_vblank_irq] vblank
    	[drm:mdp5_ctl_commit] flush (20048)   CTL + LM0 + RGB0
    	[drm:mdp5_ctl_commit] flush (20040)   CTL + LM0
    	[drm:mdp5_crtc_vblank_irq] blank
    	[drm:mdp5_ctl_commit] flush (20049)   CTL + LM0 + RGB0 + VIG0
    	[drm:mdp5_crtc_vblank_irq] blank
    
    and replaces it by:
    
    	[drm:mdp5_crtc_vblank_irq] vblank
    	[drm:mdp5_ctl_commit] flush (20048)   CTL + LM0 + RGB0
    	[drm:mdp5_crtc_vblank_irq] blank
    	[drm:mdp5_ctl_commit] flush (20049)   CTL + LM0 + RGB0 + VIG0
    	[drm:mdp5_crtc_vblank_irq] blank
    
    Only *one* FLUSH is called between Vblanks interrupts.
    Signed-off-by: default avatarStephane Viau <sviau@codeaurora.org>
    Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
    a73f3382
mdp5_crtc.c 19.4 KB