]> git.baikalelectronics.ru Git - kernel.git/commit
drm/msm/mdp5: only flush on a CRTC ->atomic_flush()
authorStephane Viau <sviau@codeaurora.org>
Tue, 27 Jan 2015 16:35:56 +0000 (11:35 -0500)
committerRob Clark <robdclark@gmail.com>
Wed, 1 Apr 2015 23:29:33 +0000 (19:29 -0400)
commit238c941b8427e3a0fa4559d5555fc0e9a3f850b5
tree810e2ff10da3a12bcfc160a3598dd72862fa34e2
parentdc1e20aca79312627c18fca004b864cdf27fe2e2
drm/msm/mdp5: only flush on a CRTC ->atomic_flush()

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: Stephane Viau <sviau@codeaurora.org>
Signed-off-by: Rob Clark <robdclark@gmail.com>
drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c