Skip to content

Commit 4fa45b0

Browse files
jernejskwens
authored andcommitted
drm/sun4i: layer: move num of planes calc out of layer code
With DE33, number of planes no longer depends on mixer because layers are shared between all mixers. Get this value via parameter, so DE specific code can fill in proper value. Reviewed-by: Chen-Yu Tsai <wens@kernel.org> Tested-by: Ryan Walklin <ryan@testtoast.com> Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com> Link: https://patch.msgid.link/20251104180942.61538-16-jernej.skrabec@gmail.com Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
1 parent 32ca21b commit 4fa45b0

5 files changed

Lines changed: 14 additions & 15 deletions

File tree

drivers/gpu/drm/sun4i/sun8i_mixer.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -316,12 +316,11 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm,
316316
{
317317
struct drm_plane **planes;
318318
struct sun8i_mixer *mixer = engine_to_sun8i_mixer(engine);
319+
int plane_cnt = mixer->cfg->ui_num + mixer->cfg->vi_num;
319320
enum drm_plane_type type;
320321
int i;
321322

322-
planes = devm_kcalloc(drm->dev,
323-
mixer->cfg->vi_num + mixer->cfg->ui_num + 1,
324-
sizeof(*planes), GFP_KERNEL);
323+
planes = devm_kcalloc(drm->dev, plane_cnt, sizeof(*planes), GFP_KERNEL);
325324
if (!planes)
326325
return ERR_PTR(-ENOMEM);
327326

@@ -333,7 +332,7 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm,
333332
else
334333
type = DRM_PLANE_TYPE_OVERLAY;
335334

336-
layer = sun8i_vi_layer_init_one(drm, mixer, type, i);
335+
layer = sun8i_vi_layer_init_one(drm, mixer, type, i, plane_cnt);
337336
if (IS_ERR(layer)) {
338337
dev_err(drm->dev,
339338
"Couldn't initialize overlay plane\n");
@@ -352,7 +351,8 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm,
352351
else
353352
type = DRM_PLANE_TYPE_OVERLAY;
354353

355-
layer = sun8i_ui_layer_init_one(drm, mixer, type, index);
354+
layer = sun8i_ui_layer_init_one(drm, mixer, type, index,
355+
plane_cnt);
356356
if (IS_ERR(layer)) {
357357
dev_err(drm->dev, "Couldn't initialize %s plane\n",
358358
i ? "overlay" : "primary");

drivers/gpu/drm/sun4i/sun8i_ui_layer.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -268,10 +268,10 @@ static const uint64_t sun8i_layer_modifiers[] = {
268268
struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm,
269269
struct sun8i_mixer *mixer,
270270
enum drm_plane_type type,
271-
int index)
271+
int index,
272+
int plane_cnt)
272273
{
273274
struct sun8i_layer *layer;
274-
unsigned int plane_cnt;
275275
int ret;
276276

277277
layer = devm_kzalloc(drm->dev, sizeof(*layer), GFP_KERNEL);
@@ -294,8 +294,6 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm,
294294
return ERR_PTR(ret);
295295
}
296296

297-
plane_cnt = mixer->cfg->ui_num + mixer->cfg->vi_num;
298-
299297
ret = drm_plane_create_alpha_property(&layer->plane);
300298
if (ret) {
301299
dev_err(drm->dev, "Couldn't add alpha property\n");

drivers/gpu/drm/sun4i/sun8i_ui_layer.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,6 @@ struct sun8i_layer;
5252
struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm,
5353
struct sun8i_mixer *mixer,
5454
enum drm_plane_type type,
55-
int index);
55+
int index,
56+
int plane_cnt);
5657
#endif /* _SUN8I_UI_LAYER_H_ */

drivers/gpu/drm/sun4i/sun8i_vi_layer.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -413,10 +413,11 @@ static const uint64_t sun8i_layer_modifiers[] = {
413413
struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm,
414414
struct sun8i_mixer *mixer,
415415
enum drm_plane_type type,
416-
int index)
416+
int index,
417+
int plane_cnt)
417418
{
418419
u32 supported_encodings, supported_ranges;
419-
unsigned int plane_cnt, format_count;
420+
unsigned int format_count;
420421
struct sun8i_layer *layer;
421422
const u32 *formats;
422423
int ret;
@@ -449,8 +450,6 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm,
449450
return ERR_PTR(ret);
450451
}
451452

452-
plane_cnt = mixer->cfg->ui_num + mixer->cfg->vi_num;
453-
454453
if (mixer->cfg->vi_num == 1 || mixer->cfg->de_type >= SUN8I_MIXER_DE3) {
455454
ret = drm_plane_create_alpha_property(&layer->plane);
456455
if (ret) {

drivers/gpu/drm/sun4i/sun8i_vi_layer.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,5 +57,6 @@ struct sun8i_layer;
5757
struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm,
5858
struct sun8i_mixer *mixer,
5959
enum drm_plane_type type,
60-
int index);
60+
int index,
61+
int plane_cnt);
6162
#endif /* _SUN8I_VI_LAYER_H_ */

0 commit comments

Comments
 (0)