The STMicroelectronics STM32MP25 provides:

  • a 24-bit RGB LCD-TFT display interface (LTDC).

  • a MIPI DSI host interface connected internally to the LTDC.

  • a native LVDS interface.

On the ConnectCore MP25:

  • The parallel LCD interface is available on the LGA pads, multiplexed with other functions.

  • The MIPI DSI interface is available on the LGA pads.

  • The LVDS interface is available on the LGA pads multiplexed with other functions.

On the ConnectCore MP25 Development Kit:

  • The MIPI DSI interface is routed to the Lontium LT8912B MIPI-to-HDMI bridge (connector J32) and to a MIPI display (connector J27).

  • The LVDS interface is available on the LVDS connector multiplexed with other functions.

Kernel configuration

You can manage the video support through the following kernel configuration options:

  • STM LCD controller driver (CONFIG_DRM_STM)

  • STM MIPI DSI DRM driver (CONFIG_DRM_STM_DSI)

  • STM LVDS DRM driver (CONFIG_DRM_STM_LVDS)

These options are enabled as built-in on the default ConnectCore MP25 kernel configuration file.

Kernel driver

The driver for the video interface is located at:

File Description

drivers/gpu/drm/stm/drv.c

Video driver

drivers/gpu/drm/stm/dw_mipi_dsi-stm.c

DSI DRM driver

drivers/gpu/drm/stm/lvds.c

LVDS DRM driver

Device tree bindings and customization

The LCD-TFT display controller is documented at Documentation/devicetree/bindings/display/st,stm32-ltdc.yaml.

The STM DSI host controller is documented at Documentation/devicetree/bindings/display/st,stm32-dsi.yaml.

The LVDS display interface transmitter is documented at Documentation/devicetree/bindings/display/st,stm32-lvds.yaml.

The LTDC, MIPI DSI and LVDS interfaces are defined in the CPU device tree file.

Definition of the LTDC, MIPI DSI and LVDS

STM32MP25 device tree
dsi: dsi@48000000 {
	compatible = "st,stm32-dsi";
	reg = <0x48000000 0x800>;
	#clock-cells = <0>;
	clocks = <&rcc CK_BUS_DSI>, <&rcc CK_KER_DSIPHY>,
			<&rcc CK_KER_LTDC>;
	clock-names = "pclk", "ref", "px_clk";
	resets = <&rcc DSI_R>;
	reset-names = "apb";
	feature-domains = <&rifsc STM32MP25_RIFSC_DSI_CMN_ID>;
	power-domains = <&CLUSTER_PD>;
	status = "disabled";
};

lvds: lvds@48060000 {
	#clock-cells = <0>;
	compatible = "st,stm32-lvds";
	reg = <0x48060000 0x2000>;
	clocks = <&rcc CK_BUS_LVDS>, <&rcc CK_KER_LVDSPHY>,
		 <&syscfg 0>;
	clock-names = "pclk", "ref", "pixclk";
	resets = <&rcc LVDS_R>;
	feature-domains = <&rifsc STM32MP25_RIFSC_LVDS_ID>;
	power-domains = <&CLUSTER_PD>;
	status = "disabled";
};

ltdc: display-controller@48010000 {
	compatible = "st,stm32-ltdc";
	reg = <0x48010000 0x400>;
	st,syscon = <&syscfg>;
	interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>,
		<GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>;
	clocks = <&rcc CK_BUS_LTDC>, <&rcc CK_KER_LTDC>;
	clock-names = "bus", "lcd";
	resets = <&rcc LTDC_R>;
	feature-domains = <&rifsc STM32MP25_RIFSC_LTDC_CMN_ID>;
	power-domains = <&CLUSTER_PD>;
	status = "disabled";
};

Display options

You need additional kernel and device tree configurations depending on the video display that you want to use. Find more information on the following sub-topics:

Use the video interface

For Wayland images, a Weston desktop launches after Linux starts.

Play a video

To play a video using Gstreamer:

# gst-launch-1.0 playbin uri=file:///run/media/sda1/big_buck_bunny_480p_h264.mp4
# gst-play-1.0 /run/media/sda1/big_buck_bunny_480p_h264.mp4
The default image does not include a video file.