diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index ffc24387ea83..46bbd657c764 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -2181,7 +2181,7 @@ static void vop2_win_disable(struct vop2_win *win, bool skip_splice_win) win->splice_win = NULL; } - if (VOP_WIN_GET(vop2, win, enable) || VOP_WIN_GET_REG_BAK(vop2, win, enable)) { + if (VOP_WIN_GET_REG_BAK(vop2, win, enable)) { VOP_WIN_SET(vop2, win, enable, 0); /* * at rk3576 platform, the esmart1/3 can merge from vp1, but the enable bit: port0_extra_alpha_en @@ -7818,6 +7818,8 @@ static int vop2_crtc_loader_protect(struct drm_crtc *crtc, bool on, void *data) if (crtc->primary) { win = to_vop2_win(crtc->primary); if (VOP_WIN_GET(vop2, win, enable)) { + /* set enable in regbaks */ + VOP_WIN_SET(vop2, win, enable, 1); pd = win->pd; while (pd) { pd->ref_count++; @@ -7844,6 +7846,8 @@ static int vop2_crtc_loader_protect(struct drm_crtc *crtc, bool on, void *data) if (splice_win->pd && VOP_WIN_GET(vop2, splice_win, enable)) { + /* set enable in regbaks */ + VOP_WIN_SET(vop2, splice_win, enable, 1); pd = splice_win->pd; while (pd) { pd->ref_count++;