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 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