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)"
|
tristate "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)"
|
||||||
depends on (AGP || AGP=n) && !EMULATED_CMPXCHG && HAS_DMA
|
depends on (AGP || AGP=n) && !EMULATED_CMPXCHG && HAS_DMA
|
||||||
select DRM_PANEL_ORIENTATION_QUIRKS
|
select DRM_PANEL_ORIENTATION_QUIRKS
|
||||||
select DRM_KMS_HELPER if DRM_FBDEV_EMULATION
|
|
||||||
select FB_CORE if DRM_FBDEV_EMULATION
|
|
||||||
select HDMI
|
select HDMI
|
||||||
select I2C
|
select I2C
|
||||||
select DMA_SHARED_BUFFER
|
select DMA_SHARED_BUFFER
|
||||||
|
@ -219,10 +217,19 @@ config DRM_CLIENT
|
||||||
option. Drivers that support the default clients should
|
option. Drivers that support the default clients should
|
||||||
select DRM_CLIENT_SELECTION instead.
|
select DRM_CLIENT_SELECTION instead.
|
||||||
|
|
||||||
config DRM_CLIENT_SELECTION
|
config DRM_CLIENT_LIB
|
||||||
bool
|
tristate
|
||||||
depends on DRM
|
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
|
help
|
||||||
Drivers that support in-kernel DRM clients have to select this
|
Drivers that support in-kernel DRM clients have to select this
|
||||||
option.
|
option.
|
||||||
|
@ -230,11 +237,18 @@ config DRM_CLIENT_SELECTION
|
||||||
config DRM_CLIENT_SETUP
|
config DRM_CLIENT_SETUP
|
||||||
bool
|
bool
|
||||||
depends on DRM_CLIENT_SELECTION
|
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
|
config DRM_FBDEV_EMULATION
|
||||||
bool "Enable legacy fbdev support for your modesetting driver"
|
bool "Enable legacy fbdev support for your modesetting driver"
|
||||||
depends on DRM
|
depends on DRM_CLIENT_SELECTION
|
||||||
select DRM_CLIENT
|
select DRM_CLIENT
|
||||||
|
select DRM_CLIENT_SETUP
|
||||||
select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
|
select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
|
||||||
default FB
|
default FB
|
||||||
help
|
help
|
||||||
|
@ -273,6 +287,8 @@ config DRM_FBDEV_LEAK_PHYS_SMEM
|
||||||
If in doubt, say "N" or spread the word to your closed source
|
If in doubt, say "N" or spread the word to your closed source
|
||||||
library vendor.
|
library vendor.
|
||||||
|
|
||||||
|
endmenu
|
||||||
|
|
||||||
config DRM_LOAD_EDID_FIRMWARE
|
config DRM_LOAD_EDID_FIRMWARE
|
||||||
bool "Allow to specify an EDID data set instead of probing for it"
|
bool "Allow to specify an EDID data set instead of probing for it"
|
||||||
depends on DRM
|
depends on DRM
|
||||||
|
|
|
@ -144,14 +144,18 @@ drm_kms_helper-y := \
|
||||||
drm_probe_helper.o \
|
drm_probe_helper.o \
|
||||||
drm_self_refresh_helper.o \
|
drm_self_refresh_helper.o \
|
||||||
drm_simple_kms_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_PANEL_BRIDGE) += bridge/panel.o
|
||||||
drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += \
|
drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fb_helper.o
|
||||||
drm_fbdev_client.o \
|
|
||||||
drm_fb_helper.o
|
|
||||||
obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_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
|
# 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);
|
drm_client_setup_with_fourcc(dev, fourcc);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(drm_client_setup_with_color_mode);
|
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