]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
arm64: dts: imx8mp-hummingboard-iiot: add dt overlays for muxable ports
authorJosua Mayer <josua@solid-run.com>
Fri, 13 Mar 2026 12:30:58 +0000 (14:30 +0200)
committerFrank Li <Frank.Li@nxp.com>
Fri, 27 Mar 2026 13:52:42 +0000 (09:52 -0400)
The SolidRun i.MX8MP HummingBoard IIoT has a variety of connectors, and
configurable ports:

- 2x RS232
- 2x RS485
- DSI Panel Connector
- LVDS Panel Connector

RS232 and RS485 each share a single UART from the SoC via a mux, which
are configured from the base dts for RS232 by default.

Provide addons for:

1. Reconfigure UART A from RS232 to RS485.
2. Reconfigure UART B from RS232 to RS485.
3. Configure DSI Connector for Winstar WJ70N3TYJHMNG0 Panel.
4. Configure LVDS Connector for Winstar WF70A8SYJHLNGA Panel.

A variation of the base dtb is generated for each addon to ensure that
make dtbs_check covers the resulting dtb, and applying overlay is
tested during build.

It is however expected that bootloader should apply any combination of
addons based on runtime configuration.

Signed-off-by: Josua Mayer <josua@solid-run.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
arch/arm64/boot/dts/freescale/Makefile
arch/arm64/boot/dts/freescale/imx8mp-hummingboard-iiot-panel-dsi-WJ70N3TYJHMNG0.dtso [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8mp-hummingboard-iiot-panel-lvds-WF70A8SYJHLNGA.dtso [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8mp-hummingboard-iiot-rs485-a.dtso [new file with mode: 0644]
arch/arm64/boot/dts/freescale/imx8mp-hummingboard-iiot-rs485-b.dtso [new file with mode: 0644]

index 82175304bdb1a1fd0afe97fdce85aada484a835c..164fd3c3bc101ca082a60ad2c1a15aee02170b84 100644 (file)
@@ -241,6 +241,18 @@ dtb-$(CONFIG_ARCH_MXC) += imx8mp-evk.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mp-frdm.dtb
 DTC_FLAGS_imx8mp-hummingboard-iiot := -@
 dtb-$(CONFIG_ARCH_MXC) += imx8mp-hummingboard-iiot.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-hummingboard-iiot-panel-dsi-WJ70N3TYJHMNG0.dtbo
+imx8mp-hummingboard-iiot-panel-dsi-WJ70N3TYJHMNG0-dtbs += imx8mp-hummingboard-iiot.dtb imx8mp-hummingboard-iiot-panel-dsi-WJ70N3TYJHMNG0.dtbo
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-hummingboard-iiot-panel-dsi-WJ70N3TYJHMNG0.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-hummingboard-iiot-panel-lvds-WF70A8SYJHLNGA.dtbo
+imx8mp-hummingboard-iiot-panel-lvds-WF70A8SYJHLNGA-dtbs += imx8mp-hummingboard-iiot.dtb imx8mp-hummingboard-iiot-panel-lvds-WF70A8SYJHLNGA.dtbo
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-hummingboard-iiot-panel-lvds-WF70A8SYJHLNGA.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-hummingboard-iiot-rs485-a.dtbo
+imx8mp-hummingboard-iiot-rs485-a-dtbs += imx8mp-hummingboard-iiot.dtb imx8mp-hummingboard-iiot-rs485-a.dtbo
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-hummingboard-iiot-rs485-a.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-hummingboard-iiot-rs485-b.dtbo
+imx8mp-hummingboard-iiot-rs485-b-dtbs += imx8mp-hummingboard-iiot.dtb imx8mp-hummingboard-iiot-rs485-b.dtbo
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-hummingboard-iiot-rs485-b.dtb
 DTC_FLAGS_imx8mp-hummingboard-mate := -@
 dtb-$(CONFIG_ARCH_MXC) += imx8mp-hummingboard-mate.dtb
 DTC_FLAGS_imx8mp-hummingboard-pro := -@
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-hummingboard-iiot-panel-dsi-WJ70N3TYJHMNG0.dtso b/arch/arm64/boot/dts/freescale/imx8mp-hummingboard-iiot-panel-dsi-WJ70N3TYJHMNG0.dtso
new file mode 100644 (file)
index 0000000..6c41f26
--- /dev/null
@@ -0,0 +1,67 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2025 Josua Mayer <josua@solid-run.com>
+ *
+ * Overlay for enabling HummingBoard IIoT MIPI-DSI connector
+ * with Winstar WJ70N3TYJHMNG0 panel.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+&{/} {
+       dsi_backlight: dsi-backlight {
+               compatible = "gpio-backlight";
+               gpios = <&tca6408_u48 3 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&i2c_dsi {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       touchscreen@41 {
+               compatible = "ilitek,ili2130";
+               reg = <0x41>;
+               interrupts-extended = <&tca6416_u21 13 IRQ_TYPE_LEVEL_LOW>;
+               reset-gpios = <&tca6408_u48 6 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&lcdif1 {
+       status = "okay";
+};
+
+&mipi_dsi {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       samsung,esc-clock-frequency = <10000000>;
+       status = "okay";
+
+       panel@0 {
+               /* This is a Winstar panel, but the ronbo panel uses same controls. */
+               compatible = "ronbo,rb070d30";
+               reg = <0>;
+               /* reset is active-low but driver inverts it internally */
+               reset-gpios = <&tca6408_u48 1 GPIO_ACTIVE_HIGH>;
+               backlight = <&dsi_backlight>;
+               power-gpios = <&tca6408_u48 2 GPIO_ACTIVE_HIGH>;
+               shlr-gpios = <&tca6408_u48 4 GPIO_ACTIVE_LOW>;
+               updn-gpios = <&tca6408_u48 5 GPIO_ACTIVE_HIGH>;
+               vcc-lcd-supply = <&reg_dsi_panel>;
+
+               port {
+                       panel_from_dsim: endpoint {
+                               remote-endpoint = <&mipi_dsi_out>;
+                       };
+               };
+       };
+};
+
+&mipi_dsi_out {
+       data-lanes = <1 2 3 4>;
+       remote-endpoint = <&panel_from_dsim>;
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-hummingboard-iiot-panel-lvds-WF70A8SYJHLNGA.dtso b/arch/arm64/boot/dts/freescale/imx8mp-hummingboard-iiot-panel-lvds-WF70A8SYJHLNGA.dtso
new file mode 100644 (file)
index 0000000..ca4e7b8
--- /dev/null
@@ -0,0 +1,97 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2025 Josua Mayer <josua@solid-run.com>
+ *
+ * Overlay for enabling HummingBoard IIoT LVDS connector
+ * with Winstar WF70A8SYJHLNGA panel.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+&{/} {
+       lvds_backlight: lvds-backlight {
+               compatible = "gpio-backlight";
+               gpios = <&tca6408_u37 3 GPIO_ACTIVE_LOW>;
+       };
+
+       panel-lvds {
+               compatible = "winstar,wf70a8syjhlnga", "panel-lvds";
+               backlight = <&lvds_backlight>;
+               data-mapping = "vesa-24";
+               enable-gpios = <&tca6408_u37 2 GPIO_ACTIVE_HIGH>;
+               height-mm = <86>;
+               power-supply = <&reg_dsi_panel>;
+               reset-gpios = <&tca6408_u37 1 GPIO_ACTIVE_HIGH>;
+               width-mm = <154>;
+
+               panel-timing {
+                       /*
+                        * Note: NXP BSP hard-codes 74MHz clock in ldb driver:
+                        * drivers/gpu/drm/imx/imx8mp-ldb.c
+                        * SolidRun BSP carries patch.
+                        */
+                       clock-frequency = <49500000>;
+                       de-active = <1>;
+                       hactive = <1024>;
+                       hback-porch = <144>;
+                       hfront-porch = <40>;
+                       hsync-active = <0>;
+                       hsync-len = <104>;
+                       vactive = <600>;
+                       vback-porch = <11>;
+                       vfront-porch = <3>;
+                       vsync-active = <1>;
+                       vsync-len = <10>;
+               };
+
+               port {
+                       panel_from_lvds: endpoint {
+                               remote-endpoint = <&ldb_lvds_ch0>;
+                       };
+               };
+       };
+};
+
+&i2c_lvds {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       touchscreen@41 {
+               compatible = "ilitek,ili2130";
+               reg = <0x41>;
+               interrupts-extended = <&tca6416_u21 13 IRQ_TYPE_LEVEL_LOW>;
+               reset-gpios = <&tca6408_u37 6 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&lcdif2 {
+       status = "okay";
+};
+
+&ldb_lvds_ch0 {
+       remote-endpoint = <&panel_from_lvds>;
+};
+
+&lvds_bridge {
+       status = "okay";
+};
+
+&tca6408_u37 {
+       lvds-lr-hog {
+               gpios = <4 GPIO_ACTIVE_HIGH>;
+               gpio-hog;
+               line-name = "lvds-l/r";
+               output-high;
+       };
+
+       lvds-ud-hog {
+               gpios = <5 GPIO_ACTIVE_HIGH>;
+               gpio-hog;
+               line-name = "lvds-u/d";
+               output-high;
+       };
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-hummingboard-iiot-rs485-a.dtso b/arch/arm64/boot/dts/freescale/imx8mp-hummingboard-iiot-rs485-a.dtso
new file mode 100644 (file)
index 0000000..ae64d6e
--- /dev/null
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2025 Josua Mayer <josua@solid-run.com>
+ *
+ * Overlay for enabling HummingBoard IIoT on-board RS485 Port A on connector J5004.
+ */
+
+/dts-v1/;
+/plugin/;
+
+&uart3 {
+       linux,rs485-enabled-at-boot-time;
+};
+
+&uart3_rs_232_485_mux {
+       /* select rs485 */
+       idle-state = <1>;
+};
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-hummingboard-iiot-rs485-b.dtso b/arch/arm64/boot/dts/freescale/imx8mp-hummingboard-iiot-rs485-b.dtso
new file mode 100644 (file)
index 0000000..2718fa5
--- /dev/null
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2025 Josua Mayer <josua@solid-run.com>
+ *
+ * Overlay for enabling HummingBoard IIoT on-board RS485 Port B on connector J5004.
+ */
+
+/dts-v1/;
+/plugin/;
+
+&uart4 {
+       linux,rs485-enabled-at-boot-time;
+};
+
+&uart4_rs_232_485_mux {
+       /* select rs485 */
+       idle-state = <1>;
+};