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

[...]

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

IOMUX configuration

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

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