summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorLiu Ying <victor.liu@nxp.com>2019-05-07 11:02:18 +0800
committerLiu Ying <victor.liu@nxp.com>2019-05-10 13:38:08 +0800
commitc0acd7c67eb1f622472c4e4cc255689c4886f711 (patch)
tree05b28e208593b975e915051fc078661ba1842995 /include
parent51bef1f30359b615531075c4269509ba8faba63b (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.h2
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