linux-stable/include/drm/drm_fbdev_client.h
Thomas Zimmermann 5d08c44e47 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
2024-09-26 08:27:50 +02:00

20 lines
404 B
C

/* SPDX-License-Identifier: MIT */
#ifndef DRM_FBDEV_CLIENT_H
#define DRM_FBDEV_CLIENT_H
struct drm_device;
struct drm_format_info;
#ifdef CONFIG_DRM_FBDEV_EMULATION
int drm_fbdev_client_setup(struct drm_device *dev, const struct drm_format_info *format);
#else
static inline int drm_fbdev_client_setup(struct drm_device *dev,
const struct drm_format_info *format)
{
return 0;
}
#endif
#endif