mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-29 10:08:59 +00:00
bcaabe6d05
Similar version was upstreamed: bcm27xx/patches-5.4/950-0392-tty-amba-pl011-Add-un-throttle-support.patch Manually adapted: ipq806x/patches-5.4/0063-2-tsens-support-configurable-interrupts.patch layerscape/patches-5.4/301-arch-0008-arm-add-new-non-shareable-ioremap.patch Compile-tested: x86/64 Run-tested: x86/64 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
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
|
|
@@ -1450,26 +1450,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.
|