From 664855bbb110cabecc783f919cae5c58b47fe1f1 Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Fri, 4 Jun 2021 14:13:35 +0800 Subject: [PATCH] drm/rockchip: vop2: only when have active win then need to wait win close Signed-off-by: Sandy Huang Change-Id: Ieaf6497a8597d5d6d3f4a0eb0169fba55c93b4e2 --- drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index 72a545176e28..e8d012631a9a 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -1721,18 +1721,21 @@ static void vop2_disable_all_planes_for_crtc(struct drm_crtc *crtc) struct vop2_win *win; unsigned long win_mask = vp->win_mask; int phys_id, ret; - bool active; - + bool active, need_wait_win_disabled = false; for_each_set_bit(phys_id, &win_mask, ROCKCHIP_MAX_LAYER) { win = vop2_find_win_by_phys_id(vop2, phys_id); + need_wait_win_disabled |= VOP_WIN_GET(vop2, win, enable); vop2_win_disable(win); } - vop2_cfg_done(crtc); - ret = readx_poll_timeout_atomic(vop2_is_allwin_disabled, crtc, - active, active, 0, 500 * 1000); - if (ret) - DRM_DEV_ERROR(vop2->dev, "wait win close timeout\n"); + + if (need_wait_win_disabled) { + vop2_cfg_done(crtc); + ret = readx_poll_timeout_atomic(vop2_is_allwin_disabled, crtc, + active, active, 0, 500 * 1000); + if (ret) + DRM_DEV_ERROR(vop2->dev, "wait win close timeout\n"); + } } /*