arm64: dts: rockchip: Add Radxa CM3J on RPi CM4 IO Board

The Raspberry Pi Compute Module 4 IO Board is an application board for
the Compute Module 4. [1]

This patch adds support for the Radxa CM3J mounted on the RPi CM4 IO
Board.

Specification:
- 12V 5521 DC jack
- 2x full-size HDMI 2.0 connectors (only HDMI0 is supported with CM3J)
- Gigabit Ethernet RJ45 with PoE support
- 2x USB 2.0 connectors, with header for two more connectors
- Micro USB connector
- microSD card socket
- PCIe Gen 2 x1 socket
- 12V 4-pin PWM fan connector
- External power connector (+5V, +12V)
- 2x MIPI DSI connectors
- 2x MIPI CSI-2 connectors
- 40-pin GPIO header
- RTC with battery socket
- Red (power) and green (heartbeat) LEDs

[1] https://datasheets.raspberrypi.com/cm4io/cm4io-datasheet.pdf

Signed-off-by: FUKAUMI Naoki <naoki@radxa.com>
Link: https://patch.msgid.link/20260108113341.14037-3-naoki@radxa.com
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
This commit is contained in:
FUKAUMI Naoki 2026-01-08 11:33:41 +00:00 committed by Heiko Stuebner
parent 9103e21ee4
commit d813ddc0b3
2 changed files with 205 additions and 0 deletions

View File

@ -149,6 +149,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-odroid-m1.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-photonicat.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-qnap-ts233.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-qnap-ts433.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-radxa-cm3j-rpi-cm4.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-radxa-e25.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-roc-pc.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3a.dtb

View File

@ -0,0 +1,204 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2025 Radxa Computer (Shenzhen) Co., Ltd.
*/
/dts-v1/;
#include <dt-bindings/leds/common.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include "rk3568-radxa-cm3j.dtsi"
/ {
model = "Radxa CM3J on RPi CM4 IO Board";
compatible = "radxa,cm3j-rpi-cm4", "radxa,cm3j", "rockchip,rk3568";
aliases {
ethernet0 = &gmac1;
mmc1 = &sdmmc0;
rtc0 = &pcf85063;
};
chosen {
stdout-path = "serial2:1500000n8";
};
hdmi-con {
compatible = "hdmi-connector";
type = "a";
port {
hdmi_con_in: endpoint {
remote-endpoint = <&hdmi_out_con>;
};
};
};
leds-1 {
compatible = "gpio-leds";
led-1 {
color = <LED_COLOR_ID_RED>;
default-state = "on";
function = LED_FUNCTION_POWER;
gpios = <&gpio3 RK_PC4 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&npwr_led>;
};
led-2 {
color = <LED_COLOR_ID_GREEN>;
default-state = "on";
function = LED_FUNCTION_STATUS;
gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_LOW>;
linux,default-trigger = "heartbeat";
pinctrl-names = "default";
pinctrl-0 = <&pi_nled_activity>;
};
};
dc12v: regulator-12v0 {
compatible = "regulator-fixed";
regulator-name = "dc12v";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <12000000>;
regulator-max-microvolt = <12000000>;
};
dc3v3_pcie: regulator-3v3-2 {
compatible = "regulator-fixed";
regulator-name = "dc3v3_pcie";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&dc12v>;
};
gpio_vref: regulator-3v3-3 {
compatible = "regulator-fixed";
regulator-name = "gpio_vref";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
vin-supply = <&dc3v3>;
};
dc5v: regulator-5v0 {
compatible = "regulator-fixed";
regulator-name = "dc5v";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
vin-supply = <&dc12v>;
};
};
&combphy0 {
status = "okay";
};
&combphy2 {
status = "okay";
};
&gmac1 {
status = "okay";
};
&gpio0 {
nextrst-hog {
gpio-hog;
/*
* GPIO_ACTIVE_LOW + output-low here means that the pin is set
* to high, because output-low decides the value pre-inversion.
*/
gpios = <RK_PC0 GPIO_ACTIVE_LOW>;
line-name = "nEXTRST";
output-low;
};
};
&hdmi {
status = "okay";
};
&hdmi_sound {
status = "okay";
};
&i2c0 {
emc2301: fan-controller@2f {
compatible = "microchip,emc2301", "microchip,emc2305";
reg = <0x2f>;
#address-cells = <1>;
#size-cells = <0>;
#pwm-cells = <3>;
fan@0 {
reg = <0x0>;
pwms = <&emc2301 26000 0 1>;
#cooling-cells = <2>;
};
};
pcf85063: rtc@51 {
compatible = "nxp,pcf85063a";
reg = <0x51>;
wakeup-source;
};
};
&i2s0_8ch {
status = "okay";
};
&pinctrl {
leds {
npwr_led: npwr-led {
rockchip,pins = <3 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
};
pi_nled_activity: pi-nled-activity {
rockchip,pins = <4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
};
&pcie2x1 {
vpcie3v3-supply = <&dc3v3_pcie>;
status = "okay";
};
&sdmmc0 {
bus-width = <4>;
cap-sd-highspeed;
broken-cd;
disable-wp;
no-mmc;
no-sdio;
pinctrl-names = "default";
pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd>;
vmmc-supply = <&dc3v3>;
status = "okay";
};
&uart2 {
status = "okay";
};
&usb2phy0 {
status = "okay";
};
&usb2phy0_otg {
status = "okay";
};
&usb_host0_xhci {
status = "okay";
};