The LVDS Display Bridge (LDB) connects the Display Processing Unit (DPU) to an external LVDS display interface.

On the ConnectCore 8X SBC Pro:

  • There are two LVDS display connectors.

Kernel configuration

You can manage the LDB support through the following kernel configuration option:

  • Support for MX8QM LDB (CONFIG_DRM_IMX8QM_LDB)

  • Support for MX8QXP LDB (CONFIG_DRM_IMX8QXP_LDB)

  • Support for MX8MP LDB (CONFIG_DRM_IMX8MP_LDB)

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

Kernel driver

The driver for the LDB interface is located at:

File Description

drivers/gpu/drm/imx/imx8qm-ldb.c

i.MX8QM LDB driver

drivers/gpu/drm/imx/imx8qxp-ldb.c

i.MX8QXP LDB driver

drivers/gpu/drm/imx/imx8mp-ldb.c

i.MX8MP LDB driver

Device tree bindings and customization

The i.MX8QXP LDB interface is documented at Documentation/devicetree/bindings/display/imx/ldb.txt. The LDB interface is defined in the i.MX8QXP CPU and ConnectCore 8X SBC Pro device tree files.

Example: LVDS display bridge 1 (LDB1) on ConnectCore 8X SBC Pro

Definition of the LDB1

i.MX8QXP device tree
ldb1: ldb@562210e0 {
	#address-cells = <1>;
	#size-cells = <0>;
	compatible = "fsl,imx8qxp-ldb";
	clocks = <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_MISC2>,
		 <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_BYPASS>,
		 <&clk IMX_SC_R_LVDS_1 IMX_SC_PM_CLK_MISC2>,
		 <&clk IMX_SC_R_LVDS_1 IMX_SC_PM_CLK_BYPASS>;
	clock-names = "pixel", "bypass",
		      "aux_pixel", "aux_bypass";
	assigned-clocks = <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_MISC2>,
			  <&clk IMX_SC_R_LVDS_1 IMX_SC_PM_CLK_MISC2>;
	assigned-clock-parents = <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_BYPASS>,
				 <&clk IMX_SC_R_LVDS_1 IMX_SC_PM_CLK_BYPASS>;
	power-domains = <&pd IMX_SC_R_LVDS_0>,
			<&pd IMX_SC_R_LVDS_1>;
	power-domain-names = "main", "aux";
	gpr = <&lvds_region1>;
	fsl,auxldb = <&ldb2>;
	status = "disabled";

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

		port@0 {
			reg = <0>;

			ldb1_ch0: endpoint {
				remote-endpoint = <&dpu_disp0_ldb1_ch0>;
			};
		};
	};

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

		port@0 {
			reg = <0>;
			ldb1_ch1: endpoint {
				remote-endpoint = <&dpu_disp0_ldb1_ch1>;
			};
		};
	};
};

IOMUX configuration

The LVDS interfaces use dedicated pins. No IOMUX configuration is necessary. There is an IOMUX entry for associated GPIO pins.

ConnectCore 8X SBC Pro device tree
	pinctrl_lvds0: lvds0grp {
		fsl,pins = <
			/* LVDS0 PWM backlight */
			IMX8QXP_MIPI_DSI0_GPIO0_00_MIPI_DSI0_PWM0_OUT	0x00000020
		>;
	};

LVDS Panel: AUO 10" LCD display

ConnectCore 8X SBC Pro device tree
lvds0_panel: lvds0_panel@0 {
	compatible = "panel-lvds";
	backlight = <&lvds_backlight0>;
	power-supply = <&reg_5v_display>;
	width-mm = <216>;
	height-mm = <135>;
	data-mapping = "jeida-18";
	status = "disabled";

	port {
		panel_lvds0_in: endpoint {
			remote-endpoint = <&lvds0_out>;
		};
	};

	/* AUO G101EVN01.0 */
	panel-timing {
		clock-frequency = <68930000>;
		hactive = <1280>;
		vactive = <800>;
		hfront-porch = <120>;
		hback-porch = <0>;
		hsync-len = <8>;
		vback-porch = <10>;
		vfront-porch = <0>;
		vsync-len = <6>;
		hsync-active = <1>;
		vsync-active = <1>;
	};
};

LVDS channels

ConnectCore 8X SBC Pro device tree
&ldb1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_lvds0>;
	status = "disabled";

	lvds0: lvds-channel@0 {
		fsl,data-mapping = "jeida";
		fsl,data-width = <24>;
		digi,bits-per-pixel = <16>;
		status = "disabled";

		port@1 {
			reg = <1>;

			lvds0_out: endpoint {
				remote-endpoint = <&panel_lvds0_in>;
			};
		};
	};
};

&ldb2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_lvds1>;
	status = "disabled";

	lvds1: lvds-channel@0 {
		fsl,data-mapping = "jeida";
		fsl,data-width = <24>;
		digi,bits-per-pixel = <16>;
		status = "disabled";

		port@1 {
			reg = <1>;

			lvds1_out: endpoint {
				remote-endpoint = <&panel_lvds1_in>;
			};
		};
	};
};

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

Playing a video

To play a video using Gstreamer:

# gplay-1.0 /tmp/myvideo.mp4

Enable LVDS1

The default ConnectCore 8X SBC Pro device tree only enables the LVDS0 display. Digi provides a pre-compiled device tree overlay to enable support of the LVDS1 display as extended desktop of LVDS0. To enable the LVDS1 overlay, run the following command in U-Boot:

=> setenv overlays _ov_board_lvds1_ccimx8x-sbc-pro.dtbo

Enable support for Fusion 10" display

The default ConnectCore 8X SBC Pro device tree enables support for the AUO 10" LCD display. Digi provides a pre-compiled device tree overlay to support Fusion 10" (F10A-0102) LCD display on the LVDS0 connector. To enable the overlay with the Fusion 10" LCD display, run the following command in U-Boot:

=> setenv overlays _ov_board_hsd101pfw2-lvds_ccimx8x-sbc-pro.dtbo

See Device tree files and overlays for more information.