]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/simpledrm: Run DRM default client setup
authorThomas Zimmermann <tzimmermann@suse.de>
Tue, 24 Sep 2024 07:12:56 +0000 (09:12 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Thu, 26 Sep 2024 07:31:28 +0000 (09:31 +0200)
Call drm_client_setup() to run the kernel's default client setup
for DRM. Set fbdev_probe in struct drm_driver, so that the client
setup can start the common fbdev client.

v5:
- select DRM_CLIENT_SELECTION

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240924071734.98201-59-tzimmermann@suse.de
drivers/gpu/drm/tiny/Kconfig
drivers/gpu/drm/tiny/simpledrm.c

index 02db304c0cac3a16590b1e271ed2b6ab9412f100..f542aae334d58884c7a47723f0b46b349d18776e 100644 (file)
@@ -87,6 +87,7 @@ config DRM_SIMPLEDRM
        tristate "Simple framebuffer driver"
        depends on DRM && MMU
        select APERTURE_HELPERS
+       select DRM_CLIENT_SELECTION
        select DRM_GEM_SHMEM_HELPER
        select DRM_KMS_HELPER
        help
index d19e102894282fcd94e242b4b09473683eb0a345..484901e5e2f483c22ddc593cbf22b0e65e0c9dfb 100644 (file)
@@ -12,6 +12,7 @@
 #include <drm/drm_aperture.h>
 #include <drm/drm_atomic.h>
 #include <drm/drm_atomic_state_helper.h>
+#include <drm/drm_client_setup.h>
 #include <drm/drm_connector.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_damage_helper.h>
@@ -1009,6 +1010,7 @@ DEFINE_DRM_GEM_FOPS(simpledrm_fops);
 
 static struct drm_driver simpledrm_driver = {
        DRM_GEM_SHMEM_DRIVER_OPS,
+       DRM_FBDEV_SHMEM_DRIVER_OPS,
        .name                   = DRIVER_NAME,
        .desc                   = DRIVER_DESC,
        .date                   = DRIVER_DATE,
@@ -1026,7 +1028,6 @@ static int simpledrm_probe(struct platform_device *pdev)
 {
        struct simpledrm_device *sdev;
        struct drm_device *dev;
-       unsigned int color_mode;
        int ret;
 
        sdev = simpledrm_device_create(&simpledrm_driver, pdev);
@@ -1038,11 +1039,7 @@ static int simpledrm_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
-       color_mode = drm_format_info_bpp(sdev->format, 0);
-       if (color_mode == 16)
-               color_mode = sdev->format->depth; // can be 15 or 16
-
-       drm_fbdev_shmem_setup(dev, color_mode);
+       drm_client_setup(dev, sdev->format);
 
        return 0;
 }