From: Thomas Zimmermann <tzimmermann@suse.de>
To: simona@ffwll.ch, airlied@gmail.com, javierm@redhat.com,
jfalempe@redhat.com
Cc: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
Thomas Zimmermann <tzimmermann@suse.de>
Subject: [PATCH v3 12/12] drm/client: Add client-lib module
Date: Tue, 8 Oct 2024 13:59:31 +0200 [thread overview]
Message-ID: <20241008120652.159190-13-tzimmermann@suse.de> (raw)
In-Reply-To: <20241008120652.159190-1-tzimmermann@suse.de>
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.
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>
---
drivers/gpu/drm/Kconfig | 26 ++++++++++++++++++++-----
drivers/gpu/drm/Makefile | 14 +++++++++----
drivers/gpu/drm/drm_client_setup.c | 3 +++
drivers/gpu/drm/drm_kms_helper_common.c | 3 +++
4 files changed, 37 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index ea1cc924528c..a9055c0b9a1a 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -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
@@ -218,10 +216,19 @@ config DRM_CLIENT
option. Drivers that support the default clients should
select DRM_CLIENT_SELECTION instead.
+config DRM_CLIENT_LIB
+ tristate
+ depends on DRM
+ 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
- bool
+ tristate
depends on DRM
- select DRM_CLIENT_SETUP if DRM_FBDEV_EMULATION
+ select DRM_CLIENT_LIB if DRM_FBDEV_EMULATION
help
Drivers that support in-kernel DRM clients have to select this
option.
@@ -229,11 +236,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
@@ -272,6 +286,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
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index c3e5d353588e..edfd2ebaf153 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -145,13 +145,19 @@ 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) += \
+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 \
drm_fb_helper.o
-obj-$(CONFIG_DRM_KMS_HELPER) += drm_kms_helper.o
+obj-$(CONFIG_DRM_CLIENT_LIB) += drm_client_lib.o
#
# Drivers and the rest
diff --git a/drivers/gpu/drm/drm_client_setup.c b/drivers/gpu/drm/drm_client_setup.c
index 5969c4ffe31b..c14221ca5a0d 100644
--- a/drivers/gpu/drm/drm_client_setup.c
+++ b/drivers/gpu/drm/drm_client_setup.c
@@ -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");
diff --git a/drivers/gpu/drm/drm_kms_helper_common.c b/drivers/gpu/drm/drm_kms_helper_common.c
index cfdbc1ac88dc..ecff0b1414ac 100644
--- a/drivers/gpu/drm/drm_kms_helper_common.c
+++ b/drivers/gpu/drm/drm_kms_helper_common.c
@@ -31,11 +31,13 @@
#if defined(CONFIG_DRM_FBDEV_EMULATION)
bool drm_fbdev_emulation = true;
+EXPORT_SYMBOL(drm_fbdev_emulation);
module_param_named(fbdev_emulation, drm_fbdev_emulation, bool, 0600);
MODULE_PARM_DESC(fbdev_emulation,
"Enable legacy fbdev emulation [default=true]");
int drm_fbdev_overalloc = CONFIG_DRM_FBDEV_OVERALLOC;
+EXPORT_SYMBOL(drm_fbdev_overalloc);
module_param(drm_fbdev_overalloc, int, 0444);
MODULE_PARM_DESC(drm_fbdev_overalloc,
"Overallocation of the fbdev buffer (%) [default="
@@ -55,6 +57,7 @@ MODULE_PARM_DESC(drm_fbdev_overalloc,
* considered as a broken and legacy behaviour from a modern fbdev device.
*/
bool drm_leak_fbdev_smem;
+EXPORT_SYMBOL(drm_leak_fbdev_smem);
#if IS_ENABLED(CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM)
module_param_unsafe(drm_leak_fbdev_smem, bool, 0600);
MODULE_PARM_DESC(drm_leak_fbdev_smem,
--
2.46.0
next prev parent reply other threads:[~2024-10-08 12:07 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-08 11:59 [PATCH v3 00/12] drm: Introduce DRM client library Thomas Zimmermann
2024-10-08 11:59 ` [PATCH v3 01/12] drm/i915: Select DRM_CLIENT_SELECTION Thomas Zimmermann
2024-10-08 20:54 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 02/12] drm/xe: " Thomas Zimmermann
2024-10-08 20:54 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 03/12] drm/fbdev-dma: Select FB_DEFERRED_IO Thomas Zimmermann
2024-10-08 20:55 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 04/12] drm/fbdev: Select fbdev I/O helpers from modules that require them Thomas Zimmermann
2024-10-08 20:55 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 05/12] drm/fbdev: Store fbdev module parameters in separate file Thomas Zimmermann
2024-10-08 20:56 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 06/12] drm/client: Move client event handlers to drm_client_event.c Thomas Zimmermann
2024-10-08 21:11 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 07/12] drm/client: Move suspend/resume into DRM client callbacks Thomas Zimmermann
2024-10-08 21:21 ` Cavitt, Jonathan
2024-10-14 7:07 ` Thomas Zimmermann
2024-10-08 11:59 ` [PATCH v3 08/12] drm/amdgpu: Suspend and resume internal clients with client helpers Thomas Zimmermann
2024-10-08 21:37 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 09/12] drm/nouveau: Suspend and resume " Thomas Zimmermann
2024-10-08 21:38 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 10/12] drm/radeon: " Thomas Zimmermann
2024-10-08 21:40 ` Cavitt, Jonathan
2024-10-08 11:59 ` [PATCH v3 11/12] drm/client: Make client support optional Thomas Zimmermann
2024-10-08 21:41 ` Cavitt, Jonathan
2024-10-08 11:59 ` Thomas Zimmermann [this message]
2024-10-08 21:42 ` [PATCH v3 12/12] drm/client: Add client-lib module Cavitt, Jonathan
2024-10-08 12:12 ` ✓ CI.Patch_applied: success for drm: Introduce DRM client library (rev3) Patchwork
2024-10-08 12:13 ` ✗ CI.checkpatch: warning " Patchwork
2024-10-08 12:14 ` ✓ CI.KUnit: success " Patchwork
2024-10-08 12:27 ` ✓ CI.Build: " Patchwork
2024-10-08 12:29 ` ✓ CI.Hooks: " Patchwork
2024-10-08 12:30 ` ✗ CI.checksparse: warning " Patchwork
2024-10-08 12:58 ` ✓ CI.BAT: success " Patchwork
2024-10-08 19:04 ` ✗ CI.FULL: failure " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241008120652.159190-13-tzimmermann@suse.de \
--to=tzimmermann@suse.de \
--cc=airlied@gmail.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=javierm@redhat.com \
--cc=jfalempe@redhat.com \
--cc=simona@ffwll.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox