f07e572f64
bcm2708: boot tested on RPi B+ v1.2 bcm2709: boot tested on RPi 3B v1.2 and RPi 4B v1.1 4G bcm2710: boot tested on RPi 3B v1.2 bcm2711: boot tested on RPi 4B v1.1 4G Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
71 lines
2.7 KiB
Diff
71 lines
2.7 KiB
Diff
From b65167e0bcce67f2e7b7e813dba536f1cca3ef9f Mon Sep 17 00:00:00 2001
|
|
From: Maxime Ripard <maxime@cerno.tech>
|
|
Date: Thu, 6 Feb 2020 14:50:06 +0100
|
|
Subject: [PATCH] drm/vc4: plane: Create overlays for any CRTC
|
|
|
|
Now that we have everything in place, we can now register all the overlay
|
|
planes that can be assigned to all the CRTCs.
|
|
|
|
This has two side effects:
|
|
|
|
- The number of overlay planes is reduced from 24 to 8. This is temporary
|
|
and will be increased again in the next patch.
|
|
|
|
- The ID of the various planes is changed again, and we will now have all
|
|
the primary planes, then all the overlay planes and finally the cursor
|
|
planes. This shouldn't cause any issue since the ordering between
|
|
primary, overlay and cursor planes is preserved.
|
|
|
|
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
|
---
|
|
drivers/gpu/drm/vc4/vc4_plane.c | 35 +++++++++++++++++----------------
|
|
1 file changed, 18 insertions(+), 17 deletions(-)
|
|
|
|
--- a/drivers/gpu/drm/vc4/vc4_plane.c
|
|
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
|
|
@@ -1454,26 +1454,27 @@ int vc4_plane_create_additional_planes(s
|
|
struct drm_crtc *crtc;
|
|
unsigned int i;
|
|
|
|
- drm_for_each_crtc(crtc, drm) {
|
|
- /* Set up some arbitrary number of planes. We're not limited
|
|
- * by a set number of physical registers, just the space in
|
|
- * the HVS (16k) and how small an plane can be (28 bytes).
|
|
- * However, each plane we set up takes up some memory, and
|
|
- * increases the cost of looping over planes, which atomic
|
|
- * modesetting does quite a bit. As a result, we pick a
|
|
- * modest number of planes to expose, that should hopefully
|
|
- * still cover any sane usecase.
|
|
- */
|
|
- for (i = 0; i < 8; i++) {
|
|
- struct drm_plane *plane =
|
|
- vc4_plane_init(drm, DRM_PLANE_TYPE_OVERLAY);
|
|
+ /* Set up some arbitrary number of planes. We're not limited
|
|
+ * by a set number of physical registers, just the space in
|
|
+ * the HVS (16k) and how small an plane can be (28 bytes).
|
|
+ * However, each plane we set up takes up some memory, and
|
|
+ * increases the cost of looping over planes, which atomic
|
|
+ * modesetting does quite a bit. As a result, we pick a
|
|
+ * modest number of planes to expose, that should hopefully
|
|
+ * still cover any sane usecase.
|
|
+ */
|
|
+ for (i = 0; i < 8; i++) {
|
|
+ struct drm_plane *plane =
|
|
+ vc4_plane_init(drm, DRM_PLANE_TYPE_OVERLAY);
|
|
|
|
- if (IS_ERR(plane))
|
|
- continue;
|
|
+ if (IS_ERR(plane))
|
|
+ continue;
|
|
|
|
- plane->possible_crtcs = drm_crtc_mask(crtc);
|
|
- }
|
|
+ plane->possible_crtcs =
|
|
+ GENMASK(drm->mode_config.num_crtc - 1, 0);
|
|
+ }
|
|
|
|
+ drm_for_each_crtc(crtc, drm) {
|
|
/* Set up the legacy cursor after overlay initialization,
|
|
* since we overlay planes on the CRTC in the order they were
|
|
* initialized.
|