drm/fbdev: Add memory-agnostic fbdev client
authorThomas Zimmermann <tzimmermann@suse.de>
Tue, 24 Sep 2024 07:12:01 +0000 (09:12 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Thu, 26 Sep 2024 06:27:50 +0000 (08:27 +0200)
commit5d08c44e47b9d41366714552bdd374ac4b595591
tree141c1d56b99dd068a18248688820244439c73c97
parent02257549daf7ff839e2be6d4f3cac975e522fd7a
drm/fbdev: Add memory-agnostic fbdev client

Add an fbdev client that can work with any memory manager. The
client implementation is the same as existing code in fbdev-dma or
fbdev-shmem.

Provide struct drm_driver.fbdev_probe for the new client to allocate
the surface GEM buffer. The new callback replaces fb_probe of struct
drm_fb_helper_funcs, which does the same.

To use the new client, DRM drivers set fbdev_probe in their struct
drm_driver instance and call drm_fbdev_client_setup(). Probing and
creating the fbdev surface buffer is now independent from the other
operations in struct drm_fb_helper. For the pixel format, the fbdev
client either uses a specified format, the value in preferred_depth
or 32-bit RGB.

v2:
- test for struct drm_fb_helper.funcs for NULL (Sui)
- respect struct drm_mode_config.preferred_depth for default format

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240924071734.98201-4-tzimmermann@suse.de
drivers/gpu/drm/Makefile
drivers/gpu/drm/drm_fb_helper.c
drivers/gpu/drm/drm_fbdev_client.c [new file with mode: 0644]
include/drm/drm_drv.h
include/drm/drm_fbdev_client.h [new file with mode: 0644]