From dd7918d62445d9b3899df924f0d08bafdfa8f47c Mon Sep 17 00:00:00 2001 From: Venkateshwar Rao Gannavarapu Date: Thu, 10 May 2018 15:36:11 +0530 Subject: [PATCH] drm: xlnx: pl_disp: fix vblank time out issue This patch adds a vblank processing delay to avoid timeout in processing the first frame. Signed-off-by: Venkateshwar Rao Gannavarapu Reviewed-by: Hyun Kwon Signed-off-by: Michal Simek --- drivers/gpu/drm/xlnx/xlnx_pl_disp.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/gpu/drm/xlnx/xlnx_pl_disp.c b/drivers/gpu/drm/xlnx/xlnx_pl_disp.c index 58a42966a6b8..fb0e98c11b26 100644 --- a/drivers/gpu/drm/xlnx/xlnx_pl_disp.c +++ b/drivers/gpu/drm/xlnx/xlnx_pl_disp.c @@ -312,7 +312,15 @@ static void xlnx_pl_disp_clear_event(struct drm_crtc *crtc) static void xlnx_pl_disp_crtc_atomic_enable(struct drm_crtc *crtc, struct drm_crtc_state *old_state) { + struct drm_display_mode *adjusted_mode = &crtc->state->adjusted_mode; + int vrefresh; + xlnx_pl_disp_plane_enable(crtc->primary); + + /* Delay of 1 vblank interval for timing gen to be stable */ + vrefresh = (adjusted_mode->clock * 1000) / + (adjusted_mode->vtotal * adjusted_mode->htotal); + msleep(1 * 1000 / vrefresh); } static void xlnx_pl_disp_crtc_atomic_disable(struct drm_crtc *crtc, -- 2.39.2