arm64: dts: imx8mp-hummingboard-iiot: add dt overlays for muxable ports

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>
This commit is contained in:
Josua Mayer 2026-03-13 14:30:58 +02:00 committed by Frank Li
parent 8da7bfdcda
commit 514a34d75b
5 changed files with 212 additions and 0 deletions

View 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 := -@

View File

@ -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>;
};

View File

@ -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;
};
};

View File

@ -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>;
};

View File

@ -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>;
};