1From b4a3db1e30446eea1b2650101e410e47afc51bb6 Mon Sep 17 00:00:00 2001
2From: Jeffy Chen <jeffy.chen@rock-chips.com>
3Date: Fri, 1 Apr 2022 22:17:07 +0800
4Subject: [PATCH 3/3] HACK: drm: rockchip: Prefer non-cluster overlay planes
5
6Change-Id: I65d40b50c96921b644de4601188c0518c99c9d72
7Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
8---
9 drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 10 ++++++++++
10 1 file changed, 10 insertions(+)
11
12diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
13index 919bff6b9ff0..973631735fb8 100644
14--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
15+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
16@@ -7043,6 +7043,7 @@ static int vop2_create_crtc(struct vop2 *vop2)
17 	bool be_used_for_primary_plane = false;
18 	bool find_primary_plane = false;
19 	bool bootloader_initialized = false;
20+	bool use_cluster = false;
21
22 	/* all planes can attach to any crtc */
23 	possible_crtcs = (1 << vop2_data->nr_vps) - 1;
24@@ -7234,9 +7235,13 @@ static int vop2_create_crtc(struct vop2 *vop2)
25 	 * create overlay planes of the leftover overlay win
26 	 * Create drm_planes for overlay windows with possible_crtcs restricted
27 	 */
28+add_overlay:
29 	for (j = 0; j < vop2->registered_num_wins; j++) {
30 		win = &vop2->win[j];
31
32+		if (use_cluster != vop2_cluster_window(win))
33+			continue;
34+
35 		if (win->type != DRM_PLANE_TYPE_OVERLAY)
36 			continue;
37 		/*
38@@ -7265,6 +7270,11 @@ static int vop2_create_crtc(struct vop2 *vop2)
39 			DRM_WARN("failed to init overlay plane %s, ret:%d\n", win->name, ret);
40 	}
41
42+	if (!use_cluster) {
43+		use_cluster = true;
44+		goto add_overlay;
45+	}
46+
47 	return registered_num_crtcs;
48 }
49
50--
512.20.1
52
53