[PATCH 3/3] arm64: dts: imx91-9x9-qsb: Add tianma,tm050rdh03 panel

From: Liu Ying

Date: Wed Jul 29 2026 - 05:55:08 EST


Support tianma,tm050rdh03 DPI panel on i.MX91 9x9 QSB.

Signed-off-by: Liu Ying <victor.liu@xxxxxxx>
---
arch/arm64/boot/dts/freescale/Makefile | 4 +
.../freescale/imx91-9x9-qsb-tianma-tm050rdh03.dtso | 104 +++++++++++++++++++++
arch/arm64/boot/dts/freescale/imx91-9x9-qsb.dts | 51 ++++++++++
3 files changed, 159 insertions(+)

diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index 95ae85ab4adf..ff8cbe1c20a6 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -610,6 +610,10 @@ dtb-$(CONFIG_ARCH_MXC) += imx8qxp-tqma8xqps-mb-smarc-2.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8ulp-9x9-evk.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8ulp-evk.dtb
dtb-$(CONFIG_ARCH_MXC) += imx91-9x9-qsb.dtb
+
+imx91-9x9-qsb-tianma-tm050rdh03-dtbs += imx91-9x9-qsb.dtb imx91-9x9-qsb-tianma-tm050rdh03.dtbo
+dtb-$(CONFIG_ARCH_MXC) += imx91-9x9-qsb-tianma-tm050rdh03.dtb
+
dtb-$(CONFIG_ARCH_MXC) += imx91-11x11-evk.dtb
dtb-$(CONFIG_ARCH_MXC) += imx91-11x11-frdm.dtb
dtb-$(CONFIG_ARCH_MXC) += imx91-11x11-frdm-s.dtb
diff --git a/arch/arm64/boot/dts/freescale/imx91-9x9-qsb-tianma-tm050rdh03.dtso b/arch/arm64/boot/dts/freescale/imx91-9x9-qsb-tianma-tm050rdh03.dtso
new file mode 100644
index 000000000000..01c22f92e0d8
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx91-9x9-qsb-tianma-tm050rdh03.dtso
@@ -0,0 +1,104 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2026 NXP
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pwm/pwm.h>
+#include "imx91-pinfunc.h"
+
+&{/} {
+ backlight: backlight {
+ compatible = "pwm-backlight";
+ pwms = <&tpm1 3 40000 PWM_POLARITY_INVERTED>; /* 25KHz PWM */
+ brightness-levels = <0 100>;
+ num-interpolated-steps = <100>;
+ default-brightness-level = <80>;
+ power-supply = <&reg_exp_5v>;
+ };
+
+ panel {
+ compatible = "tianma,tm050rdh03";
+ backlight = <&backlight>;
+ enable-gpios = <&pcal6524 8 GPIO_ACTIVE_HIGH>;
+ power-supply = <&reg_exp_3v3>;
+
+ port {
+ panel_in: endpoint {
+ remote-endpoint = <&dpi_to_panel>;
+ };
+ };
+ };
+};
+
+&dpi_bridge {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_lcdif>, <&gpio_fun>, <&sai3_tx_fun>, <&sai3_enable>;
+ status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@1 {
+ reg = <1>;
+
+ dpi_to_panel: endpoint {
+ remote-endpoint = <&panel_in>;
+ bus-width = <18>;
+ };
+ };
+ };
+};
+
+&iomuxc {
+ pinctrl_lcdif: lcdifgrp {
+ fsl,pins = <
+ MX91_PAD_GPIO_IO00__MEDIAMIX_DISP_CLK 0x31e
+ MX91_PAD_GPIO_IO01__MEDIAMIX_DISP_DE 0x31e
+ MX91_PAD_GPIO_IO02__MEDIAMIX_DISP_VSYNC 0x31e
+ MX91_PAD_GPIO_IO03__MEDIAMIX_DISP_HSYNC 0x31e
+ MX91_PAD_GPIO_IO04__MEDIAMIX_DISP_DATA0 0x31e
+ MX91_PAD_GPIO_IO05__MEDIAMIX_DISP_DATA1 0x31e
+ MX91_PAD_GPIO_IO06__MEDIAMIX_DISP_DATA2 0x31e
+ MX91_PAD_GPIO_IO07__MEDIAMIX_DISP_DATA3 0x31e
+ MX91_PAD_GPIO_IO08__MEDIAMIX_DISP_DATA4 0x31e
+ MX91_PAD_GPIO_IO09__MEDIAMIX_DISP_DATA5 0x31e
+ MX91_PAD_GPIO_IO10__MEDIAMIX_DISP_DATA6 0x31e
+ MX91_PAD_GPIO_IO11__MEDIAMIX_DISP_DATA7 0x31e
+ MX91_PAD_GPIO_IO12__MEDIAMIX_DISP_DATA8 0x31e
+ MX91_PAD_GPIO_IO13__MEDIAMIX_DISP_DATA9 0x31e
+ MX91_PAD_GPIO_IO14__MEDIAMIX_DISP_DATA10 0x31e
+ MX91_PAD_GPIO_IO15__MEDIAMIX_DISP_DATA11 0x31e
+ MX91_PAD_GPIO_IO16__MEDIAMIX_DISP_DATA12 0x31e
+ MX91_PAD_GPIO_IO17__MEDIAMIX_DISP_DATA13 0x31e
+ MX91_PAD_GPIO_IO18__MEDIAMIX_DISP_DATA14 0x31e
+ MX91_PAD_GPIO_IO19__MEDIAMIX_DISP_DATA15 0x31e
+ MX91_PAD_GPIO_IO20__MEDIAMIX_DISP_DATA16 0x31e
+ MX91_PAD_GPIO_IO21__MEDIAMIX_DISP_DATA17 0x31e
+ >;
+ };
+
+ pinctrl_tpm1_ch3: tpm1ch3grp {
+ fsl,pins = <
+ MX91_PAD_UART2_TXD__TPM1_CH3 0x31e
+ >;
+ };
+};
+
+&lcdif {
+ status = "okay";
+};
+
+&media_blk_ctrl {
+ status = "okay";
+};
+
+&tpm1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_tpm1_ch3>;
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/freescale/imx91-9x9-qsb.dts b/arch/arm64/boot/dts/freescale/imx91-9x9-qsb.dts
index 044b37fcc0ba..f1ed7983226b 100644
--- a/arch/arm64/boot/dts/freescale/imx91-9x9-qsb.dts
+++ b/arch/arm64/boot/dts/freescale/imx91-9x9-qsb.dts
@@ -75,6 +75,27 @@ sai1_en_mux: mux-controller-2 {
mux-gpios = <&pcal6524 9 GPIO_ACTIVE_HIGH>;
};

+ exp_mux: mux-controller-3 {
+ compatible = "gpio-mux";
+ #mux-control-cells = <0>;
+ #mux-state-cells = <1>;
+ mux-gpios = <&pcal6524 22 GPIO_ACTIVE_HIGH>;
+ };
+
+ sai3_tx_rx_mux: mux-controller-4 {
+ compatible = "gpio-mux";
+ #mux-control-cells = <0>;
+ #mux-state-cells = <1>;
+ mux-gpios = <&pcal6524 14 GPIO_ACTIVE_HIGH>;
+ };
+
+ sai3_en_mux: mux-controller-5 {
+ compatible = "gpio-mux";
+ #mux-control-cells = <0>;
+ #mux-state-cells = <1>;
+ mux-gpios = <&pcal6524 23 GPIO_ACTIVE_HIGH>;
+ };
+
pinctrl-gpiomux {
compatible = "pinctrl-multiplexer";

@@ -82,6 +103,10 @@ can_fun: can-grp {
mux-states = <&can_mux 1>;
};

+ gpio_fun: exp-grp {
+ mux-states = <&exp_mux 0>;
+ };
+
m2_fun: m2-grp {
mux-states = <&sai1_mux 1>;
};
@@ -101,6 +126,32 @@ sai1_enable: sai1-enable-grp {
sai1_fun: sai1-grp {
mux-states = <&sai1_mux 0>;
};
+
+ sai3_enable: sai3-enable-grp {
+ mux-states = <&sai3_en_mux 0>;
+ };
+
+ sai3_tx_fun: sai3-tx-grp {
+ mux-states = <&sai3_tx_rx_mux 0>;
+ };
+ };
+
+ reg_exp_3v3: regulator-exp-3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "EXP_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&pcal6524 21 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ reg_exp_5v: regulator-exp-5v {
+ compatible = "regulator-fixed";
+ regulator-name = "EXP_5V";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ gpio = <&pcal6524 4 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
};

reg_vref_1v8: regulator-adc-vref {

--
2.43.0