The MIPI Display Serial Interface (MIPI DSI) connects the LCDIF (LCD controller) to an external MIPI display or bridge interface.

The ConnectCore 93 Development Kit includes a simple MIPI bridge to provide an HDMI interface. The LVDS interface is native, provided directly by the CPU.

  • HDMI is provided with the default configuration (DT and jumper) of the development kit.

  • LVDS is available by using the corresponding overlay.

  • MIPI DSI display is selected by the corresponding overlay and closing J28 jumper.

Kernel configuration

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

  • i.MX LCDIFV3 core support (CONFIG_IMX_LCDIFV3_CORE)

  • i.MX LCDIFV3 controller DRM driver (CONFIG_DRM_IMX_LCDIFV3)

  • Freescale i.MX DRM Synopsys DesignWare MIPI DSI (CONFIG_DRM_IMX_DW_MIPI_DSI)

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

Kernel driver

The driver for the video interface is located at:

File Description

drivers/gpu/imx/lcdifv3/lcdifv3-common.c

i.MX LCDIFV3 core support

drivers/gpu/drm/imx/lcdifv3

i.MX LCDIFV3 controller DRM drivers

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

Freescale i.MX DRM Synopsys DesignWare MIPI DSI

Device tree bindings and customization

The i.MX93 LCDIF controller is documented at Documentation/devicetree/bindings/display/imx/fsl-imx-drm.txt.

The i.MX93 MIPI DSI interface is documented at Documentation/devicetree/bindings/display/imx/fsl,imx93-mipi-dsi.yaml.

The LCDIF controller and MIPI DSI interface are defined in the i.MX93 CPU device tree file.

Definition of the LCDIF and MIPI DSI

i.MX93 device tree
dsi: dsi@4ae10000 {
	compatible = "fsl,imx93-mipi-dsi";
	reg = <0x4ae10000 0x4000>;
	interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>;
	clocks = <&clk IMX93_CLK_MIPI_TEST_BYTE>,
		<&clk IMX93_CLK_MIPI_DSI_GATE>,
		<&clk IMX93_CLK_MEDIA_DISP_PIX>;
	clock-names = "byte", "pclk", "pixel";
	assigned-clocks = <&clk IMX93_CLK_MIPI_TEST_BYTE>,
			<&clk IMX93_CLK_MEDIA_APB>;
	assigned-clock-parents = <&clk IMX93_CLK_SYS_PLL_PFD0>,
			<&clk IMX93_CLK_SYS_PLL_PFD1_DIV2>;
	assigned-clock-rates = <20000000>, <133333333>;
	phys = <&dphy>;
	phy-names = "dphy";
	power-domains = <&media_blk_ctrl IMX93_MEDIABLK_PD_MIPI_DSI>;
	status = "disabled";

	ports {
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			reg = <0>;

			dsi_to_lcdif: endpoint {
				remote-endpoint = <&lcdif_to_dsi>;
			};
		};
	};
};

lcdif: lcd-controller@4ae30000 {
	#address-cells = <1>;
	#size-cells = <0>;
	compatible = "fsl,imx93-lcdif";
	reg = <0x4ae30000 0x10000>;
	interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
	fsl,gpr = <&media_blk_ctrl>;
	clocks = <&clk IMX93_CLK_MEDIA_DISP_PIX>,
		<&clk IMX93_CLK_MEDIA_AXI>,
		<&clk IMX93_CLK_LCDIF_GATE>;
	clock-names = "pix", "disp-axi", "disp-apb";
	assigned-clocks = <&clk IMX93_CLK_VIDEO_PLL>,
			<&clk IMX93_CLK_MEDIA_DISP_PIX>,
			<&clk IMX93_CLK_MEDIA_AXI>,
			<&clk IMX93_CLK_MEDIA_APB>;
	assigned-clock-parents = <&clk IMX93_CLK_24M>,
				<&clk IMX93_CLK_VIDEO_PLL>,
				<&clk IMX93_CLK_SYS_PLL_PFD1>,
				<&clk IMX93_CLK_SYS_PLL_PFD1_DIV2>;
	power-domains = <&media_blk_ctrl IMX93_MEDIABLK_PD_LCDIF>;
	status = "disabled";

	lcdif_disp: port@0 {
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0>;

		lcdif_to_dsi: endpoint@0 {
			reg = <0>;
			remote-endpoint = <&dsi_to_lcdif>;
		};

		lcdif_to_ldb: endpoint@1 {
			reg = <1>;
			remote-endpoint = <&ldb_ch0>;
		};

		lcdif_to_dpi: endpoint@2 {
			reg = <2>;
			remote-endpoint = <&dpi_to_lcdif>;
		};
	};
};

IOMUX configuration

The MIPI DSI interface uses dedicated pins. No IOMUX configuration is necessary.

Display options

The MIPI-to-HDMI bridge available on the ConnectCore 93 Development Kit is enabled with default kernel and device tree configurations.

Use the video interface

When the video interface is available, a bootup logo displays on the screen. For XWayland images, a Weston desktop launches after Linux starts.

Play a video

To play a video using Gstreamer:

# gplay-1.0 /tmp/myvideo.mp4