[PATCH v2 08/11] video: lcdif: register simplefb fixup and enable framebuffer at probe
Johannes Schneider
johannes.schneider at leica-geosystems.com
Wed Jun 3 23:50:03 PDT 2026
From: Thomas Haemmerle <thomas.haemmerle at leica-geosystems.com>
Two changes are needed to use lcdif_drv as the primary barebox boot
framebuffer:
- register_framebuffer() leaves the cdev disabled; the splash command
opens fb0 via the fb API and never goes through the cdev open path
that triggers fb_enable lazily, so it bails on
"fb_open: No such file or directory". fb_enable() at the end of
register_fb so the controller is up by the time anything blits.
- Set info->register_simplefb and call fb_register_simplefb() so
DRM_SIMPLEDRM in Linux sees the boot framebuffer as a
simple-framebuffer DT node and keeps the splash visible until its
native LCDIF driver binds.
Signed-off-by: Thomas Haemmerle <thomas.haemmerle at leica-geosystems.com>
---
drivers/video/lcdif_kms.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/video/lcdif_kms.c b/drivers/video/lcdif_kms.c
index 5487d1298c..e3d1985dc9 100644
--- a/drivers/video/lcdif_kms.c
+++ b/drivers/video/lcdif_kms.c
@@ -459,6 +459,16 @@ static int lcdif_register_fb(struct lcdif_drm_private *lcdif)
if (ret)
return ret;
+ /* expose as simple-framebuffer for Linux DRM_SIMPLEDRM handoff */
+ info->register_simplefb = 1;
+ fb_register_simplefb(info);
+
+ /* enable now so the splash command can blit into a live fb */
+ ret = fb_enable(info);
+ if (ret)
+ dev_warn(lcdif->dev, "failed to enable framebuffer: %pe\n",
+ ERR_PTR(ret));
+
dev_info(lcdif->dev, "Registered %s on LCDIF%d, type primary\n",
info->cdev.name, lcdif->id);
--
2.43.0
More information about the barebox
mailing list