1*4882a593SmuzhiyunFrom 03ec22e7a583478f1f56245060d1c1f95829d8f4 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com> 3*4882a593SmuzhiyunDate: Fri, 1 Apr 2022 22:17:07 +0800 4*4882a593SmuzhiyunSubject: [PATCH 3/3] HACK: drm: rockchip: Prefer non-cluster overlay planes 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunChange-Id: I65d40b50c96921b644de4601188c0518c99c9d72 7*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 8*4882a593Smuzhiyun--- 9*4882a593Smuzhiyun drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 10 ++++++++++ 10*4882a593Smuzhiyun 1 file changed, 10 insertions(+) 11*4882a593Smuzhiyun 12*4882a593Smuzhiyundiff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c 13*4882a593Smuzhiyunindex 635417630d29..398a68f9007d 100644 14*4882a593Smuzhiyun--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c 15*4882a593Smuzhiyun+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c 16*4882a593Smuzhiyun@@ -9765,6 +9765,7 @@ static int vop2_create_crtc(struct vop2 *vop2) 17*4882a593Smuzhiyun bool find_primary_plane = false; 18*4882a593Smuzhiyun bool bootloader_initialized = false; 19*4882a593Smuzhiyun struct rockchip_drm_private *private = drm_dev->dev_private; 20*4882a593Smuzhiyun+ bool use_cluster = false; 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun /* all planes can attach to any crtc */ 23*4882a593Smuzhiyun possible_crtcs = (1 << vop2_data->nr_vps) - 1; 24*4882a593Smuzhiyun@@ -9980,9 +9981,13 @@ static int vop2_create_crtc(struct vop2 *vop2) 25*4882a593Smuzhiyun * create overlay planes of the leftover overlay win 26*4882a593Smuzhiyun * Create drm_planes for overlay windows with possible_crtcs restricted 27*4882a593Smuzhiyun */ 28*4882a593Smuzhiyun+add_overlay: 29*4882a593Smuzhiyun for (j = 0; j < vop2->registered_num_wins; j++) { 30*4882a593Smuzhiyun win = &vop2->win[j]; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun+ if (use_cluster != vop2_cluster_window(win)) 33*4882a593Smuzhiyun+ continue; 34*4882a593Smuzhiyun+ 35*4882a593Smuzhiyun if (win->type != DRM_PLANE_TYPE_OVERLAY) 36*4882a593Smuzhiyun continue; 37*4882a593Smuzhiyun /* 38*4882a593Smuzhiyun@@ -10011,6 +10016,11 @@ static int vop2_create_crtc(struct vop2 *vop2) 39*4882a593Smuzhiyun DRM_WARN("failed to init overlay plane %s\n", win->name); 40*4882a593Smuzhiyun } 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun+ if (!use_cluster) { 43*4882a593Smuzhiyun+ use_cluster = true; 44*4882a593Smuzhiyun+ goto add_overlay; 45*4882a593Smuzhiyun+ } 46*4882a593Smuzhiyun+ 47*4882a593Smuzhiyun return registered_num_crtcs; 48*4882a593Smuzhiyun } 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun-- 51*4882a593Smuzhiyun2.20.1 52*4882a593Smuzhiyun 53