The Lontium LT8912 MIPI-to-HDMI bridge converts the i.MX8M Nano MIPI-DSI signal to one suitable for HDMI displays.

To use this bridge, set the S1.4 micro-switch to OFF

Kernel configuration

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

  • Lontium LT8912 MIPI-DSI to LVDS and HDMI/MHL bridge (CONFIG_DRM_LONTIUM_LT8912)

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

Kernel driver

The driver for the LT8912 bridge is located at:

File Description

drivers/gpu/drm/bridge/lt8912.c

LT8912 MIPI-to-HDMI bridge driver

Device tree bindings and customization

The LT8912 bridge is documented at Documentation/devicetree/bindings/display/bridge/lontium,lt8912.txt. The LT8912 bridge is defined in the ConnectCore 8M Nano Development Kit device tree file.

Definition of the LT8912

ConnectCore 8M Nano Development Kit device tree
&i2c3 {
	clock-frequency = <100000>;
	pinctrl-names = "default", "gpio";
	pinctrl-0 = <&pinctrl_i2c3>;
	pinctrl-1 = <&pinctrl_i2c3_gpio>;
	scl-gpios = <&gpio5 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
	sda-gpios = <&gpio5 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
	status = "okay";

	[...]

	lt_bridge: lt8912@48 {
		compatible = "lontium,lt8912";
		reg = <0x48>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_lt8912>, <&pinctrl_lt8912_hpd>;
		reset-gpios = <&gpio3 7 GPIO_ACTIVE_LOW>;
		hpd-gpios = <&gpio3 8 GPIO_ACTIVE_HIGH>;
		digi,dsi-lanes = <4>;
		vdd1-supply = <&reg_5v_board>;
		no-edid;
		status = "okay";

		port {
			lt8912_1_in: endpoint {
				/* add lanes */
				remote-endpoint = <&mipi_dsi_hdmi_out>;
			};
		};

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

[...]

&mipi_dsi {
	status = "okay";
	#address-cells = <0x1>;
	#size-cells = <0x0>;

	port@1 {
		mipi_dsi_hdmi_out: endpoint {
			remote-endpoint = <&lt8912_1_in>;
			attach-bridge;
		};
	};

	[...]
};

IOMUX configuration

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

ConnectCore 8M Nano Development Kit device tree
	pinctrl_lt8912: lt8912grp {
		fsl,pins = <
			/* Reset */
			MX8MN_IOMUXC_NAND_DATA01_GPIO3_IO7	0x19
			/* Interrupt */
			MX8MN_IOMUXC_NAND_DATA03_GPIO3_IO9	0x19
		>;
	};