[PATCH 0/6] drm/msm: fbdev: Use client buffers

Thomas Zimmermann
2026-04-21T12:57:41Z

A client buffer holds the DRM framebuffer for an in-kernel DRM
client. Until now, msm created an internal ad-hoc framebuffer for
its fbdev emulation, while by-passing the regular interfaces used by
user-space compositors.

Convert msm's fbdev emulation to use client buffers. Replacing the
existing code with a client buffer allows for stream-lining msm code
and later also the fbdev helpers. The new framebuffer will be registered
against the client's file and will support handles for GEM objects. It
is then just another framebuffer within the DRM ecosystem.

Patches 1 and 6 change visibility of msm_framebuffer_init() during the
refactoring. It is the easiest way to refactor the fbdev probe helper.

Patch 2 and 3 inline the fb allocation code into the fbdev-probe helper
and fix it up a bit.

From there patches 4 and 5 convert fbdev buffer allocation to common
DRM helpes and client buffers.

If all fbdev emulation helpers can be converted to client buffers, the
emulation's whole framebuffer handling could possibly be moved into
shared helpers.

Thomas Zimmermann (6):
drm/msm: Do not declare msm_framebuffer_init() as static
drm/msm: fbdev: Inline msm_alloc_stolen_fb()
drm/msm: fbdev: Fix error reporting
drm/msm: fbdev: Calculate buffer geometry with format helpers
drm/msm: fbdev: Use a DRM client buffer
drm/msm: Make msm_framebuffer_init() an internal interface again

drivers/gpu/drm/msm/msm_drv.h | 9 ---
drivers/gpu/drm/msm/msm_fb.c | 98 +++++++++------------------------
drivers/gpu/drm/msm/msm_fbdev.c | 85 +++++++++++++++++++---------
3 files changed, 85 insertions(+), 107 deletions(-)

--
2.53.0