]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/client: Make client support optional
authorThomas Zimmermann <tzimmermann@suse.de>
Mon, 14 Oct 2024 08:55:25 +0000 (10:55 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Fri, 18 Oct 2024 07:23:03 +0000 (09:23 +0200)
Only build client code if DRM_CLIENT has been selected. Automatially
do so if one of the default clients has been enabled. If client support
has been disabled, the helpers for client-related events are empty and
the regular client functions are not present.

Amdgpu has an internal DRM client, so it has to select DRM_CLIENT by
itself unconditionally.

v3:
- provide empty drm_client_debugfs_init() if DRM_CLIENT=n (kernel
  test robot)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: Xinhui Pan <Xinhui.Pan@amd.com>
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241014085740.582287-12-tzimmermann@suse.de
drivers/gpu/drm/Kconfig
drivers/gpu/drm/Makefile
drivers/gpu/drm/amd/amdgpu/Kconfig
drivers/gpu/drm/drm_client_event.c
drivers/gpu/drm/drm_debugfs.c
drivers/gpu/drm/drm_internal.h
include/drm/drm_client.h
include/drm/drm_client_event.h

index d4f33a9247874c2cfc0b6c30f8200947afc1abb7..5cbb0b2a4c1802b82da5dd0dbdc359f53e76f37b 100644 (file)
@@ -210,6 +210,15 @@ config DRM_DEBUG_MODESET_LOCK
 
          If in doubt, say "N".
 
+config DRM_CLIENT
+       bool
+       depends on DRM
+       help
+         Enables support for DRM clients. DRM drivers that need
+         struct drm_client_dev and its interfaces should select this
+         option. Drivers that support the default clients should
+         select DRM_CLIENT_SELECTION instead.
+
 config DRM_CLIENT_SELECTION
        bool
        depends on DRM
@@ -225,6 +234,7 @@ config DRM_CLIENT_SETUP
 config DRM_FBDEV_EMULATION
        bool "Enable legacy fbdev support for your modesetting driver"
        depends on DRM
+       select DRM_CLIENT
        select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
        default FB
        help
index 252188d2122c9eba3cc15c7bc505f7f6d56f82d9..fcb447cafe419c47a77d5476cc4588f673fa6d54 100644 (file)
@@ -40,9 +40,6 @@ drm-y := \
        drm_blend.o \
        drm_bridge.o \
        drm_cache.o \
-       drm_client.o \
-       drm_client_event.o \
-       drm_client_modeset.o \
        drm_color_mgmt.o \
        drm_connector.o \
        drm_crtc.o \
@@ -76,6 +73,10 @@ drm-y := \
        drm_vblank_work.o \
        drm_vma_manager.o \
        drm_writeback.o
+drm-$(CONFIG_DRM_CLIENT) += \
+       drm_client.o \
+       drm_client_event.o \
+       drm_client_modeset.o
 drm-$(CONFIG_DRM_LIB_RANDOM) += lib/drm_random.o
 drm-$(CONFIG_COMPAT) += drm_ioc32.o
 drm-$(CONFIG_DRM_PANEL) += drm_panel.o
index 680a94c361baacc5850300710929f406e6c2107a..41fa3377d9cf566294c6f86eedd8b31a22c77510 100644 (file)
@@ -5,6 +5,7 @@ config DRM_AMDGPU
        depends on DRM && PCI && MMU
        depends on !UML
        select FW_LOADER
+       select DRM_CLIENT
        select DRM_CLIENT_SELECTION
        select DRM_DISPLAY_DP_HELPER
        select DRM_DISPLAY_DSC_HELPER
index c52e936436723fe092e2007701c560278ebafcc1..e303de564485d6ad11234777d83fa33e3625ba32 100644 (file)
@@ -14,6 +14,8 @@
 #include <drm/drm_drv.h>
 #include <drm/drm_print.h>
 
+#include "drm_internal.h"
+
 /**
  * drm_client_dev_unregister - Unregister clients
  * @dev: DRM device
index 52783eac078e88828297efad99226f67dd1ef883..536409a35df406dae0dd7ade01b3f3d1e2c9e8f9 100644 (file)
@@ -32,7 +32,6 @@
 #include <drm/drm_atomic.h>
 #include <drm/drm_auth.h>
 #include <drm/drm_bridge.h>
-#include <drm/drm_client.h>
 #include <drm/drm_debugfs.h>
 #include <drm/drm_device.h>
 #include <drm/drm_drv.h>
index 1705bfc90b1e7f49982a82e70caafcfd3219e25d..b2b6a8e49dda46f1cb3b048ef7b28356dd3aaa4e 100644 (file)
@@ -48,6 +48,14 @@ struct drm_prime_file_private;
 struct drm_printer;
 struct drm_vblank_crtc;
 
+/* drm_client_event.c */
+#if defined(CONFIG_DRM_CLIENT)
+void drm_client_debugfs_init(struct drm_device *dev);
+#else
+static inline void drm_client_debugfs_init(struct drm_device *dev)
+{ }
+#endif
+
 /* drm_file.c */
 extern struct mutex drm_global_mutex;
 bool drm_dev_needs_global_mutex(struct drm_device *dev);
index c03c4b0f3e946c0ba329be16f74c75abed19ca07..3b13cf29ed55c636b19c6611f5236563cb0bc175 100644 (file)
@@ -236,6 +236,4 @@ int drm_client_modeset_dpms(struct drm_client_dev *client, int mode);
        drm_for_each_connector_iter(connector, iter) \
                if (connector->connector_type != DRM_MODE_CONNECTOR_WRITEBACK)
 
-void drm_client_debugfs_init(struct drm_device *dev);
-
 #endif
index 72c97d111169d8970b8daf9d5ca0211ee7dda70e..99863554b055dca49dce14a6c9e6ee83bfff8708 100644 (file)
@@ -5,10 +5,23 @@
 
 struct drm_device;
 
+#if defined(CONFIG_DRM_CLIENT)
 void drm_client_dev_unregister(struct drm_device *dev);
 void drm_client_dev_hotplug(struct drm_device *dev);
 void drm_client_dev_restore(struct drm_device *dev);
 void drm_client_dev_suspend(struct drm_device *dev, bool holds_console_lock);
 void drm_client_dev_resume(struct drm_device *dev, bool holds_console_lock);
+#else
+static inline void drm_client_dev_unregister(struct drm_device *dev)
+{ }
+static inline void drm_client_dev_hotplug(struct drm_device *dev)
+{ }
+static inline void drm_client_dev_restore(struct drm_device *dev)
+{ }
+static inline void drm_client_dev_suspend(struct drm_device *dev, bool holds_console_lock)
+{ }
+static inline void drm_client_dev_resume(struct drm_device *dev, bool holds_console_lock)
+{ }
+#endif
 
 #endif