The Lontium LT8912B MIPI-to-HDMI bridge converts the i.MX93 MIPI DSI signal to one suitable for HDMI displays.

To use this bridge, ensure jumper J28 is open (default configuration). Closing the jumper routes the MIPI DSI video signals to the J29 display connector.

Kernel configuration

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

  • Lontium LT8912B DSI/HDMI bridge (CONFIG_DRM_LONTIUM_LT8912B)

This option is enabled as built-in on the default ConnectCore 93 kernel configuration file.

Kernel driver

The driver for the LT8912B bridge is located at:

File Description

drivers/gpu/drm/bridge/lontium-lt8912b.c

Lontium LT8912B DSI/HDMI bridge driver

Device tree bindings and customization

The LT8912B bridge is documented at Documentation/devicetree/bindings/display/bridge/lontium,lt8912b.yaml. The LT8912B bridge is defined in the ConnectCore 93 Development Kit device tree file.

Definition of the LT8912B

ConnectCore 93 Development Kit device tree
/ {
[...]
	hdmi-connector {
		compatible = "hdmi-connector";
		label = "hdmi";
		type = "a";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_hdmi_hpd>;
		hdmi-pwr-supply = <&reg_5v_board>;
		hpd-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;

		port {
			hdmi_connector_in: endpoint {
				remote-endpoint = <&lt8912_out>;
			};
		};
	};
[...]

&lpi2c4 {
	#address-cells = <1>;
	#size-cells = <0>;
	clock-frequency = <400000>;
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&pinctrl_lpi2c4>;
	pinctrl-1 = <&pinctrl_lpi2c4>;
	status = "okay";

	[...]

	lt_bridge: lt8912@48 {
		compatible = "lontium,lt8912b";
		reg = <0x48>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_lt8912>;
		reset-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
		status = "okay";

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

			port@0 {
				reg = <0>;
				lt8912_1_in: endpoint {
					data-lanes = <1 2 3 4>;
					remote-endpoint = <&mipi_dsi_hdmi_out>;
				};
			};

			port@1 {
				reg = <1>;
				lt8912_out: endpoint {
					remote-endpoint = <&hdmi_connector_in>;
				};
			};
		};

		display-timings {
			native-mode = <&timing1>;

			/* High Definition */
			timing0: timing0 {
				clock-frequency = <74250000>;
				hactive = <1280>;
				vactive = <720>;
				hfront-porch = <110>;
				hsync-len = <40>;
				hback-porch = <220>;
				vfront-porch = <5>;
				vsync-len = <5>;
				vback-porch = <20>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <0>;
				pixelclk-active = <0>;
			};

			/* Full HD */
			timing1: timing1 {
				clock-frequency = <148500000>;
				hactive = <1920>;
				vactive = <1080>;
				hfront-porch = <88>;
				hsync-len = <44>;
				hback-porch = <148>;
				vfront-porch = <36>;
				vsync-len = <5>;
				vback-porch = <4>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <0>;
				pixelclk-active = <0>;
			};
		};
	};
};
[...]

&dsi {
	status = "okay";

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

			mipi_dsi_hdmi_out: endpoint {
				remote-endpoint = <&lt8912_1_in>;
			};
		};
	};
};

IOMUX configuration

The following IOMUX entry configures the associated reset and hotplug-detection GPIO pins.

ConnectCore 93 Development Kit device tree
	/* HDMI bridge IOs */
	pinctrl_lt8912: lt8912grp {
		fsl,pins = <
			/* Reset */
			MX93_PAD_I2C2_SDA__GPIO1_IO03	0x31e
		>;
	};

	/* HDMI HPD */
	pinctrl_hdmi_hpd: hdmi_hpd_grp {
		fsl,pins = <
			MX93_PAD_SAI1_TXC__GPIO1_IO12	0x31e
		>;
	};