Commit 70d2850e authored by Maxime Ripard's avatar Maxime Ripard

drm/sun4i: Remove the plane description structure

The plane description structure was mostly needed to differentiate the
formats usable on the primary plane (because of its lowest position), and
assign the pipes. Now that both are dynamically checked and assigned, we
can remove the static definition.
Reviewed-by: default avatarChen-Yu Tsai <wens@csie.org>
Signed-off-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
Link: https://patchwork.freedesktop.org/patch/msgid/6b09e3698e692c3338f70a5ae1e5a580f9dd08ee.1518802627.git-series.maxime.ripard@bootlin.com
parent 8f1f2553
...@@ -19,13 +19,6 @@ ...@@ -19,13 +19,6 @@
#include "sun4i_layer.h" #include "sun4i_layer.h"
#include "sunxi_engine.h" #include "sunxi_engine.h"
struct sun4i_plane_desc {
enum drm_plane_type type;
u8 pipe;
const uint32_t *formats;
uint32_t nformats;
};
static void sun4i_backend_layer_reset(struct drm_plane *plane) static void sun4i_backend_layer_reset(struct drm_plane *plane)
{ {
struct sun4i_layer *layer = plane_to_sun4i_layer(plane); struct sun4i_layer *layer = plane_to_sun4i_layer(plane);
...@@ -133,14 +126,7 @@ static const struct drm_plane_funcs sun4i_backend_layer_funcs = { ...@@ -133,14 +126,7 @@ static const struct drm_plane_funcs sun4i_backend_layer_funcs = {
.update_plane = drm_atomic_helper_update_plane, .update_plane = drm_atomic_helper_update_plane,
}; };
static const uint32_t sun4i_backend_layer_formats_primary[] = { static const uint32_t sun4i_backend_layer_formats[] = {
DRM_FORMAT_ARGB8888,
DRM_FORMAT_RGB888,
DRM_FORMAT_RGB565,
DRM_FORMAT_XRGB8888,
};
static const uint32_t sun4i_backend_layer_formats_overlay[] = {
DRM_FORMAT_ARGB8888, DRM_FORMAT_ARGB8888,
DRM_FORMAT_ARGB4444, DRM_FORMAT_ARGB4444,
DRM_FORMAT_ARGB1555, DRM_FORMAT_ARGB1555,
...@@ -151,24 +137,9 @@ static const uint32_t sun4i_backend_layer_formats_overlay[] = { ...@@ -151,24 +137,9 @@ static const uint32_t sun4i_backend_layer_formats_overlay[] = {
DRM_FORMAT_XRGB8888, DRM_FORMAT_XRGB8888,
}; };
static const struct sun4i_plane_desc sun4i_backend_planes[] = {
{
.type = DRM_PLANE_TYPE_PRIMARY,
.pipe = 0,
.formats = sun4i_backend_layer_formats_primary,
.nformats = ARRAY_SIZE(sun4i_backend_layer_formats_primary),
},
{
.type = DRM_PLANE_TYPE_OVERLAY,
.pipe = 1,
.formats = sun4i_backend_layer_formats_overlay,
.nformats = ARRAY_SIZE(sun4i_backend_layer_formats_overlay),
},
};
static struct sun4i_layer *sun4i_layer_init_one(struct drm_device *drm, static struct sun4i_layer *sun4i_layer_init_one(struct drm_device *drm,
struct sun4i_backend *backend, struct sun4i_backend *backend,
const struct sun4i_plane_desc *plane) enum drm_plane_type type)
{ {
struct sun4i_layer *layer; struct sun4i_layer *layer;
int ret; int ret;
...@@ -180,8 +151,9 @@ static struct sun4i_layer *sun4i_layer_init_one(struct drm_device *drm, ...@@ -180,8 +151,9 @@ static struct sun4i_layer *sun4i_layer_init_one(struct drm_device *drm,
/* possible crtcs are set later */ /* possible crtcs are set later */
ret = drm_universal_plane_init(drm, &layer->plane, 0, ret = drm_universal_plane_init(drm, &layer->plane, 0,
&sun4i_backend_layer_funcs, &sun4i_backend_layer_funcs,
plane->formats, plane->nformats, sun4i_backend_layer_formats,
NULL, plane->type, NULL); ARRAY_SIZE(sun4i_backend_layer_formats),
NULL, type, NULL);
if (ret) { if (ret) {
dev_err(drm->dev, "Couldn't initialize layer\n"); dev_err(drm->dev, "Couldn't initialize layer\n");
return ERR_PTR(ret); return ERR_PTR(ret);
...@@ -207,11 +179,11 @@ struct drm_plane **sun4i_layers_init(struct drm_device *drm, ...@@ -207,11 +179,11 @@ struct drm_plane **sun4i_layers_init(struct drm_device *drm,
if (!planes) if (!planes)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
for (i = 0; i < ARRAY_SIZE(sun4i_backend_planes); i++) { for (i = 0; i < SUN4I_BACKEND_NUM_LAYERS; i++) {
const struct sun4i_plane_desc *plane = &sun4i_backend_planes[i]; enum drm_plane_type type = i ? DRM_PLANE_TYPE_OVERLAY : DRM_PLANE_TYPE_PRIMARY;
struct sun4i_layer *layer; struct sun4i_layer *layer;
layer = sun4i_layer_init_one(drm, backend, plane); layer = sun4i_layer_init_one(drm, backend, type);
if (IS_ERR(layer)) { if (IS_ERR(layer)) {
dev_err(drm->dev, "Couldn't initialize %s plane\n", dev_err(drm->dev, "Couldn't initialize %s plane\n",
i ? "overlay" : "primary"); i ? "overlay" : "primary");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment