[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