* [PATCH] arm64: dts: imx8mn: Add display DT overlays for the ifm VHIP4 EvalBoard
@ 2026-09-08 21:53 Marek Vasut
2026-09-08 22:06 ` sashiko-bot
0 siblings, 1 reply; 2+ messages in thread
From: Marek Vasut @ 2026-09-08 21:53 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Fedor Ross, Marek Vasut, Conor Dooley, Fabio Estevam, Frank Li,
Krzysztof Kozlowski, Pengutronix Kernel Team, Rob Herring,
Sascha Hauer, devicetree, imx, linux-kernel
From: Fedor Ross <fedor.ross@ifm.com>
Add display DT overlays for the ifm VHIP4 EvalBoard v1. This
includes two expansion modules, one populated with Displaytech
DT050BTFT-PTS panel, and the NXP ADV7533 DSI-to-HDMI adapter.
The Displaytech DT050BTFT-PTS is configured in three different
DSI lane counts to allow testing all possible DSI lane count
configurations of the VHIP4 EvalBoard.
Signed-off-by: Fedor Ross <fedor.ross@ifm.com>
Co-developed-by: Marek Vasut <marex@nabladev.com>
Signed-off-by: Marek Vasut <marex@nabladev.com>
---
Cc: Conor Dooley <conor+dt@kernel.org>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Frank Li <Frank.Li@nxp.com>
Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Rob Herring <robh@kernel.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: devicetree@vger.kernel.org
Cc: imx@lists.linux.dev
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
---
arch/arm64/boot/dts/freescale/Makefile | 16 ++
...-evalboard-v1-overlay-dt050btft-1lane.dtso | 16 ++
...-evalboard-v1-overlay-dt050btft-2lane.dtso | 16 ++
...-evalboard-v1-overlay-dt050btft-4lane.dtso | 16 ++
...evalboard-v1-overlay-dt050btft-common.dtsi | 155 ++++++++++++++++++
...evalboard-v1-overlay-nxp-adv7533-hdmi.dtso | 104 ++++++++++++
6 files changed, 323 insertions(+)
create mode 100644 arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-1lane.dtso
create mode 100644 arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-2lane.dtso
create mode 100644 arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-4lane.dtso
create mode 100644 arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-common.dtsi
create mode 100644 arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-nxp-adv7533-hdmi.dtso
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index 984642146dd91..1cbf7205d577c 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -319,6 +319,12 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mn-var-som-symphony.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mn-var-som-symphony-legacy.dtb
dtb-$(CONFIG_ARCH_MXC) += imx8mn-venice-gw7902.dtb
+imx8mn-vhip4-evalboard-v1-overlay-dt050btft-1lane-dtbs := imx8mn-vhip4-evalboard-v1.dtb \
+ imx8mn-vhip4-evalboard-v1-overlay-dt050btft-1lane.dtbo
+imx8mn-vhip4-evalboard-v1-overlay-dt050btft-2lane-dtbs := imx8mn-vhip4-evalboard-v1.dtb \
+ imx8mn-vhip4-evalboard-v1-overlay-dt050btft-2lane.dtbo
+imx8mn-vhip4-evalboard-v1-overlay-dt050btft-4lane-dtbs := imx8mn-vhip4-evalboard-v1.dtb \
+ imx8mn-vhip4-evalboard-v1-overlay-dt050btft-4lane.dtbo
imx8mn-vhip4-evalboard-v1-overlay-eeprom-1000-dtbs := imx8mn-vhip4-evalboard-v1.dtb \
imx8mn-vhip4-overlay-eeprom-1000.dtbo
imx8mn-vhip4-evalboard-v1-overlay-eeprom-1100-dtbs := imx8mn-vhip4-evalboard-v1.dtb \
@@ -327,6 +333,8 @@ imx8mn-vhip4-evalboard-v1-overlay-ksz8794-dtbs := imx8mn-vhip4-evalboard-v1.dtb
imx8mn-vhip4-evalboard-v1-overlay-ksz8794.dtbo
imx8mn-vhip4-evalboard-v1-overlay-ksz9031-dtbs := imx8mn-vhip4-evalboard-v1.dtb \
imx8mn-vhip4-evalboard-v1-overlay-ksz9031.dtbo
+imx8mn-vhip4-evalboard-v1-overlay-nxp-adv7533-hdmi-dtbs := imx8mn-vhip4-evalboard-v1.dtb \
+ imx8mn-vhip4-evalboard-v1-overlay-nxp-adv7533-hdmi.dtbo
imx8mn-vhip4-evalboard-v2-overlay-adin1300-dtbs := imx8mn-vhip4-evalboard-v2.dtb \
imx8mn-vhip4-evalboard-v2-overlay-adin1300.dtbo
imx8mn-vhip4-evalboard-v2-overlay-eeprom-1100-dtbs := imx8mn-vhip4-evalboard-v2.dtb \
@@ -336,12 +344,20 @@ imx8mn-vhip4-evalboard-v2-overlay-eeprom-2000-dtbs := imx8mn-vhip4-evalboard-v2.
imx8mn-vhip4-evalboard-v2-overlay-ksz8794-dtbs := imx8mn-vhip4-evalboard-v2.dtb \
imx8mn-vhip4-evalboard-v2-overlay-ksz8794.dtbo
dtb-$(CONFIG_ARCH_MXC) += imx8mn-vhip4-evalboard-v1.dtb \
+ imx8mn-vhip4-evalboard-v1-overlay-dt050btft-1lane.dtb \
+ imx8mn-vhip4-evalboard-v1-overlay-dt050btft-1lane.dtbo \
+ imx8mn-vhip4-evalboard-v1-overlay-dt050btft-2lane.dtb \
+ imx8mn-vhip4-evalboard-v1-overlay-dt050btft-2lane.dtbo \
+ imx8mn-vhip4-evalboard-v1-overlay-dt050btft-4lane.dtb \
+ imx8mn-vhip4-evalboard-v1-overlay-dt050btft-4lane.dtbo \
imx8mn-vhip4-evalboard-v1-overlay-eeprom-1000.dtb \
imx8mn-vhip4-evalboard-v1-overlay-eeprom-1100.dtb \
imx8mn-vhip4-evalboard-v1-overlay-ksz8794.dtb \
imx8mn-vhip4-evalboard-v1-overlay-ksz8794.dtbo \
imx8mn-vhip4-evalboard-v1-overlay-ksz9031.dtb \
imx8mn-vhip4-evalboard-v1-overlay-ksz9031.dtbo \
+ imx8mn-vhip4-evalboard-v1-overlay-nxp-adv7533-hdmi.dtb \
+ imx8mn-vhip4-evalboard-v1-overlay-nxp-adv7533-hdmi.dtbo \
imx8mn-vhip4-evalboard-v2.dtb \
imx8mn-vhip4-evalboard-v2-overlay-adin1300.dtb \
imx8mn-vhip4-evalboard-v2-overlay-adin1300.dtbo \
diff --git a/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-1lane.dtso b/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-1lane.dtso
new file mode 100644
index 0000000000000..4151765743265
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-1lane.dtso
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2021-2026 Marek Vasut
+ */
+/dts-v1/;
+/plugin/;
+
+#include "imx8mn-vhip4-evalboard-v1-overlay-dt050btft-common.dtsi"
+
+&sn65dsi83_in {
+ data-lanes = <1>;
+};
+
+&mipi_dsi_bridge1_out {
+ data-lanes = <1>;
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-2lane.dtso b/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-2lane.dtso
new file mode 100644
index 0000000000000..7b1bd925f53f6
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-2lane.dtso
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2021-2026 Marek Vasut
+ */
+/dts-v1/;
+/plugin/;
+
+#include "imx8mn-vhip4-evalboard-v1-overlay-dt050btft-common.dtsi"
+
+&sn65dsi83_in {
+ data-lanes = <1 2>;
+};
+
+&mipi_dsi_bridge1_out {
+ data-lanes = <1 2>;
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-4lane.dtso b/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-4lane.dtso
new file mode 100644
index 0000000000000..300d5e9536102
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-4lane.dtso
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2021-2026 Marek Vasut
+ */
+/dts-v1/;
+/plugin/;
+
+#include "imx8mn-vhip4-evalboard-v1-overlay-dt050btft-common.dtsi"
+
+&sn65dsi83_in {
+ data-lanes = <1 2 3 4>;
+};
+
+&mipi_dsi_bridge1_out {
+ data-lanes = <1 2 3 4>;
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-common.dtsi b/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-common.dtsi
new file mode 100644
index 0000000000000..c82cc2eef8532
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-dt050btft-common.dtsi
@@ -0,0 +1,155 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2021-2026 Marek Vasut
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+
+#include "imx8mn-pinfunc.h"
+
+&{/} {
+ backlight: backlight {
+ compatible = "pwm-backlight";
+ /* FIXME: 200 Hz, since DT050BTFT-PTS datasheet does not say */
+ pwms = <&pwm4 0 5000000 0>;
+ brightness-levels = <0 100>;
+ num-interpolated-steps = <100>;
+ default-brightness-level = <75>;
+ };
+
+ lvds-decoder {
+ compatible = "ti,sn65lvds822", "lvds-decoder";
+ powerdown-gpios = <&gpio5 19 GPIO_ACTIVE_LOW>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_lvds_bridge>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ lvds_dpi_bridge_in: endpoint {
+ data-mapping = "vesa-24";
+ remote-endpoint = <&sn65dsi83_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ lvds_bridge_out: endpoint {
+ remote-endpoint = <&lvds_panel_in>;
+ };
+ };
+ };
+ };
+
+ panel {
+ compatible = "displaytech,dt050btft-pts";
+ backlight = <&backlight>;
+ power-supply = <®_panel_3v3>;
+
+ port {
+ lvds_panel_in: endpoint {
+ remote-endpoint = <&lvds_bridge_out>;
+ };
+ };
+ };
+
+ reg_panel_3v3: regulator-panel-3v3 {
+ compatible = "regulator-fixed";
+ regulator-always-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "VCC_DISPL";
+ };
+};
+
+&i2c3 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ bridge@2d {
+ compatible = "ti,sn65dsi83";
+ enable-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_dsi_bridge>;
+ reg = <0x2d>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ sn65dsi83_in: endpoint {
+ data-lanes = <1>;
+ remote-endpoint = <&mipi_dsi_bridge1_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+ sn65dsi83_out: endpoint {
+ remote-endpoint = <&lvds_dpi_bridge_in>;
+ };
+ };
+ };
+ };
+};
+
+&iomuxc {
+ pinctrl_dsi_bridge: dsibridge-grp {
+ fsl,pins = <
+ /* nRESET_BRIDGE */
+ MX8MN_IOMUXC_SD1_CMD_GPIO2_IO1 0x100
+ >;
+ };
+
+ pinctrl_lvds_bridge: lvdsbridge-grp {
+ fsl,pins = <
+ /* LVDS_RGB_SHTDN_n */
+ MX8MN_IOMUXC_I2C3_SDA_GPIO5_IO19 0x100
+ >;
+ };
+
+ pinctrl_pwm4: pwm4-grp {
+ fsl,pins = <
+ /* LCD PWM */
+ MX8MN_IOMUXC_I2C3_SCL_PWM4_OUT 0x0116
+ >;
+ };
+};
+
+&lcdif {
+ status = "okay";
+};
+
+&mipi_dsi {
+ 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 {
+ data-lanes = <1>;
+ remote-endpoint = <&sn65dsi83_in>;
+ };
+ };
+ };
+};
+
+&pwm4 { /* LCD backlight PWM */
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_pwm4>;
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-nxp-adv7533-hdmi.dtso b/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-nxp-adv7533-hdmi.dtso
new file mode 100644
index 0000000000000..e1a7aa6806c48
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-nxp-adv7533-hdmi.dtso
@@ -0,0 +1,104 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2021-2026 Marek Vasut
+ */
+/dts-v1/;
+/plugin/;
+
+&{/} {
+ cec_clock: clk-cec-fixed {
+ #clock-cells = <0>;
+ compatible = "fixed-clock";
+ clock-frequency = <24000000>;
+ };
+
+ hdmi-out {
+ compatible = "hdmi-connector";
+ type = "a";
+
+ port {
+ hdmi_con: endpoint {
+ remote-endpoint = <&adv7513_out>;
+ };
+ };
+ };
+
+
+ reg_adv_1v8: regulator-adv-1v8 {
+ compatible = "regulator-fixed";
+ regulator-always-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "ADV-1V8";
+ };
+
+ reg_adv_3v3: regulator-adv-3v3 {
+ compatible = "regulator-fixed";
+ regulator-always-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "ADV-3V3";
+ };
+};
+
+&i2c3 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ hdmi-transmitter@3d {
+ compatible = "adi,adv7535";
+ reg = <0x3d>, <0x3e>, <0x3c>, <0x3f>;
+ reg-names = "main", "edid", "cec", "packet";
+ a2vdd-supply = <®_adv_1v8>;
+ adi,dsi-lanes = <4>;
+ avdd-supply = <®_adv_1v8>;
+ dvdd-supply = <®_adv_1v8>;
+ pvdd-supply = <®_adv_1v8>;
+ v3p3-supply = <®_adv_3v3>;
+ status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ adv7535_in: endpoint {
+ remote-endpoint = <&mipi_dsi_bridge1_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ adv7513_out: endpoint {
+ remote-endpoint = <&hdmi_con>;
+ };
+ };
+ };
+ };
+};
+
+&lcdif {
+ status = "okay";
+};
+
+&mipi_dsi {
+ 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 {
+ data-lanes = <1 2 3 4>;
+ remote-endpoint = <&adv7535_in>;
+ };
+ };
+ };
+};
--
2.53.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] arm64: dts: imx8mn: Add display DT overlays for the ifm VHIP4 EvalBoard
2026-09-08 21:53 [PATCH] arm64: dts: imx8mn: Add display DT overlays for the ifm VHIP4 EvalBoard Marek Vasut
@ 2026-09-08 22:06 ` sashiko-bot
0 siblings, 0 replies; 2+ messages in thread
From: sashiko-bot @ 2026-09-08 22:06 UTC (permalink / raw)
To: Marek Vasut; +Cc: conor+dt, devicetree, robh, imx, Frank.Li
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] The 1.8V regulator `reg_adv_1v8` is incorrectly configured to output 3.3V, violating hardware requirements for the ADV7535.
- [Medium] The `hdmi-transmitter@3d` node (ADV7535) is missing `clocks` and `clock-names` properties to link the defined `cec_clock`, breaking CEC support.
--
commit fdacb0c2eecf5c57dea7a716eb4e6d3417011685
Author: Fedor Ross <fedor.ross@ifm.com>
arm64: dts: imx8mn: Add display DT overlays for the ifm VHIP4 EvalBoard
This commit adds display DT overlays for the ifm VHIP4 EvalBoard v1, adding
support for the Displaytech DT050BTFT-PTS panel and the NXP ADV7533 DSI-to-HDMI
adapter. It supports different DSI lane counts to allow testing multiple
configurations.
> diff --git a/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-nxp-adv7533-hdmi.dtso b/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-nxp-adv7533-hdmi.dtso
> new file mode 100644
> index 0000000000000..e1a7aa6806c48
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/imx8mn-vhip4-evalboard-v1-overlay-nxp-adv7533-hdmi.dtso
[ ... ]
> + reg_adv_1v8: regulator-adv-1v8 {
> + compatible = "regulator-fixed";
> + regulator-always-on;
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
^^^^^^^
[Severity: Medium]
Is the voltage configuration correct here? The reg_adv_1v8 node appears to
represent a 1.8V power supply used by the ADV7535, but its voltage limits
are set to 3.3V. This misinforms the regulator core about the hardware
voltage.
> + regulator-name = "ADV-1V8";
> + };
[ ... ]
> +&i2c3 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + status = "okay";
> +
> + hdmi-transmitter@3d {
> + compatible = "adi,adv7535";
> + reg = <0x3d>, <0x3e>, <0x3c>, <0x3f>;
> + reg-names = "main", "edid", "cec", "packet";
> + a2vdd-supply = <®_adv_1v8>;
> + adi,dsi-lanes = <4>;
^^^^^^^^^^^^^^^^^^^
[Severity: Medium]
Is there a missing clock reference for the CEC block? A cec_clock is defined
earlier in the file but is not linked here.
Without clocks and clock-names properties linking to cec_clock, the DRM bridge
core will fail to find it when calling devm_clk_get(dev, "cec"), which returns
-ENOENT. This causes adv7511_cec_init() to abort, leaving CEC uninitialized.
> + avdd-supply = <®_adv_1v8>;
> + dvdd-supply = <®_adv_1v8>;
> + pvdd-supply = <®_adv_1v8>;
> + v3p3-supply = <®_adv_3v3>;
> + status = "okay";
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260908215409.32993-1-marex@nabladev.com?part=1
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-08 22:06 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-08 21:53 [PATCH] arm64: dts: imx8mn: Add display DT overlays for the ifm VHIP4 EvalBoard Marek Vasut
2026-09-08 22:06 ` sashiko-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox