diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0543-drm-vc4-plane-Register-all-the-planes-at-once.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0543-drm-vc4-plane-Register-all-the-planes-at-once.patch | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0543-drm-vc4-plane-Register-all-the-planes-at-once.patch b/target/linux/bcm27xx/patches-5.4/950-0543-drm-vc4-plane-Register-all-the-planes-at-once.patch deleted file mode 100644 index 28277f1e56..0000000000 --- a/target/linux/bcm27xx/patches-5.4/950-0543-drm-vc4-plane-Register-all-the-planes-at-once.patch +++ /dev/null @@ -1,128 +0,0 @@ -From bb2b068209d73b320cac7222a3b8ecef9b0dcc9a Mon Sep 17 00:00:00 2001 -From: Maxime Ripard <maxime@cerno.tech> -Date: Thu, 6 Feb 2020 14:46:14 +0100 -Subject: [PATCH] drm/vc4: plane: Register all the planes at once - -Instead of creating planes for each CRTC, we eventually want to create all -the planes for each CRTCs. - -In order to make that more convenient, let's iterate on the CRTCs in the -plane creation function instead of its caller. - -Signed-off-by: Maxime Ripard <maxime@cerno.tech> ---- - drivers/gpu/drm/vc4/vc4_drv.c | 9 ++---- - drivers/gpu/drm/vc4/vc4_drv.h | 3 +- - drivers/gpu/drm/vc4/vc4_plane.c | 54 +++++++++++++++++---------------- - 3 files changed, 32 insertions(+), 34 deletions(-) - ---- a/drivers/gpu/drm/vc4/vc4_drv.c -+++ b/drivers/gpu/drm/vc4/vc4_drv.c -@@ -253,7 +253,6 @@ static int vc4_drm_bind(struct device *d - { - struct platform_device *pdev = to_platform_device(dev); - struct drm_device *drm; -- struct drm_crtc *crtc; - struct vc4_dev *vc4; - struct device_node *node; - int ret = 0; -@@ -292,11 +291,9 @@ static int vc4_drm_bind(struct device *d - if (ret) - goto gem_destroy; - -- drm_for_each_crtc(crtc, drm) { -- ret = vc4_plane_create_additional_planes(drm, crtc); -- if (ret) -- continue; -- } -+ ret = vc4_plane_create_additional_planes(drm); -+ if (ret) -+ goto unbind_all; - - drm_fb_helper_remove_conflicting_framebuffers(NULL, "vc4drmfb", false); - ---- a/drivers/gpu/drm/vc4/vc4_drv.h -+++ b/drivers/gpu/drm/vc4/vc4_drv.h -@@ -855,8 +855,7 @@ 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); -+int vc4_plane_create_additional_planes(struct drm_device *dev); - 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 -@@ -1448,39 +1448,41 @@ struct drm_plane *vc4_plane_init(struct - return plane; - } - --int vc4_plane_create_additional_planes(struct drm_device *drm, -- struct drm_crtc *crtc) -+int vc4_plane_create_additional_planes(struct drm_device *drm) - { - struct drm_plane *cursor_plane; -+ struct drm_crtc *crtc; - 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; -+ 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); -+ -+ 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; |