build/patch/kernel/archive/sunxi-5.15/patches.megous/drm-sun4i-Mark-one-of-the-UI-planes-as-a-cursor-one.patch

73 lines
2.7 KiB
Diff
Raw Permalink Normal View History

From ff95463b00cfa1d3399df8a7ed15eadf03bc10ce Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megous@megous.com>
Date: Tue, 3 Sep 2019 12:26:59 +0200
Subject: [PATCH 313/478] drm: sun4i: Mark one of the UI planes as a cursor one
Signed-off-by: Ondrej Jirman <megous@megous.com>
---
drivers/gpu/drm/sun4i/sun8i_mixer.c | 7 ++++++-
drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 7 ++-----
drivers/gpu/drm/sun4i/sun8i_ui_layer.h | 3 ++-
3 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c
index 7fd130744052..681adda35418 100644
--- a/drivers/gpu/drm/sun4i/sun8i_mixer.c
+++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c
@@ -315,8 +315,13 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm,
for (i = 0; i < mixer->cfg->ui_num; i++) {
struct sun8i_ui_layer *layer;
+ enum drm_plane_type type = DRM_PLANE_TYPE_OVERLAY;
+ if (i == 0)
+ type = DRM_PLANE_TYPE_PRIMARY;
+ else if (i == (mixer->cfg->ui_num - 1))
+ type = DRM_PLANE_TYPE_CURSOR;
- layer = sun8i_ui_layer_init_one(drm, mixer, i);
+ layer = sun8i_ui_layer_init_one(drm, mixer, i, type);
if (IS_ERR(layer)) {
dev_err(drm->dev, "Couldn't initialize %s plane\n",
i ? "overlay" : "primary");
diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
index 9c406f3896f6..ed0d6b2910e5 100644
--- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
+++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c
@@ -404,9 +404,9 @@ static const uint64_t sun8i_layer_modifiers[] = {
struct sun8i_ui_layer *sun8i_ui_layer_init_one(struct drm_device *drm,
struct sun8i_mixer *mixer,
- int index)
+ int index,
+ enum drm_plane_type type)
{
- enum drm_plane_type type = DRM_PLANE_TYPE_OVERLAY;
int channel = mixer->cfg->vi_num + index;
struct sun8i_ui_layer *layer;
unsigned int plane_cnt;
@@ -416,9 +416,6 @@ struct sun8i_ui_layer *sun8i_ui_layer_init_one(struct drm_device *drm,
if (!layer)
return ERR_PTR(-ENOMEM);
- if (index == 0)
- type = DRM_PLANE_TYPE_PRIMARY;
-
/* possible crtcs are set later */
ret = drm_universal_plane_init(drm, &layer->plane, 0,
&sun8i_ui_layer_funcs,
diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h
index e3e32ee1178d..552703b9fe3c 100644
--- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.h
+++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.h
@@ -63,5 +63,6 @@ plane_to_sun8i_ui_layer(struct drm_plane *plane)
struct sun8i_ui_layer *sun8i_ui_layer_init_one(struct drm_device *drm,
struct sun8i_mixer *mixer,
- int index);
+ int index,
+ enum drm_plane_type type);
#endif /* _SUN8I_UI_LAYER_H_ */
--
2.35.3