aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.4/950-0541-drm-vc4-plane-Move-planes-creation-to-its-own-functi.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0541-drm-vc4-plane-Move-planes-creation-to-its-own-functi.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.4/950-0541-drm-vc4-plane-Move-planes-creation-to-its-own-functi.patch125
1 files changed, 0 insertions, 125 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0541-drm-vc4-plane-Move-planes-creation-to-its-own-functi.patch b/target/linux/bcm27xx/patches-5.4/950-0541-drm-vc4-plane-Move-planes-creation-to-its-own-functi.patch
deleted file mode 100644
index 025efee0e3..0000000000
--- a/target/linux/bcm27xx/patches-5.4/950-0541-drm-vc4-plane-Move-planes-creation-to-its-own-functi.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From ac2c812856c3a496354b9f19d0a43458e108844d Mon Sep 17 00:00:00 2001
-From: Maxime Ripard <maxime@cerno.tech>
-Date: Thu, 6 Feb 2020 14:32:57 +0100
-Subject: [PATCH] drm/vc4: plane: Move planes creation to its own
- function
-
-The planes so far were created as part of the CRTC binding code with
-each planes created associated only to one CRTC. However, the hardware
-in the vc4 doesn't really have such constraint and can be used with any
-CRTC.
-
-In order to rework this, let's first move the overlay and cursor planes
-creation to a function of its own.
-
-Signed-off-by: Maxime Ripard <maxime@cerno.tech>
----
- drivers/gpu/drm/vc4/vc4_crtc.c | 33 ++++------------------------
- drivers/gpu/drm/vc4/vc4_drv.h | 2 ++
- drivers/gpu/drm/vc4/vc4_plane.c | 38 +++++++++++++++++++++++++++++++++
- 3 files changed, 44 insertions(+), 29 deletions(-)
-
---- a/drivers/gpu/drm/vc4/vc4_crtc.c
-+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
-@@ -1142,7 +1142,7 @@ static int vc4_crtc_bind(struct device *
- struct drm_device *drm = dev_get_drvdata(master);
- struct vc4_crtc *vc4_crtc;
- struct drm_crtc *crtc;
-- struct drm_plane *primary_plane, *cursor_plane, *destroy_plane, *temp;
-+ struct drm_plane *primary_plane, *destroy_plane, *temp;
- const struct of_device_id *match;
- int ret, i;
-
-@@ -1190,34 +1190,9 @@ static int vc4_crtc_bind(struct device *
- */
- drm_crtc_enable_color_mgmt(crtc, 0, true, crtc->gamma_size);
-
-- /* 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;
--
-- plane->possible_crtcs = drm_crtc_mask(crtc);
-- }
--
-- /* Set up the legacy cursor after overlay initialization,
-- * since we overlay planes on the CRTC in the order they were
-- * initialized.
-- */
-- cursor_plane = vc4_plane_init(drm, DRM_PLANE_TYPE_CURSOR);
-- if (!IS_ERR(cursor_plane)) {
-- cursor_plane->possible_crtcs = drm_crtc_mask(crtc);
-- crtc->cursor = cursor_plane;
-- }
-+ ret = vc4_plane_create_additional_planes(drm, crtc);
-+ if (ret)
-+ goto err_destroy_planes;
-
- vc4_crtc_get_cob_allocation(vc4_crtc);
-
---- a/drivers/gpu/drm/vc4/vc4_drv.h
-+++ b/drivers/gpu/drm/vc4/vc4_drv.h
-@@ -855,6 +855,8 @@ int vc4_kms_load(struct drm_device *dev)
- /* vc4_plane.c */
- struct drm_plane *vc4_plane_init(struct drm_device *dev,
- enum drm_plane_type type);
-+int vc4_plane_create_additional_planes(struct drm_device *dev,
-+ struct drm_crtc *crtc);
- u32 vc4_plane_write_dlist(struct drm_plane *plane, u32 __iomem *dlist);
- u32 vc4_plane_dlist_size(const struct drm_plane_state *state);
- void vc4_plane_async_set_fb(struct drm_plane *plane,
---- a/drivers/gpu/drm/vc4/vc4_plane.c
-+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -1447,3 +1447,41 @@ struct drm_plane *vc4_plane_init(struct
-
- return plane;
- }
-+
-+int vc4_plane_create_additional_planes(struct drm_device *drm,
-+ struct drm_crtc *crtc)
-+{
-+ struct drm_plane *cursor_plane;
-+ unsigned int i;
-+
-+ /* 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;
-+
-+ plane->possible_crtcs = drm_crtc_mask(crtc);
-+ }
-+
-+ /* Set up the legacy cursor after overlay initialization,
-+ * since we overlay planes on the CRTC in the order they were
-+ * initialized.
-+ */
-+ cursor_plane = vc4_plane_init(drm, DRM_PLANE_TYPE_CURSOR);
-+ if (!IS_ERR(cursor_plane)) {
-+ cursor_plane->possible_crtcs = drm_crtc_mask(crtc);
-+ crtc->cursor = cursor_plane;
-+ }
-+
-+ return 0;
-+}