diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index 89f4d1174bc4..53ad76223f2a 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -1661,11 +1661,12 @@ static bool vop2_is_allwin_disabled(struct drm_crtc *crtc) { struct vop2_video_port *vp = to_vop2_video_port(crtc); struct vop2 *vop2 = vp->vop2; - struct drm_plane *plane; + unsigned long win_mask = vp->win_mask; struct vop2_win *win; + int phys_id; - drm_atomic_crtc_for_each_plane(plane, crtc) { - win = to_vop2_win(plane); + for_each_set_bit(phys_id, &win_mask, ROCKCHIP_MAX_LAYER) { + win = vop2_find_win_by_phys_id(vop2, phys_id); if (VOP_WIN_GET(vop2, win, enable) != 0) return false; } @@ -1677,13 +1678,14 @@ static void vop2_disable_all_planes_for_crtc(struct drm_crtc *crtc) { struct vop2_video_port *vp = to_vop2_video_port(crtc); struct vop2 *vop2 = vp->vop2; - struct drm_plane *plane; struct vop2_win *win; + unsigned long win_mask = vp->win_mask; + int phys_id, ret; bool active; - int ret; - drm_atomic_crtc_for_each_plane(plane, crtc) { - win = to_vop2_win(plane); + + for_each_set_bit(phys_id, &win_mask, ROCKCHIP_MAX_LAYER) { + win = vop2_find_win_by_phys_id(vop2, phys_id); vop2_win_disable(win); } vop2_cfg_done(crtc);