diff options
author | Liu Ying <victor.liu@nxp.com> | 2019-05-07 11:02:18 +0800 |
---|---|---|
committer | Liu Ying <victor.liu@nxp.com> | 2019-05-10 13:38:08 +0800 |
commit | c0acd7c67eb1f622472c4e4cc255689c4886f711 (patch) | |
tree | 05b28e208593b975e915051fc078661ba1842995 /include | |
parent | 51bef1f30359b615531075c4269509ba8faba63b (diff) |
MLK-21656-2 drm/imx: dpu: crtc: Tune enablement sequence to correctly switch Tcon mode
As suggested by the design team, there is rigorous timing requirement
to address TKT320590, that is, we need to turn Tcon(s) from bypass mode
into operation mode as soon as the first dumb frame is generated by DPU.
When dual stream is used, we should look at the first dumb frame generated
by the master FrameGen. If we cannot ensure the timing requirement, say
the Tcon mode switching takes place after the second frame is generated
by DPU, the hardware could run into malfunction sometimes. Based on
stress tests, the content shadow load done event for the first time we call
->atomic_flush() may not come after the CRTC enablement in the single
stream case and it looks like display data is not generated to the
down-stream encoder(hence, black screen). This patch tunes enablement
sequence to correctly switch Tcon mode, according to the design team's
suggestions. During the switching, we don't relinquish CPU to ensure the
sequence is straightforward to meet the timing requirement. As we cannot
sleep during the switching, we take the pixel link enablement/disablement
operations(wrapped by a mutex in RPC call) out of framegen_enable/disable()
functions and put them at appropriate place. This introduces additional
sequence modifications but should be safe.
Signed-off-by: Liu Ying <victor.liu@nxp.com>
(cherry picked from commit ec323921dc2173128f071d0238e6439f5536aca1)
Diffstat (limited to 'include')
-rw-r--r-- | include/video/dpu.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/video/dpu.h b/include/video/dpu.h index 569b5538ea7b..358a8bbce10a 100644 --- a/include/video/dpu.h +++ b/include/video/dpu.h @@ -621,6 +621,8 @@ void dpu_fw_put(struct dpu_fetchunit *fu); struct dpu_framegen; void framegen_enable(struct dpu_framegen *fg); void framegen_disable(struct dpu_framegen *fg); +void framegen_enable_pixel_link(struct dpu_framegen *fg); +void framegen_disable_pixel_link(struct dpu_framegen *fg); void framegen_shdtokgen(struct dpu_framegen *fg); void framegen_syncmode(struct dpu_framegen *fg, fgsyncmode_t mode); void |