[PATCH v2 07/11] video: lcdif: default to RGB888_1X24 on VPL_GET_BUS_FORMAT failure

Johannes Schneider johannes.schneider at leica-geosystems.com
Wed Jun 3 23:50:02 PDT 2026


VPL_GET_BUS_FORMAT walks downstream through the bridge to the panel.
Today neither fsl-ldb (which forwards the call) nor simple-panel
(which reads a "bus-format" DT property) succeeds for DTs that follow
the Linux panel-lvds binding -- that binding describes the LVDS data
mapping in "data-mapping", not as a discrete bus-format integer.

The driver currently aborts enable on the -EINVAL, leaving /dev/fb0
registered but nothing scanning out.  Default to RGB888_1X24 instead
-- the parallel format LCDIFv3 hands to every RGB888 bridge regardless
of what the panel ultimately drives onto the wire.

Signed-off-by: Johannes Schneider <johannes.schneider at leica-geosystems.com>
---
 drivers/video/lcdif_kms.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/video/lcdif_kms.c b/drivers/video/lcdif_kms.c
index a113f3e681..5487d1298c 100644
--- a/drivers/video/lcdif_kms.c
+++ b/drivers/video/lcdif_kms.c
@@ -364,8 +364,11 @@ static void lcdif_enable_fb_controller(struct fb_info *info)
 
 	ret = vpl_ioctl(&lcdif->vpl, lcdif->id, VPL_GET_BUS_FORMAT, &vcstate.bus_format);
 	if (ret < 0) {
-		dev_err(lcdif->dev, "Cannot determine bus format\n");
-		return;
+		/* default for panel-lvds DTs lacking bus-format / bridges not answering */
+		dev_warn(lcdif->dev,
+			 "VPL_GET_BUS_FORMAT failed (%pe), defaulting to RGB888_1X24\n",
+			 ERR_PTR(ret));
+		vcstate.bus_format = MEDIA_BUS_FMT_RGB888_1X24;
 	}
 
 	ret = vpl_ioctl(&lcdif->vpl, lcdif->id, VPL_GET_DISPLAY_INFO, &display_info);
-- 
2.43.0




More information about the barebox mailing list