[PATCH v7 5/8] arm64: dts: add description for solidrun imx8mp hummingboard-iiot

Josua Mayer josua at solid-run.com
Wed Jan 28 07:18:24 PST 2026


On 21/01/2026 22:39, Frank Li wrote:
> On Sun, Jan 18, 2026 at 02:51:42PM +0200, Josua Mayer wrote:
>> Add description for the SolidRun i.MX8MP HummingBoard IIoT.
>> The board is a new design around the i.MX8MP System on Module, not
>> sharing much with previous HummingBoards.
> suggested commit message
>
> add support for SolidRun i.MX8MP HummingBoard IIoT
>
> Introduce support for the SolidRun i.MX8MP HummingBoard IIoT platform.
> This board is a new design based on the i.MX8MP System on Module and
> does not share much hardware with previous HummingBoard variants.
>
>> It comes with some common features:
>> - 3x USB-3.0 Type A connector
>> - 2x 1Gbps RJ45 Ethernet
>> - USB Type-C Console Port
>> - microSD connector
>> - RTC with backup battery
>> - RGB Status LED
>> - 1x M.2 M-Key connector with PCI-E Gen. 3 x1
>> - 1x M.2 B-Key connector with USB-2.0/3.0 + SIM card holder
>> - 1x LVDS Display Connector
>> - 1x DSI Display Connector
>> - GPIO header
>> - 2x RS232/RS485 ports (configurable)
>> - 2x CAN
>>
>> In addition there is a board-to-board expansion connector to support
>> custom daughter boards with access to SPI, a range of GPIOs and -
>> notably - CAN and UART. Both 2x CAN and 2x UART can be muxed either
>> to this b2b connector, or a termianl block connector on the base board.
>>
>> The routing choice for UART and CAN is expressed through gpio
>> mux-controllers in DT and can be changed by applying dtb addons.
> s/addons/overlay
>
>> Signed-off-by: Josua Mayer <josua at solid-run.com>
>> ---
>>   arch/arm64/boot/dts/freescale/Makefile             |   2 +
>>   .../dts/freescale/imx8mp-hummingboard-iiot.dts     | 719 +++++++++++++++++++++
>>   2 files changed, 721 insertions(+)
>>
> ...
>> +
>> +	uart3_rs_232_485_mux: mux-controller-4 {
>> +		compatible = "gpio-mux";
>> +		#mux-control-cells = <0>;
>> +		/*
>> +		 * Mux switches uart3 tx/rx between rs232 and rs485
>> +		 * transceivers. using one GPIO: 0 = rs232; 1 = rs485.
>> +		 */
>> +		mux-gpios = <&tca6416_u20 1 GPIO_ACTIVE_HIGH>;
>> +		/* default rs232 */
>> +		idle-state = <0>;
>> +	};
>> +
>> +	uart4_rs_232_485_mux: mux-controller-5 {
>> +		compatible = "gpio-mux";
>> +		#mux-control-cells = <0>;
>> +		/*
>> +		 * Mux switches uart4 tx/rx between rs232 and rs485
>> +		 * transceivers. using one GPIO: 0 = rs232; 1 = rs485.
>> +		 */
>> +		mux-gpios = <&tca6416_u20 2 GPIO_ACTIVE_HIGH>;
>> +		/* default rs232 */
>> +		idle-state = <0>;
>> +	};
>> +
>> +	gpio-keys {
> please order as node name. suggest use
> https://github.com/lznuaa/dt-format
> to reorder it.
Will do, I was not aware of this tool - and manual sorting can become
cumbersome with this many unordered nodes.
>
>> +		compatible = "gpio-keys";
>> +
>> +		wakeup-event {
>> +			label = "m2-m-wakeup";
>> +			interrupts-extended = <&tca6416_u21 11 IRQ_TYPE_EDGE_FALLING>;
>> +			linux,code = <KEY_WAKEUP>;
>> +			wakeup-source;
>> +		};
>> +	};
>> +};
>> +
> ...
>> +
>> +&i2c2 {
>> +	i2c-mux at 70 {
>> +		compatible = "nxp,pca9546";
>> +		reg = <0x70>;
>> +		/*
>> +		 * This reset is open drain,
>> +		 * but reset core does not support GPIO_OPEN_DRAIN flag.
>> +		 */
>> +		reset-gpios = <&tca6416_u21 2 GPIO_ACTIVE_LOW>;
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +
>> +		/* channel 0 routed to expansion connector (J22) */
>> +		i2c_exp: i2c at 0 {
>> +			reg = <0>;
>> +			#address-cells = <1>;
>> +			#size-cells = <0>;
>> +		};
>> +
>> +		/* channel 1 routed to mipi-csi connector (J23) */
>> +		i2c_csi: i2c at 1 {
>> +			reg = <1>;
>> +			#address-cells = <1>;
>> +			#size-cells = <0>;
>> +		};
>> +
>> +		/* channel 2 routed to mipi-dsi connector (J25) */
>> +		i2c_dsi: i2c at 2 {
>> +			reg = <2>;
>> +			#address-cells = <1>;
>> +			#size-cells = <0>;
>> +
>> +			tca6408_u48: gpio at 21 {
>> +				compatible = "ti,tca6408";
>> +				reg = <0x21>;
>> +				/*
>> +				 * reset shared between U37 and U48, to be
>> +				 * supported once gpio-pca953x switches to
>> +				 * reset framework.
>> +				 *
>> +				 * reset-gpios = <&tca6416_u21 4 (GPIO_ACTIVE_LOW|GPIO_PULL_UP|GPIO_OPEN_DRAIN)>;
> dose checkpatch report error? line width over 100
It does, but sometimes long lines can be allowed for readability?
Anyhow I will break it down.

Thanks!




More information about the linux-arm-kernel mailing list