The i.MX95 Display Controller can simultaneously drive a 4-lane MIPI DSI and two 4-lane LVDS interfaces.

On the ConnectCore 95 SMT SOM:

  • MIPI DSI is available at the castellated pads and the LGA pads

  • LVDS0 and LVDS1 are available at the LGA pads

On the ConnectCore 95 SMARC SOM:

  • MIPI DSI lines are available at the SMARC connector pads (some lines at the SMARC HDMI interface, some at the SMARC CSI0 interface)

  • LVDS0 is available at SMARC LVDS0 interface

  • LVDS1 is available at SMARC LVDS1 interface

On the ConnectCore 95 Development Kit:

  • MIPI DSI interface is connected to a MIPI bridge to provide an HDMI interface.

  • LVDS0 and LVDS1 are directly connected to LVDS connectors. They are available by using the corresponding device tree overlays.

Kernel configuration

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

  • Freescale i.MX8MP LVDS PHY (CONFIG_PHY_FSL_IMX8MP_LVDS)

  • Freescale i.MX95 LVDS display bridge (CONFIG_DRM_IMX95_LDB)

  • DRM support for NXP i.MX95 DPU Graphics (CONFIG_DRM_IMX95_DPU)

  • NXP i.MX95 specific extensions for Synopsys DW MIPI DSI (CONFIG_DRM_IMX95_MIPI_DSI)

  • NXP i.MX95 pixel interleaver (CONFIG_DRM_IMX95_PIXEL_INTERLEAVER)

  • NXP i.MX95 display pixel link (CONFIG_DRM_IMX95_PIXEL_LINK)

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

Kernel driver

The driver for the video interface is located at:

File Description

drivers/phy/freescale/phy-fsl-imx8mp-lvds.c

Freescale i.MX8MP LVDS PHY driver

drivers/gpu/drm/bridge/imx/imx95-ldb.c

Freescale i.MX95 LVDS display bridge driver

drivers/gpu/drm/imx/dpu95/

NXP i.MX95 DPU driver

drivers/gpu/drm/bridge/imx/imx95-mipi-dsi.c

NXP i.MX95 driver for synopsys DW MIPI DSI

drivers/gpu/drm/bridge/imx/imx95-pixel-interleaver.c

NXP i.MX95 pixel interleaver driver

drivers/gpu/drm/bridge/imx/imx95-pixel-link.c

NXP i.MX95 display pixel link driver

Device tree bindings and customization

The video interfaces are defined on the i.MX95 SoC device tree include file:

i.MX95 device tree
mipi_dsi: dsi@4acf0000 {
	compatible = "nxp,imx95-mipi-dsi";

	[...]

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

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

			mipi_dsi_to_display_pixel_link0: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&display_pixel_link0_to_mipi_dsi>;
			};

			mipi_dsi_to_display_pixel_link1: endpoint@1 {
				reg = <1>;
				remote-endpoint = <&display_pixel_link1_to_mipi_dsi>;
			};
		};

		port@1 {
			reg = <1>;
		};
	};
};

dpu: display-controller@4b400000 {
	compatible = "nxp,imx95-dpu";

	[...]

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

		port@0 {
			reg = <0>;

			dpu_disp0_to_pixel_interleaver_disp0: endpoint {
				remote-endpoint = <&pixel_interleaver_disp0_to_dpu_disp0>;
			};
		};

		port@1 {
			reg = <1>;

			dpu_disp1_to_pixel_interleaver_disp1: endpoint {
				remote-endpoint = <&pixel_interleaver_disp1_to_dpu_disp1>;
			};
		};
	};
};

ldb: ldb@4 {
	compatible = "fsl,imx95-ldb";

	[...]

	channel@0 {
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0>;
		phys = <&ldb0_phy1>;
		phy-names = "lvds_phy";
		status = "disabled";

		port@0 {
			reg = <0>;

			ldb_ch0_to_display_pixel_link0: endpoint {
				remote-endpoint = <&display_pixel_link0_to_ldb_ch0>;
			};
		};

		port@1 {
			reg = <1>;
		};
	};

	channel@1 {
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <1>;
		phys = <&ldb1_phy1>;
		phy-names = "lvds_phy";
		status = "disabled";

		port@0 {
			reg = <0>;

			ldb_ch1_to_display_pixel_link1: endpoint {
				remote-endpoint = <&display_pixel_link1_to_ldb_ch1>;
			};
		};

		port@1 {
			reg = <1>;
		};
	};
};

ldb0_phy: phy@8 {
	compatible = "fsl,imx95-lvds0-phy";

	[...]

	ldb0_phy1: port@0 {
		reg = <0>;
		#phy-cells = <0>;
	};
};

ldb1_phy: phy@c {
	compatible = "fsl,imx95-lvds1-phy";

	[...]

	ldb1_phy1: port@0 {
		reg = <0>;
		#phy-cells = <0>;
	};
};

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

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

For information on configuring the boot logos see Customize boot logos.

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.