summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKwanghyun Chung <khyun.chung@samsung.com>2022-01-18 19:13:36 +0900
committerTreeHugger Robot <treehugger-gerrit@google.com>2022-11-29 06:21:04 +0000
commitd6925adf43e5587da8a83ffd8108539899450837 (patch)
tree70159fecb799111a8d45f101fd3749cd3fa66c7d
parent6164fbadf3ddbd87861a0d31f267398e8da485d8 (diff)
downloaddisplay-d6925adf43e5587da8a83ffd8108539899450837.tar.gz
drm: samsung: handle vblank if fb handover is enabled
This patch prevents framestart timeout by handling vblank when fb handover is enabled. Bug: 202947589 Test: Enable continuous splash Signed-off-by: Kwanghyun Chung <khyun.chung@samsung.com> Signed-off-by: Leo Chen <yinchiuan@google.com> (Cherry picked from commit db9ba46e3878277697557810f914f58510137593) Change-Id: I9f413340dbd788adf90ff180f97c0574ee66776b
-rw-r--r--samsung/exynos_drm_decon.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/samsung/exynos_drm_decon.c b/samsung/exynos_drm_decon.c
index 6bd7564..83ce503 100644
--- a/samsung/exynos_drm_decon.c
+++ b/samsung/exynos_drm_decon.c
@@ -755,9 +755,19 @@ static void decon_atomic_flush(struct exynos_drm_crtc *exynos_crtc,
if (new_exynos_crtc_state->seamless_mode_changed)
decon_seamless_mode_set(exynos_crtc, old_crtc_state);
- /* during skip update, send vblank event on next vsync instead of frame start */
- if (!new_crtc_state->no_vblank)
+ /*
+ * during skip update, send vblank event on next vsync instead of frame start
+ * when it comes to video mode, vblank event is handled at fs_irq_handler.
+ * If fb handover is enabled, vblank event should be handled once because
+ * fs irq could be started after decon start by calling decon_reg_start().
+ */
+ if (!new_crtc_state->no_vblank) {
exynos_crtc_handle_event(exynos_crtc);
+ if (decon->fb_handover.rmem) {
+ decon_force_vblank_event(decon);
+ drm_crtc_handle_vblank(&decon->crtc->base);
+ }
+ }
return;
}