drm/client: Add client-lib module
Add drm_client_lib.ko to contain DRM's built-in client. Move the existing client for fbdev emulation into the new module. Protect the new module behind CONFIG_DRM_CLIENT_LIB. The Kconfig rules separate the DRM drivers from the DRM clients. A driver can opt into the default clients, but the user configures each client individually. To do so, DRM drivers still select DRM_CLIENT_SELECTION. The option is now a tristate that further selects all dependencies of the enabled DRM clients. There's a menu option for each client. Enabling at least one client also selects DRM_CLIENT_SETUP, so that drivers call drm_client_setup(). New DRM clients should depend on DRM_CLIENT_SELECTION. There are existing kernel options in drm_fb_helper.o, so leave this file in the KMS-helper module for now. v5: - leave fbdev helpers in drm_kms_helper.ko for now v3: - fix commit changelog v2: - keep client code in core - protect lib with DRM_CLIENT_LIB - remove duplicate line from Makefile (Jocelyn) Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241014085740.582287-13-tzimmermann@suse.de
This commit is contained in:
parent
1f828b4dd4
commit
dadd28d414
3 changed files with 34 additions and 11 deletions
|
@ -9,8 +9,6 @@ menuconfig DRM
|
|||
tristate "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)"
|
||||
depends on (AGP || AGP=n) && !EMULATED_CMPXCHG && HAS_DMA
|
||||
select DRM_PANEL_ORIENTATION_QUIRKS
|
||||
select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
|
||||
select FB_CORE if DRM_FBDEV_EMULATION
|
||||
select HDMI
|
||||
select I2C
|
||||
select DMA_SHARED_BUFFER
|
||||
|
@ -219,10 +217,19 @@ config DRM_CLIENT
|
|||
option. Drivers that support the default clients should
|
||||
select DRM_CLIENT_SELECTION instead.
|
||||
|
||||
config DRM_CLIENT_SELECTION
|
||||
bool
|
||||
config DRM_CLIENT_LIB
|
||||
tristate
|
||||
depends on DRM
|
||||
select DRM_CLIENT_SETUP if DRM_FBDEV_EMULATION
|
||||
select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
|
||||
select FB_CORE if DRM_FBDEV_EMULATION
|
||||
help
|
||||
This option enables the DRM client library and selects all
|
||||
modules and components according to the enabled clients.
|
||||
|
||||
config DRM_CLIENT_SELECTION
|
||||
tristate
|
||||
depends on DRM
|
||||
select DRM_CLIENT_LIB if DRM_FBDEV_EMULATION
|
||||
help
|
||||
Drivers that support in-kernel DRM clients have to select this
|
||||
option.
|
||||
|
@ -230,11 +237,18 @@ config DRM_CLIENT_SELECTION
|
|||
config DRM_CLIENT_SETUP
|
||||
bool
|
||||
depends on DRM_CLIENT_SELECTION
|
||||
help
|
||||
Enables the DRM client selection. DRM drivers that support the
|
||||
default clients should select DRM_CLIENT_SELECTION instead.
|
||||
|
||||
menu "Supported DRM clients"
|
||||
depends on DRM_CLIENT_SELECTION
|
||||
|
||||
config DRM_FBDEV_EMULATION
|
||||
bool "Enable legacy fbdev support for your modesetting driver"
|
||||
depends on DRM
|
||||
depends on DRM_CLIENT_SELECTION
|
||||
select DRM_CLIENT
|
||||
select DRM_CLIENT_SETUP
|
||||
select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
|
||||
default FB
|
||||
help
|
||||
|
@ -273,6 +287,8 @@ config DRM_FBDEV_LEAK_PHYS_SMEM
|
|||
If in doubt, say "N" or spread the word to your closed source
|
||||
library vendor.
|
||||
|
||||
endmenu
|
||||
|
||||
config DRM_LOAD_EDID_FIRMWARE
|
||||
bool "Allow to specify an EDID data set instead of probing for it"
|
||||
depends on DRM
|
||||
|
|
|
@ -144,14 +144,18 @@ drm_kms_helper-y := \
|
|||
drm_probe_helper.o \
|
||||
drm_self_refresh_helper.o \
|
||||
drm_simple_kms_helper.o
|
||||
drm_kms_helper-$(CONFIG_DRM_CLIENT_SETUP) += \
|
||||
drm_client_setup.o
|
||||
drm_kms_helper-$(CONFIG_DRM_PANEL_BRIDGE) += bridge/panel.o
|
||||
drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += \
|
||||
drm_fbdev_client.o \
|
||||
drm_fb_helper.o
|
||||
drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fb_helper.o
|
||||
obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o
|
||||
|
||||
#
|
||||
# DRM clients
|
||||
#
|
||||
|
||||
drm_client_lib-y := drm_client_setup.o
|
||||
drm_client_lib-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fbdev_client.o
|
||||
obj-$(CONFIG_DRM_CLIENT_LIB) += drm_client_lib.o
|
||||
|
||||
#
|
||||
# Drivers and the rest
|
||||
#
|
||||
|
|
|
@ -64,3 +64,6 @@ void drm_client_setup_with_color_mode(struct drm_device *dev, unsigned int color
|
|||
drm_client_setup_with_fourcc(dev, fourcc);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_client_setup_with_color_mode);
|
||||
|
||||
MODULE_DESCRIPTION("In-kernel DRM clients");
|
||||
MODULE_LICENSE("GPL and additional rights");
|
||||
|
|
Loading…
Add table
Reference in a new issue