Re: [PATCH v5 3/6] arm64: dts: imx8mm: imx8mp: Add HDMI DTOs for Data Modul i.MX8M Mini and Plus eDM SBC

From: Frank Li

Date: Mon Jul 27 2026 - 13:04:58 EST


On Thu, Jul 16, 2026 at 07:56:55AM +0200, Marek Vasut wrote:
> Add DT overlay for the DSI-to-HDMI adapter eDM-MOD-iMX8Mm-HDMI populated
> with Lontium LT9611 bridge. This adapter can be optionally populated onto
> the eDM SBC.
>
> Signed-off-by: Marek Vasut <marex@xxxxxxxxxxxx>
> ---
> Cc: Conor Dooley <conor+dt@xxxxxxxxxx>
> Cc: Fabio Estevam <festevam@xxxxxxxxx>
> Cc: Frank Li <Frank.Li@xxxxxxx>
> Cc: Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>
> Cc: Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx>
> Cc: Rob Herring <robh@xxxxxxxxxx>
> Cc: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
> Cc: devicetree@xxxxxxxxxxxxxxx
> Cc: imx@xxxxxxxxxxxxxxx
> Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> ---
> V2: Deduplicate the DTOs further
> V3: New patch split from the original megapatch
> V4: Rebase on next-20260703
> V5: No change
> ---
> arch/arm64/boot/dts/freescale/Makefile | 12 +++
> ...l-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtsi | 94 +++++++++++++++++++
> ...l-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtso | 17 ++++
> ...l-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtso | 17 ++++
> 4 files changed, 140 insertions(+)
> create mode 100644 arch/arm64/boot/dts/freescale/imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtsi
> create mode 100644 arch/arm64/boot/dts/freescale/imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtso
> create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtso
>
> diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
> index e0630f7bc58b7..1c70271138577 100644
> --- a/arch/arm64/boot/dts/freescale/Makefile
> +++ b/arch/arm64/boot/dts/freescale/Makefile
> @@ -120,6 +120,10 @@ dtb-$(CONFIG_ARCH_MXC) += imx8dxp-tqma8xdp-mba8xx.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8dxp-tqma8xdps-mb-smarc-2.dtb
> dtb-$(CONFIG_ARCH_MXC) += imx8mm-beacon-kit.dtb
>
> +imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi-dtbs := \
> + imx8mm-data-modul-edm-sbc.dtb \
> + imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtbo
> +
> imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-lvds-g070y2-l01-dtbs := \
> imx8mm-data-modul-edm-sbc.dtb \
> imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-lvds-g070y2-l01.dtbo
> @@ -153,6 +157,8 @@ imx8mm-data-modul-edm-sbc-overlay-edm-sbc-imx8mm-rev900-dtbs := \
> imx8mm-data-modul-edm-sbc-overlay-edm-sbc-imx8mm-rev900.dtbo
>
> dtb-$(CONFIG_ARCH_MXC) += imx8mm-data-modul-edm-sbc.dtb \
> + imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtb \
> + imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtbo \
> imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-lvds-g070y2-l01.dtb \
> imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-lvds-g070y2-l01.dtbo \
> imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-lvds-g101ice-l01.dtb \
> @@ -295,6 +301,10 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mp-beacon-kit.dtb
> DTC_FLAGS_imx8mp-cubox-m := -@
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-cubox-m.dtb
>
> +imx8mp-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi-dtbs := \
> + imx8mp-data-modul-edm-sbc.dtb \
> + imx8mp-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtbo
> +
> imx8mp-data-modul-edm-sbc-overlay-edm-mod-imx8mm-lvds-g070y2-l01-dtbs := \
> imx8mp-data-modul-edm-sbc.dtb \
> imx8mp-data-modul-edm-sbc-overlay-edm-mod-imx8mm-lvds-g070y2-l01.dtbo
> @@ -370,6 +380,8 @@ imx8mp-data-modul-edm-sbc-overlay-edm-sbc-imx8mp-rev902-dtbs := \
> imx8mp-data-modul-edm-sbc-overlay-edm-sbc-imx8mp-rev902.dtbo
>
> dtb-$(CONFIG_ARCH_MXC) += imx8mp-data-modul-edm-sbc.dtb \
> + imx8mp-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtb \
> + imx8mp-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtbo \
> imx8mp-data-modul-edm-sbc-overlay-edm-mod-imx8mm-lvds-g070y2-l01.dtb \
> imx8mp-data-modul-edm-sbc-overlay-edm-mod-imx8mm-lvds-g070y2-l01.dtbo \
> imx8mp-data-modul-edm-sbc-overlay-edm-mod-imx8mm-lvds-g101ice-l01.dtb \
> diff --git a/arch/arm64/boot/dts/freescale/imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtsi
> new file mode 100644
> index 0000000000000..c0f2aa462104f
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtsi
> @@ -0,0 +1,94 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright 2026 Marek Vasut
> + */
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> +&{/} {
> + hdmi-out {
> + compatible = "hdmi-connector";
> + type = "a";
> +
> + port {
> + hdmi_con: endpoint {
> + remote-endpoint = <&lt9611_out>;
> + };
> + };
> + };
> +};
> +
> +&i2c_display { /* Display connector I2C */
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + lt9611_codec: hdmi-bridge@3b {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_panel_expansion>;
> + compatible = "lontium,lt9611";
> + reg = <0x3b>;

compatible is first property
reg is second.

Frank
> + vcc-supply = <&buck4_reg>; /* X400 pin 55, +3V3_S0 */
> + vdd-supply = <&buck5_reg>; /* X400 pin 51, +1V8_S0 */
> +
> + /* Audio I2S not described */
> + #sound-dai-cells = <1>;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + lt9611_a: endpoint {
> + remote-endpoint = <&mipi_dsi_bridge1_out>;
> + };
> + };
> +
> + port@2 {
> + reg = <2>;
> +
> + lt9611_out: endpoint {
> + remote-endpoint = <&hdmi_con>;
> + };
> + };
> + };
> + };
> +
> + eeprom@50 {
> + compatible = "atmel,24c02";
> + reg = <0x50>;
> + pagesize = <16>;
> + };
> +};
> +
> +&iomuxc {
> + /* Free &pinctrl_panel_expansion from hog for lt9611_codec above */
> + pinctrl-0 = <&pinctrl_hog_misc>, <&pinctrl_hog_feature>,
> + <&pinctrl_hog_panel>, <&pinctrl_hog_sbc>;
> +};
> +
> +&mipi_dsi {
> + /* HDMI 148.5 MHz x2 (DDR) x3 (24bpp / 8) */
> + samsung,burst-clock-frequency = <891000000>;
> + samsung,esc-clock-frequency = <10000000>;
> + status = "okay";
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@1 {
> + reg = <1>;
> +
> + mipi_dsi_bridge1_out: endpoint {
> + clock-lanes = <0>;
> + data-lanes = <1 2 3 4>;
> + /* Clock and data lanes have DN/DP swapped */
> + lane-polarities = <1 1 1 1 1>;
> + remote-endpoint = <&lt9611_a>;
> + };
> + };
> + };
> +};
> diff --git a/arch/arm64/boot/dts/freescale/imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtso b/arch/arm64/boot/dts/freescale/imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtso
> new file mode 100644
> index 0000000000000..334ba299a3541
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtso
> @@ -0,0 +1,17 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright 2022-2026 Marek Vasut
> + */
> +/dts-v1/;
> +/plugin/;
> +
> +#include "imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtsi"
> +
> +&lt9611_codec {
> + interrupts-extended = <&gpio2 3 IRQ_TYPE_EDGE_FALLING>;
> + reset-gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
> +};
> +
> +&lcdif {
> + status = "okay";
> +};
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtso b/arch/arm64/boot/dts/freescale/imx8mp-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtso
> new file mode 100644
> index 0000000000000..d8114fd869b54
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtso
> @@ -0,0 +1,17 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright 2022-2026 Marek Vasut
> + */
> +/dts-v1/;
> +/plugin/;
> +
> +#include "imx8mm-data-modul-edm-sbc-overlay-edm-mod-imx8mm-hdmi.dtsi"
> +
> +&lt9611_codec {
> + interrupts-extended = <&gpio4 19 IRQ_TYPE_EDGE_FALLING>;
> + reset-gpios = <&gpio4 0 GPIO_ACTIVE_HIGH>;
> +};
> +
> +&lcdif1 {
> + status = "okay";
> +};
> --
> 2.53.0
>