]> Gentwo Git Trees - linux/.git/commitdiff
drm/vkms: Pass plane_cfg to plane initialization
authorLouis Chauvet <louis.chauvet@bootlin.com>
Sat, 15 Nov 2025 00:01:39 +0000 (17:01 -0700)
committerSimon Ser <contact@emersion.fr>
Wed, 26 Nov 2025 22:03:32 +0000 (23:03 +0100)
As plane can have many parameters, directly pass the plane
configuration to the init function.

Reviewed-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>
Signed-off-by: Simon Ser <contact@emersion.fr>
Link: https://patch.msgid.link/20251115000237.3561250-15-alex.hung@amd.com
drivers/gpu/drm/vkms/vkms_drv.h
drivers/gpu/drm/vkms/vkms_output.c
drivers/gpu/drm/vkms/vkms_plane.c

index db260df1d4f64a3a778d32939dd09d3dee35a4b7..880a295ebd1fb198b4e446f317ecc634ffbc2f9f 100644 (file)
@@ -225,6 +225,7 @@ struct vkms_output {
 };
 
 struct vkms_config;
+struct vkms_config_plane;
 
 /**
  * struct vkms_device - Description of a VKMS device
@@ -298,10 +299,10 @@ int vkms_output_init(struct vkms_device *vkmsdev);
  * vkms_plane_init() - Initialize a plane
  *
  * @vkmsdev: VKMS device containing the plane
- * @type: type of plane to initialize
+ * @plane_cfg: plane configuration
  */
 struct vkms_plane *vkms_plane_init(struct vkms_device *vkmsdev,
-                                  enum drm_plane_type type);
+                                  struct vkms_config_plane *plane_cfg);
 
 /* CRC Support */
 const char *const *vkms_get_crc_sources(struct drm_crtc *crtc,
index 81d17b7dc0eb01a6d1c84a5d66bb927156cffb34..86ce07a617f52e31804ce4b83e28d0c315d83201 100644 (file)
@@ -20,11 +20,7 @@ int vkms_output_init(struct vkms_device *vkmsdev)
                return -EINVAL;
 
        vkms_config_for_each_plane(vkmsdev->config, plane_cfg) {
-               enum drm_plane_type type;
-
-               type = vkms_config_plane_get_type(plane_cfg);
-
-               plane_cfg->plane = vkms_plane_init(vkmsdev, type);
+               plane_cfg->plane = vkms_plane_init(vkmsdev, plane_cfg);
                if (IS_ERR(plane_cfg->plane)) {
                        DRM_DEV_ERROR(dev->dev, "Failed to init vkms plane\n");
                        return PTR_ERR(plane_cfg->plane);
index 89a9fc91e059a15ac34566f54aa87ec1e0a0f3f5..58815588588f309de5a6955ef44ddd8594ae6911 100644 (file)
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0+
 
+#include "vkms_config.h"
 #include <linux/iosys-map.h>
 
 #include <drm/drm_atomic.h>
@@ -218,7 +219,7 @@ static const struct drm_plane_helper_funcs vkms_plane_helper_funcs = {
 };
 
 struct vkms_plane *vkms_plane_init(struct vkms_device *vkmsdev,
-                                  enum drm_plane_type type)
+                                  struct vkms_config_plane *plane_cfg)
 {
        struct drm_device *dev = &vkmsdev->drm;
        struct vkms_plane *plane;
@@ -226,7 +227,8 @@ struct vkms_plane *vkms_plane_init(struct vkms_device *vkmsdev,
        plane = drmm_universal_plane_alloc(dev, struct vkms_plane, base, 0,
                                           &vkms_plane_funcs,
                                           vkms_formats, ARRAY_SIZE(vkms_formats),
-                                          NULL, type, NULL);
+                                          NULL, vkms_config_plane_get_type(plane_cfg),
+                                          NULL);
        if (IS_ERR(plane))
                return plane;