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.

Signed-off-by: Thomas Zimmermann <tzimmerm...@suse.de>
Cc: Alex Deucher <alexander.deuc...@amd.com>
Cc: "Christian König" <christian.koe...@amd.com>
Cc: Xinhui Pan <xinhui....@amd.com>
---
 drivers/gpu/drm/Kconfig            | 10 ++++++++++
 drivers/gpu/drm/Makefile           |  7 ++++---
 drivers/gpu/drm/amd/amdgpu/Kconfig |  1 +
 include/drm/drm_client_event.h     | 13 +++++++++++++
 4 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index 88b2ba55fe16..86e5b0194100 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -209,6 +209,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
@@ -224,6 +233,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
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index 6b7d168ca790..c3e5d353588e 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -41,9 +41,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 \
@@ -77,6 +74,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
diff --git a/drivers/gpu/drm/amd/amdgpu/Kconfig 
b/drivers/gpu/drm/amd/amdgpu/Kconfig
index 680a94c361ba..41fa3377d9cf 100644
--- a/drivers/gpu/drm/amd/amdgpu/Kconfig
+++ b/drivers/gpu/drm/amd/amdgpu/Kconfig
@@ -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
diff --git a/include/drm/drm_client_event.h b/include/drm/drm_client_event.h
index 72c97d111169..99863554b055 100644
--- a/include/drm/drm_client_event.h
+++ b/include/drm/drm_client_event.h
@@ -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
-- 
2.46.0

Reply via email to