The Lontium LT8912B 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 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 8M Nano kernel configuration file.
Kernel driver
The driver for the LT8912B bridge is located at:
File | Description |
---|---|
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 8M Nano Development Kit device tree file.
Definition of the LT8912B
[...]
hdmi-connector {
compatible = "hdmi-connector";
label = "hdmi";
type = "a";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hdmi_hpd>;
hdmi-pwr-supply = <®_5v_board>;
hpd-gpios = <&gpio3 8 GPIO_ACTIVE_HIGH>;
status = "okay=;
port {
hdmi_connector_in: endpoint {
remote-endpoint = <<8912_out>;
};
};
};
[...]
&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,lt8912b";
reg = <0x48>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lt8912>;
reset-gpios = <&gpio3 7 GPIO_ACTIVE_LOW>;
vdd-supply = <®_3v3_ext>;
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>;
};
};
};
};
[...]
&mipi_dsi {
status = "okay";
#address-cells = <0x1>;
#size-cells = <0x0>;
port@1 {
mipi_dsi_hdmi_out: endpoint {
remote-endpoint = <<8912_1_in>;
attach-bridge;
};
};
[...]
};
IOMUX configuration
The following IOMUX entry configures the associated reset and hotplug-detection GPIO pins.
pinctrl_lt8912: lt8912grp {
fsl,pins = <
/* Reset */
MX8MN_IOMUXC_NAND_DATA01_GPIO3_IO7 0x19
/* Interrupt */
MX8MN_IOMUXC_NAND_DATA03_GPIO3_IO9 0x19
>;
};
pinctrl_hdmi_hpd: hdmi_hpd_grp {
fsl,pins = <
/* Hotplug detect */
MX8MN_IOMUXC_NAND_DATA02_GPIO3_IO8 0x19
>;
};