mirror of
https://github.com/LibreELEC/LibreELEC.tv
synced 2025-09-24 19:46:01 +07:00
76 lines
2.6 KiB
Diff
76 lines
2.6 KiB
Diff
From 3fc7233c5a98ef8000fdfe3467fd890664b5f72a Mon Sep 17 00:00:00 2001
|
|
From: Jonas Karlman <jonas@kwiboo.se>
|
|
Date: Fri, 9 Oct 2020 15:24:53 +0000
|
|
Subject: [PATCH 28/59] WIP/1000: drm/rockchip: vop: create planes in window
|
|
order
|
|
|
|
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
|
---
|
|
drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 36 +++------------------
|
|
1 file changed, 4 insertions(+), 32 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
|
index 8e0fcc680115..ac90ceb894ca 100644
|
|
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
|
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
|
|
@@ -1949,19 +1949,10 @@ static int vop_create_crtc(struct vop *vop)
|
|
int ret;
|
|
int i;
|
|
|
|
- /*
|
|
- * Create drm_plane for primary and cursor planes first, since we need
|
|
- * to pass them to drm_crtc_init_with_planes, which sets the
|
|
- * "possible_crtcs" to the newly initialized crtc.
|
|
- */
|
|
for (i = 0; i < vop_data->win_size; i++) {
|
|
struct vop_win *vop_win = &vop->win[i];
|
|
const struct vop_win_data *win_data = vop_win->data;
|
|
|
|
- if (win_data->type != DRM_PLANE_TYPE_PRIMARY &&
|
|
- win_data->type != DRM_PLANE_TYPE_CURSOR)
|
|
- continue;
|
|
-
|
|
ret = drm_universal_plane_init(vop->drm_dev, &vop_win->base,
|
|
0, &vop_plane_funcs,
|
|
win_data->phy->data_formats,
|
|
@@ -1994,32 +1985,13 @@ static int vop_create_crtc(struct vop *vop)
|
|
drm_crtc_enable_color_mgmt(crtc, 0, false, vop_data->lut_size);
|
|
}
|
|
|
|
- /*
|
|
- * Create drm_planes for overlay windows with possible_crtcs restricted
|
|
- * to the newly created crtc.
|
|
- */
|
|
+ /* Set possible_crtcs to the newly created crtc for overlay windows */
|
|
for (i = 0; i < vop_data->win_size; i++) {
|
|
struct vop_win *vop_win = &vop->win[i];
|
|
- const struct vop_win_data *win_data = vop_win->data;
|
|
- unsigned long possible_crtcs = drm_crtc_mask(crtc);
|
|
-
|
|
- if (win_data->type != DRM_PLANE_TYPE_OVERLAY)
|
|
- continue;
|
|
|
|
- ret = drm_universal_plane_init(vop->drm_dev, &vop_win->base,
|
|
- possible_crtcs,
|
|
- &vop_plane_funcs,
|
|
- win_data->phy->data_formats,
|
|
- win_data->phy->nformats,
|
|
- win_data->phy->format_modifiers,
|
|
- win_data->type, NULL);
|
|
- if (ret) {
|
|
- DRM_DEV_ERROR(vop->dev, "failed to init overlay %d\n",
|
|
- ret);
|
|
- goto err_cleanup_crtc;
|
|
- }
|
|
- drm_plane_helper_add(&vop_win->base, &plane_helper_funcs);
|
|
- vop_plane_add_properties(&vop_win->base, win_data);
|
|
+ plane = &vop_win->base;
|
|
+ if (plane->type == DRM_PLANE_TYPE_OVERLAY)
|
|
+ plane->possible_crtcs = drm_crtc_mask(crtc);
|
|
}
|
|
|
|
port = of_get_child_by_name(dev->of_node, "port");
|
|
--
|
|
2.34.1
|
|
|