Skip to content

Commit 51babf8

Browse files
jakogutmmind
authored andcommitted
arm64: dts: rockchip: Add support for CM5 IO carrier
Specification: - 1x HDMI - 2x MIPI DSI - 2x MIPI CSI - 1x eDP - 1x M.2 E key - 1x USB 3.0 Host - 1x USB 3.0 OTG - 2x USB 2.0 Host - Headphone jack w/ microphone - Gigabit Ethernet w/ PoE - microSD slot - 40-pin expansion header - 12V DC Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com> Signed-off-by: FUKAUMI Naoki <naoki@radxa.com> Link: https://patch.msgid.link/20251205120703.14721-4-naoki@radxa.com Signed-off-by: Heiko Stuebner <heiko@sntech.de>
1 parent 36ee19b commit 51babf8

2 files changed

Lines changed: 340 additions & 0 deletions

File tree

arch/arm64/boot/dts/rockchip/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-nanopi-r6c.dtb
210210
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-odroid-m2.dtb
211211
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-orangepi-5.dtb
212212
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-orangepi-5b.dtb
213+
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-radxa-cm5-io.dtb
213214
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-roc-pc.dtb
214215
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-rock-5a.dtb
215216
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-rock-5c.dtb
Lines changed: 339 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,339 @@
1+
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2+
/*
3+
* Copyright (c) 2025 Joseph Kogut <joseph.kogut@gmail.com>
4+
*/
5+
6+
/*
7+
* CM5 IO board data sheet
8+
* https://dl.radxa.com/cm5/v2200/radxa_cm5_io_v2200_schematic.pdf
9+
*/
10+
11+
/dts-v1/;
12+
#include "rk3588s.dtsi"
13+
#include "rk3588s-radxa-cm5.dtsi"
14+
15+
/ {
16+
model = "Radxa Compute Module 5 (CM5) IO Board";
17+
compatible = "radxa,cm5-io", "radxa,cm5", "rockchip,rk3588s";
18+
19+
aliases {
20+
ethernet0 = &gmac1;
21+
mmc1 = &sdmmc;
22+
};
23+
24+
chosen {
25+
stdout-path = "serial2:1500000n8";
26+
};
27+
28+
hdmi-con {
29+
compatible = "hdmi-connector";
30+
type = "a";
31+
32+
port {
33+
hdmi_con_in: endpoint {
34+
remote-endpoint = <&hdmi0_out_con>;
35+
};
36+
};
37+
};
38+
39+
vcc12v_dcin: regulator-12v0-vcc-dcin {
40+
compatible = "regulator-fixed";
41+
regulator-name = "vcc12v_dcin";
42+
regulator-always-on;
43+
regulator-boot-on;
44+
regulator-min-microvolt = <12000000>;
45+
regulator-max-microvolt = <12000000>;
46+
};
47+
48+
vcc5v0_host: vcc5v0-host-regulator {
49+
compatible = "regulator-fixed";
50+
regulator-name = "vcc5v0_host";
51+
regulator-boot-on;
52+
regulator-always-on;
53+
regulator-min-microvolt = <5000000>;
54+
regulator-max-microvolt = <5000000>;
55+
enable-active-high;
56+
gpio = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
57+
pinctrl-names = "default";
58+
pinctrl-0 = <&vcc5v0_host_en>;
59+
vin-supply = <&vcc5v0_sys>;
60+
};
61+
62+
vcc5v0_sys: regulator-5v0-sys {
63+
compatible = "regulator-fixed";
64+
regulator-name = "vcc5v0_sys";
65+
regulator-always-on;
66+
regulator-boot-on;
67+
regulator-min-microvolt = <5000000>;
68+
regulator-max-microvolt = <5000000>;
69+
vin-supply = <&vcc12v_dcin>;
70+
};
71+
72+
vbus5v0_typec: vbus5v0-typec {
73+
compatible = "regulator-fixed";
74+
regulator-name = "vbus5v0_typec";
75+
gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;
76+
pinctrl-names = "default";
77+
pinctrl-0 = <&vbus5v0_typec_en>;
78+
enable-active-high;
79+
regulator-min-microvolt = <5000000>;
80+
regulator-max-microvolt = <5000000>;
81+
vin-supply = <&vcc5v0_sys>;
82+
};
83+
84+
vcc3v3_pcie: regulator-3v3-vcc-pcie {
85+
compatible = "regulator-fixed";
86+
regulator-name = "vcc3v3_pcie2x1l0";
87+
regulator-min-microvolt = <3300000>;
88+
regulator-max-microvolt = <3300000>;
89+
enable-active-high;
90+
gpios = <&gpio1 RK_PD3 GPIO_ACTIVE_HIGH>;
91+
startup-delay-us = <50000>;
92+
vin-supply = <&vcc5v0_sys>;
93+
};
94+
95+
vcc_3v3_s0: pldo-reg4 {
96+
compatible = "regulator-fixed";
97+
regulator-name = "vcc_3v3_s0";
98+
regulator-always-on;
99+
regulator-boot-on;
100+
regulator-min-microvolt = <3300000>;
101+
regulator-max-microvolt = <3300000>;
102+
regulator-ramp-delay = <12500>;
103+
104+
regulator-state-mem {
105+
regulator-off-in-suspend;
106+
};
107+
};
108+
};
109+
110+
&combphy0_ps {
111+
status = "okay";
112+
};
113+
114+
&combphy2_psu {
115+
status = "okay";
116+
};
117+
118+
&gmac1 {
119+
status = "okay";
120+
};
121+
122+
&hdmi0 {
123+
status = "okay";
124+
};
125+
126+
&hdmi0_in {
127+
hdmi0_in_vp0: endpoint {
128+
remote-endpoint = <&vp0_out_hdmi0>;
129+
};
130+
};
131+
132+
&hdmi0_out {
133+
hdmi0_out_con: endpoint {
134+
remote-endpoint = <&hdmi_con_in>;
135+
};
136+
};
137+
138+
&hdmi0_sound {
139+
status = "okay";
140+
};
141+
142+
&hdptxphy0 {
143+
status = "okay";
144+
};
145+
146+
&i2c6 {
147+
pinctrl-names = "default";
148+
pinctrl-0 = <&i2c6m3_xfer>;
149+
status = "okay";
150+
151+
fusb302: usb-typec@22 {
152+
compatible = "fcs,fusb302";
153+
reg = <0x22>;
154+
interrupt-parent = <&gpio0>;
155+
interrupts = <RK_PC4 IRQ_TYPE_LEVEL_LOW>;
156+
pinctrl-names = "default";
157+
pinctrl-0 = <&usbc0_int>;
158+
vbus-supply = <&vbus5v0_typec>;
159+
160+
connector {
161+
compatible = "usb-c-connector";
162+
data-role = "dual";
163+
label = "USB-C";
164+
power-role = "dual";
165+
try-power-role = "sink";
166+
source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
167+
sink-pdos = <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>;
168+
op-sink-microwatt = <1000000>;
169+
170+
ports {
171+
#address-cells = <1>;
172+
#size-cells = <0>;
173+
174+
port@0 {
175+
reg = <0>;
176+
usbc0_orientation_switch: endpoint {
177+
remote-endpoint = <&usbdp_phy0_orientation_switch>;
178+
};
179+
};
180+
181+
port@1 {
182+
reg = <1>;
183+
usbc0_role_switch: endpoint {
184+
remote-endpoint = <&usb_host0_xhci_role_switch>;
185+
};
186+
};
187+
188+
port@2 {
189+
reg = <2>;
190+
usbc0_dp_altmode_mux: endpoint {
191+
remote-endpoint = <&usbdp_phy0_dp_altmode_mux>;
192+
};
193+
};
194+
};
195+
};
196+
};
197+
};
198+
199+
&i2s5_8ch {
200+
status = "okay";
201+
};
202+
203+
&pcie2x1l2 {
204+
reset-gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_HIGH>;
205+
vpcie3v3-supply = <&vcc3v3_pcie>;
206+
status = "okay";
207+
};
208+
209+
&pinctrl {
210+
fusb302 {
211+
vbus5v0_typec_en: vbus5v0-typec-en {
212+
rockchip,pins = <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
213+
};
214+
215+
usbc0_int: usbc0-int {
216+
rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_up>;
217+
};
218+
};
219+
220+
usb {
221+
vcc5v0_host_en: vcc5v0-host-en {
222+
rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
223+
};
224+
};
225+
};
226+
227+
&sdmmc {
228+
bus-width = <4>;
229+
cap-mmc-highspeed;
230+
cap-sd-highspeed;
231+
disable-wp;
232+
no-sdio;
233+
sd-uhs-sdr104;
234+
pinctrl-names = "default";
235+
pinctrl-0 = <&sdmmc_bus4 &sdmmc_clk &sdmmc_cmd &sdmmc_det>;
236+
vmmc-supply = <&vcc_3v3_s3>;
237+
vqmmc-supply = <&vccio_sd_s0>;
238+
status = "okay";
239+
};
240+
241+
&u2phy0 {
242+
status = "okay";
243+
};
244+
245+
&u2phy0_otg {
246+
status = "okay";
247+
};
248+
249+
&u2phy2 {
250+
status = "okay";
251+
};
252+
253+
&u2phy2_host {
254+
status = "okay";
255+
};
256+
257+
&u2phy3 {
258+
status = "okay";
259+
};
260+
261+
&u2phy3_host {
262+
status = "okay";
263+
};
264+
265+
&uart2 {
266+
pinctrl-names = "default";
267+
pinctrl-0 = <&uart2m0_xfer>;
268+
status = "okay";
269+
};
270+
271+
&usb_host0_ehci {
272+
status = "okay";
273+
};
274+
275+
&usb_host0_ohci {
276+
status = "okay";
277+
};
278+
279+
&usb_host0_xhci {
280+
dr_mode = "otg";
281+
usb-role-switch;
282+
status = "okay";
283+
284+
port {
285+
usb_host0_xhci_role_switch: endpoint {
286+
remote-endpoint = <&usbc0_role_switch>;
287+
};
288+
};
289+
};
290+
291+
&usb_host1_ehci {
292+
status = "okay";
293+
};
294+
295+
&usb_host1_ohci {
296+
status = "okay";
297+
};
298+
299+
&usb_host2_xhci {
300+
status = "okay";
301+
};
302+
303+
&usbdp_phy0 {
304+
mode-switch;
305+
orientation-switch;
306+
sbu1-dc-gpios = <&gpio3 RK_PC4 GPIO_ACTIVE_HIGH>;
307+
sbu2-dc-gpios = <&gpio3 RK_PD4 GPIO_ACTIVE_HIGH>;
308+
status = "okay";
309+
310+
port {
311+
#address-cells = <1>;
312+
#size-cells = <0>;
313+
314+
usbdp_phy0_orientation_switch: endpoint@0 {
315+
reg = <0>;
316+
remote-endpoint = <&usbc0_orientation_switch>;
317+
};
318+
319+
usbdp_phy0_dp_altmode_mux: endpoint@1 {
320+
reg = <1>;
321+
remote-endpoint = <&usbc0_dp_altmode_mux>;
322+
};
323+
};
324+
};
325+
326+
&vop {
327+
status = "okay";
328+
};
329+
330+
&vop_mmu {
331+
status = "okay";
332+
};
333+
334+
&vp0 {
335+
vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
336+
reg = <ROCKCHIP_VOP2_EP_HDMI0>;
337+
remote-endpoint = <&hdmi0_in_vp0>;
338+
};
339+
};

0 commit comments

Comments
 (0)