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 |
---|---|
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
/ {
[...]
hdmi-connector {
compatible = "hdmi-connector";
label = "hdmi";
type = "a";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_hdmi_hpd>;
hdmi-pwr-supply = <®_5v_board>;
hpd-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
port {
hdmi_connector_in: endpoint {
remote-endpoint = <<8912_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 = <<8912_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.
pinctrl_lt8912: lt8912grp {
fsl,pins = <
/* Reset */
MX93_PAD_I2C2_SDA__GPIO1_IO03 0x31e
/* Interrupt */
MX93_PAD_CCM_CLKO2__GPIO3_IO27 0x31e
>;
};