]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/sun4i: de2: Initialize layer fields earlier
authorJernej Skrabec <jernej.skrabec@gmail.com>
Tue, 4 Nov 2025 18:09:15 +0000 (19:09 +0100)
committerChen-Yu Tsai <wens@kernel.org>
Wed, 12 Nov 2025 09:18:21 +0000 (17:18 +0800)
drm_universal_plane_init() can already call some callbacks, like
format_mod_supported, during initialization. Because of that, fields
should be initialized beforehand.

Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Tested-by: Ryan Walklin <ryan@testtoast.com>
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Link: https://patch.msgid.link/20251104180942.61538-4-jernej.skrabec@gmail.com
Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
drivers/gpu/drm/sun4i/sun8i_ui_layer.c
drivers/gpu/drm/sun4i/sun8i_vi_layer.c

index 6108dda1e414d2fb0d9e7f4618360379d30e52d2..12c138165c35a15e8a41543a4fee1d34b2ad4084 100644 (file)
@@ -304,6 +304,11 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm,
        if (!layer)
                return ERR_PTR(-ENOMEM);
 
+       layer->mixer = mixer;
+       layer->type = SUN8I_LAYER_TYPE_UI;
+       layer->channel = channel;
+       layer->overlay = 0;
+
        if (index == 0)
                type = DRM_PLANE_TYPE_PRIMARY;
 
@@ -334,10 +339,6 @@ struct sun8i_layer *sun8i_ui_layer_init_one(struct drm_device *drm,
        }
 
        drm_plane_helper_add(&layer->plane, &sun8i_ui_layer_helper_funcs);
-       layer->mixer = mixer;
-       layer->type = SUN8I_LAYER_TYPE_UI;
-       layer->channel = channel;
-       layer->overlay = 0;
 
        return layer;
 }
index de2fe1942840474fcacb639459a807ec3542a959..2eec23a2c0d42dfd021ca53d31ba3d37060476be 100644 (file)
@@ -485,6 +485,11 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm,
        if (!layer)
                return ERR_PTR(-ENOMEM);
 
+       layer->mixer = mixer;
+       layer->type = SUN8I_LAYER_TYPE_VI;
+       layer->channel = index;
+       layer->overlay = 0;
+
        if (mixer->cfg->de_type >= SUN8I_MIXER_DE3) {
                formats = sun8i_vi_layer_de3_formats;
                format_count = ARRAY_SIZE(sun8i_vi_layer_de3_formats);
@@ -543,10 +548,6 @@ struct sun8i_layer *sun8i_vi_layer_init_one(struct drm_device *drm,
        }
 
        drm_plane_helper_add(&layer->plane, &sun8i_vi_layer_helper_funcs);
-       layer->mixer = mixer;
-       layer->type = SUN8I_LAYER_TYPE_VI;
-       layer->channel = index;
-       layer->overlay = 0;
 
        return layer;
 }