[PATCH v2 05/11] video: lcdif: make functional on i.MX8MP
Johannes Schneider
johannes.schneider at leica-geosystems.com
Wed Jun 3 23:50:00 PDT 2026
The driver matches fsl,imx8mp-lcdif and its help text mentions i.MX8MP,
but two oversights left it unusable on that SoC:
- Kconfig depends on ARCH_IMX9 || ARCH_IMX93, so setting
CONFIG_DRIVER_VIDEO_LCDIF=y in an IMX8MP defconfig is silently
forced back to n and the driver is never built.
- lcdif_probe() acquires clk references but never ungates them. In
Linux runtime PM via the LCDIF power-domain genpd handles that;
barebox has no runtime_pm wiring, so the LCDIF clock domain stays
gated and the MMIO setup in atomic_enable silently no-ops --
/dev/fb0 registers correctly but DISP_PARA / CTRLDESCL stay at 0
and the panel is dark.
Add ARCH_IMX8MP to the depends-on clause, update the menu prompt to
match the help text, and clk_prepare_enable() the three clocks at the
start of lcdif_crtc_atomic_enable, after the pixel-clock rate is set.
Signed-off-by: Johannes Schneider <johannes.schneider at leica-geosystems.com>
---
drivers/video/Kconfig | 4 ++--
drivers/video/lcdif_kms.c | 5 +++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index ce10237221..2faad19a99 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -67,8 +67,8 @@ config DRIVER_VIDEO_IMX_IPU_OVERLAY
depends on DRIVER_VIDEO_IMX_IPU && (ARCH_IMX35 || ARCH_IMX31)
config DRIVER_VIDEO_LCDIF
- bool "i.MX9 framebuffer driver"
- depends on ARCH_IMX9 || ARCH_IMX93
+ bool "i.MX8MP/9/93 LCDIFv3 framebuffer driver"
+ depends on ARCH_IMX8MP || ARCH_IMX9 || ARCH_IMX93
help
Add support for the LCDIFv3 LCD controller found on
i.MX8MP and i.MX93 SoCs.
diff --git a/drivers/video/lcdif_kms.c b/drivers/video/lcdif_kms.c
index 033df23186..3a31633818 100644
--- a/drivers/video/lcdif_kms.c
+++ b/drivers/video/lcdif_kms.c
@@ -326,6 +326,11 @@ static void lcdif_crtc_atomic_enable(struct lcdif_drm_private *lcdif,
clk_set_rate(lcdif->clk, mode->clock * 1000);
+ /* no runtime PM; ungate the LCDIF clocks ourselves */
+ clk_prepare_enable(lcdif->clk_axi);
+ clk_prepare_enable(lcdif->clk_disp_axi);
+ clk_prepare_enable(lcdif->clk);
+
lcdif_crtc_mode_set_nofb(lcdif, mode, vcstate);
/* Write cur_buf as well to avoid an initial corrupt frame */
--
2.43.0
More information about the barebox
mailing list