[PATCH v2 00/11] video: enable boot splash on i.MX8MP with LVDS panel
Johannes Schneider
johannes.schneider at leica-geosystems.com
Wed Jun 3 23:49:55 PDT 2026
v1: https://lists.infradead.org/pipermail/barebox/2026-June/056588.html
This is v2 of the i.MX8MP boot-splash series. Review on v1 pointed out
that barebox already has in-tree drivers covering work v1 was
duplicating, plus several detail issues; v2 replaces the two new
drivers with extensions to the existing ones and addresses the
remaining review feedback.
Changes since v1:
* Drop drivers/video/imx-lcdif.c (Michael). drivers/video/lcdif_drv.c
already matches "fsl,imx8mp-lcdif" and "fsl,imx93-lcdif" but had
only been exercised on i.MX93. Three latent issues kept it unusable
on i.MX8MP; v2 extends it instead of duplicating:
- Kconfig depends-on widened to ARCH_IMX8MP. The symbol was
silently forced to n on i.MX8MP defconfigs even though the help
text and the driver's of_match cover i.MX8MP.
- clk_prepare_enable() AXI/disp_axi/pix at atomic_enable. Linux
runtime PM handles that via genpd; barebox has none, so the
controller's MMIO writes silently no-op'd and frames never
ticked.
- VPL_GET_BUS_FORMAT abort no longer kills the enable path when
the downstream panel doesn't carry a "bus-format" property
(typical of panel-lvds DTs). Default to RGB888_1X24 with a
dev_warn instead.
* Drop drivers/video/panel-lvds.c (Ahmad). drivers/video/simple-panel.c
already parses display-timings, enable-gpios and a backlight phandle
from DT -- exactly what a Linux panel-lvds node provides. v2 makes
three small extensions:
- Match "panel-lvds" in the of_id table.
- Read modes from a "panel-timing" subnode as a fallback to the
"display-timings" container (panel-lvds uses the singular form).
- Switch power-supply to regulator_get_optional() so panels
without "power-supply" bind.
* Move the LCDIF write-combine drain from a dsb() to a readback of the
WC region in fb_damage (Lucas). dsb() doesn't actually drain WC;
a load from the WC region does.
* pmdomain: keep the ADB handshake propagation before the upstream
clock enable in imx8mp_blk_ctrl_power_on; v1's refactor accidentally
moved it after. Route the HSIO-specific call through a new
pre_power_on hook in struct imx8mp_blk_ctrl_data so the generic path
remains HSIO-agnostic (Ahmad).
* backlight-pwm: switch the power-supply lookup to
regulator_get_optional() so a missing power-supply property surfaces
as -ENODEV (the IS_ERR check never caught the NULL return),
drop the now-redundant NULL guards around regulator_enable/_disable,
use dev_errp_probe() for the PWM lookup, and add a Fixes: tag for
the bogus "enable-gpios" gpiod descriptor name (gpiod_get_optional()
appends -gpios itself) (Ahmad).
* Pick up Ahmad's Reviewed-by on the 700 MHz VIDEO_PLL1 rate entry.
* New patch: clk: imx8mp: add 1039.5 MHz and 519.75 MHz VIDEO_PLL1
rate entries. arch/arm64/boot/dts/freescale/imx8mp.dtsi pins
VIDEO_PLL1 to 1039.5 MHz via media_blk_ctrl's assigned-clock-rates
(the right value for 1080p60 LVDS), but the rate was missing from
barebox's PLL14xx table. Without it, media_blk_ctrl probe fails
-EINVAL and breaks the clock tree below LCDIF2 before lcdif2's own
assigned-clock-rates can rebind it. Values taken from Linux's
imx_pll1443x_tbl.
* Split out three smaller stand-alone changes v1 had bundled with the
new driver:
- lcdif: 128B AXI bursts (avoids a right-edge gap on panels whose
stride isn't a multiple of 256 bytes -- e.g. 800px at XRGB8888).
- lcdif: register a simplefb fixup and call fb_enable() at probe,
so a splash command can blit straight into a live framebuffer
and Linux's DRM_SIMPLEDRM inherits the boot fb.
- simple-panel: lazily resolve the backlight phandle without
failing the panel-enable chain when the backlight hasn't probed
yet.
Tested on i.MX8MP with a single-link LVDS 800x480 at 60Hz panel: boot
splash renders, Linux DRM_SIMPLEDRM inherits the framebuffer via the
simplefb DT fixup.
Assisted-by: Claude:claude-opus-4-7
Johannes Schneider (5):
clk: imx8mp: add 1039.5 MHz and 519.75 MHz rate entries for VIDEO_PLL1
video: lcdif: make functional on i.MX8MP
video: lcdif: default to RGB888_1X24 on VPL_GET_BUS_FORMAT failure
video: simple-panel: support panel-lvds DT bindings
video: simple-panel: lazily resolve backlight without failing
Thomas Haemmerle (6):
clk: imx8mp: add 700 MHz rate entry for VIDEO_PLL1
pmdomain: imx8mp-blk-ctrl: add media blk-ctrl power domain support
video: backlight-pwm: make power-supply and enable-gpio optional
video: lcdif: use 128B AXI bursts to avoid right-edge gap
video: lcdif: register simplefb fixup and enable framebuffer at probe
video: lcdif: drain write-combine framebuffer in fb_damage
drivers/clk/imx/clk-pll14xx.c | 3 +
drivers/pmdomain/imx/imx8mp-blk-ctrl.c | 91 ++++++++++++++++++++++++--
drivers/video/Kconfig | 4 +-
drivers/video/backlight-pwm.c | 16 ++---
drivers/video/backlight.c | 2 +-
drivers/video/fsl-ldb.c | 2 +-
drivers/video/lcdif_kms.c | 47 +++++++++----
drivers/video/simple-panel.c | 31 ++++++---
8 files changed, 155 insertions(+), 41 deletions(-)
base-commit: 651343da8af78d134d7ead4d2b36095d7ddc2d8f
--
2.43.0
More information about the barebox
mailing list