[PATCH 1/8] ARM: dts: imx6ul: Add LVDS DT overlay for TQMa6ULx
From: Alexander Stein
Date: Fri Oct 02 2026 - 04:15:27 EST
The generic setup like pinmux and lcdif <-> display connection is done
in the mainboard while LVDS specific setup is done in the overlay.
As this mainboard also supports parallel display the LVDS connection
using an LVDS encoder is done in the overlay.
Signed-off-by: Alexander Stein <alexander.stein@xxxxxxxxxxxxxxx>
---
arch/arm/boot/dts/nxp/imx/Makefile | 4 ++
...6ul-tqma6ul2-mba6ulx-lvds-tm070jvhg33.dtso | 69 +++++++++++++++++++
arch/arm/boot/dts/nxp/imx/mba6ulx.dtsi | 64 +++++++++++++++++
3 files changed, 137 insertions(+)
create mode 100644 arch/arm/boot/dts/nxp/imx/imx6ul-tqma6ul2-mba6ulx-lvds-tm070jvhg33.dtso
diff --git a/arch/arm/boot/dts/nxp/imx/Makefile b/arch/arm/boot/dts/nxp/imx/Makefile
index c5caca92ea10c..ea0799ba1893e 100644
--- a/arch/arm/boot/dts/nxp/imx/Makefile
+++ b/arch/arm/boot/dts/nxp/imx/Makefile
@@ -420,6 +420,10 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
imx6ulz-14x14-evk.dtb \
imx6ulz-bsh-smm-m2.dtb
+imx6ul-tqma6ul2-mba6ulx-lvds-tm070jvhg33-dtbs += imx6ul-tqma6ul2-mba6ulx.dtb imx6ul-tqma6ul2-mba6ulx-lvds-tm070jvhg33.dtbo
+
+dtb-$(CONFIG_SOC_IMX6UL) += imx6ul-tqma6ul2-mba6ulx-lvds-tm070jvhg33.dtb
+
imx7d-colibri-emmc-aster-panel-cap-touch-7inch-parallel-dtbs := \
imx7d-colibri-emmc-aster.dtb \
imx7d-colibri-emmc-panel-cap-touch-7inch-parallel.dtbo
diff --git a/arch/arm/boot/dts/nxp/imx/imx6ul-tqma6ul2-mba6ulx-lvds-tm070jvhg33.dtso b/arch/arm/boot/dts/nxp/imx/imx6ul-tqma6ul2-mba6ulx-lvds-tm070jvhg33.dtso
new file mode 100644
index 0000000000000..e44b7461001ea
--- /dev/null
+++ b/arch/arm/boot/dts/nxp/imx/imx6ul-tqma6ul2-mba6ulx-lvds-tm070jvhg33.dtso
@@ -0,0 +1,69 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright 2018-2026 TQ-Systems GmbH <linux@xxxxxxxxxxxxxxx>,
+ * D-82229 Seefeld, Germany.
+ * Author: Markus Niebel
+ * Author: Alexander Stein
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+&{/} {
+ lvds_encoder: lvds-encoder {
+ compatible = "ti,sn75lvds83", "lvds-encoder";
+ powerdown-gpios = <&expander_out0 3 GPIO_ACTIVE_LOW>;
+ power-supply = <®_mba6ul_3v3>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ lvds_encoder_in: endpoint {
+ remote-endpoint = <&lcdif_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ lvds_encoder_out: endpoint {
+ remote-endpoint = <&display_in>;
+ };
+ };
+ };
+ };
+};
+
+&backlight {
+ pwms = <&pwm2 0 62500 0>;
+ brightness-levels = <0 16 32 64 96 128 160 192 224 255>;
+ default-brightness-level = <5>;
+ status = "okay";
+};
+
+&display {
+ compatible = "tianma,tm070jvhg33";
+ power-supply = <®_mba6ul_5v0>;
+ status = "okay";
+};
+
+&display_in {
+ remote-endpoint = <&lvds_encoder_out>;
+};
+
+/* for lcd reset != #stkrst */
+/* place r2021, resolder r2022 and iomux following: */
+/* MX6UL_PAD_LCD_RESET__GPIO3_IO04 0x79 */
+&lcdif {
+ status = "okay";
+};
+
+&lcdif_out {
+ remote-endpoint = <&lvds_encoder_in>;
+};
diff --git a/arch/arm/boot/dts/nxp/imx/mba6ulx.dtsi b/arch/arm/boot/dts/nxp/imx/mba6ulx.dtsi
index fd05479bbffc9..ba79bb9760806 100644
--- a/arch/arm/boot/dts/nxp/imx/mba6ulx.dtsi
+++ b/arch/arm/boot/dts/nxp/imx/mba6ulx.dtsi
@@ -30,6 +30,21 @@ beeper: beeper {
gpios = <&expander_out1 6 GPIO_ACTIVE_HIGH>;
};
+ display: display {
+ /*
+ * Display is not fixed, so compatible has to be added from
+ * DT overlay
+ */
+ backlight = <&backlight>;
+ status = "disabled";
+
+ port {
+ display_in: endpoint {
+ remote-endpoint = <&lcdif_out>;
+ };
+ };
+ };
+
gpio_buttons: gpio-keys {
compatible = "gpio-keys";
pinctrl-names = "default";
@@ -299,6 +314,17 @@ se97b: eeprom@51 {
};
};
+&lcdif {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_lcdif>, <&pinctrl_lcdifctrl>;
+
+ port {
+ lcdif_out: endpoint {
+ remote-endpoint = <&display_in>;
+ };
+ };
+};
+
&pwm2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pwm2>;
@@ -466,6 +492,44 @@ MX6UL_PAD_UART2_CTS_B__FLEXCAN2_TX 0x1b020
>;
};
+ pinctrl_lcdif: lcdifgrp {
+ fsl,pins = <
+ MX6UL_PAD_LCD_DATA00__LCDIF_DATA00 0x79
+ MX6UL_PAD_LCD_DATA01__LCDIF_DATA01 0x79
+ MX6UL_PAD_LCD_DATA02__LCDIF_DATA02 0x79
+ MX6UL_PAD_LCD_DATA03__LCDIF_DATA03 0x79
+ MX6UL_PAD_LCD_DATA04__LCDIF_DATA04 0x79
+ MX6UL_PAD_LCD_DATA05__LCDIF_DATA05 0x79
+ MX6UL_PAD_LCD_DATA06__LCDIF_DATA06 0x79
+ MX6UL_PAD_LCD_DATA07__LCDIF_DATA07 0x79
+ MX6UL_PAD_LCD_DATA08__LCDIF_DATA08 0x79
+ MX6UL_PAD_LCD_DATA09__LCDIF_DATA09 0x79
+ MX6UL_PAD_LCD_DATA10__LCDIF_DATA10 0x79
+ MX6UL_PAD_LCD_DATA11__LCDIF_DATA11 0x79
+ MX6UL_PAD_LCD_DATA12__LCDIF_DATA12 0x79
+ MX6UL_PAD_LCD_DATA13__LCDIF_DATA13 0x79
+ MX6UL_PAD_LCD_DATA14__LCDIF_DATA14 0x79
+ MX6UL_PAD_LCD_DATA15__LCDIF_DATA15 0x79
+ MX6UL_PAD_LCD_DATA16__LCDIF_DATA16 0x79
+ MX6UL_PAD_LCD_DATA17__LCDIF_DATA17 0x79
+ MX6UL_PAD_LCD_DATA18__LCDIF_DATA18 0x79
+ MX6UL_PAD_LCD_DATA19__LCDIF_DATA19 0x79
+ MX6UL_PAD_LCD_DATA20__LCDIF_DATA20 0x79
+ MX6UL_PAD_LCD_DATA21__LCDIF_DATA21 0x79
+ MX6UL_PAD_LCD_DATA22__LCDIF_DATA22 0x79
+ MX6UL_PAD_LCD_DATA23__LCDIF_DATA23 0x79
+ >;
+ };
+
+ pinctrl_lcdifctrl: lcdifctrlgrp {
+ fsl,pins = <
+ MX6UL_PAD_LCD_CLK__LCDIF_CLK 0x79
+ MX6UL_PAD_LCD_ENABLE__LCDIF_ENABLE 0x79
+ MX6UL_PAD_LCD_HSYNC__LCDIF_HSYNC 0x79
+ MX6UL_PAD_LCD_VSYNC__LCDIF_VSYNC 0x79
+ >;
+ };
+
pinctrl_pwm2: pwm2grp {
fsl,pins = <
/* 100 k PD, DSE 120 OHM, SPEED LO */
--
2.55.0