xref: /linux/arch/arm64/boot/dts/rockchip/rk3566-onething-edge-cube.dts (revision 0fc8f6200d2313278fbf4539bbab74677c685531)
1*53ec6d21SJun Yan// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*53ec6d21SJun Yan
3*53ec6d21SJun Yan/dts-v1/;
4*53ec6d21SJun Yan
5*53ec6d21SJun Yan#include <dt-bindings/gpio/gpio.h>
6*53ec6d21SJun Yan#include <dt-bindings/leds/common.h>
7*53ec6d21SJun Yan#include <dt-bindings/pinctrl/rockchip.h>
8*53ec6d21SJun Yan#include <dt-bindings/pwm/pwm.h>
9*53ec6d21SJun Yan#include "rk3566.dtsi"
10*53ec6d21SJun Yan
11*53ec6d21SJun Yan/ {
12*53ec6d21SJun Yan	model = "OneThing Edge Cube (OEC)/OEC Turbo";
13*53ec6d21SJun Yan	compatible = "onething,edge-cube", "rockchip,rk3566";
14*53ec6d21SJun Yan
15*53ec6d21SJun Yan	aliases {
16*53ec6d21SJun Yan		ethernet0 = &gmac1;
17*53ec6d21SJun Yan		mmc0 = &sdhci;
18*53ec6d21SJun Yan	};
19*53ec6d21SJun Yan
20*53ec6d21SJun Yan	chosen: chosen {
21*53ec6d21SJun Yan		stdout-path = "serial2:1500000n8";
22*53ec6d21SJun Yan	};
23*53ec6d21SJun Yan
24*53ec6d21SJun Yan	gmac1_clkin: external-gmac1-clock {
25*53ec6d21SJun Yan		compatible = "fixed-clock";
26*53ec6d21SJun Yan		clock-frequency = <125000000>;
27*53ec6d21SJun Yan		clock-output-names = "gmac1_clkin";
28*53ec6d21SJun Yan		#clock-cells = <0>;
29*53ec6d21SJun Yan	};
30*53ec6d21SJun Yan
31*53ec6d21SJun Yan	leds {
32*53ec6d21SJun Yan		compatible = "gpio-leds";
33*53ec6d21SJun Yan
34*53ec6d21SJun Yan		rgb_led_b: led-0 {
35*53ec6d21SJun Yan			color = <LED_COLOR_ID_BLUE>;
36*53ec6d21SJun Yan			default-state = "off";
37*53ec6d21SJun Yan			function = LED_FUNCTION_STATUS;
38*53ec6d21SJun Yan			gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>;
39*53ec6d21SJun Yan			pinctrl-names = "default";
40*53ec6d21SJun Yan			pinctrl-0 = <&rgb_led_b_enable_l>;
41*53ec6d21SJun Yan		};
42*53ec6d21SJun Yan
43*53ec6d21SJun Yan		rgb_led_g: led-1 {
44*53ec6d21SJun Yan			color = <LED_COLOR_ID_GREEN>;
45*53ec6d21SJun Yan			default-state = "on";
46*53ec6d21SJun Yan			function = LED_FUNCTION_STATUS;
47*53ec6d21SJun Yan			gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>;
48*53ec6d21SJun Yan			pinctrl-names = "default";
49*53ec6d21SJun Yan			pinctrl-0 = <&rgb_led_g_enable_l>;
50*53ec6d21SJun Yan		};
51*53ec6d21SJun Yan
52*53ec6d21SJun Yan		rgb_led_r: led-2 {
53*53ec6d21SJun Yan			color = <LED_COLOR_ID_RED>;
54*53ec6d21SJun Yan			default-state = "off";
55*53ec6d21SJun Yan			function = LED_FUNCTION_STATUS;
56*53ec6d21SJun Yan			gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_LOW>;
57*53ec6d21SJun Yan			pinctrl-names = "default";
58*53ec6d21SJun Yan			pinctrl-0 = <&rgb_led_r_enable_l>;
59*53ec6d21SJun Yan		};
60*53ec6d21SJun Yan	};
61*53ec6d21SJun Yan
62*53ec6d21SJun Yan	vcc_1v8: regulator-vcc-1v8 {
63*53ec6d21SJun Yan		compatible = "regulator-fixed";
64*53ec6d21SJun Yan		regulator-name = "vcc_1v8";
65*53ec6d21SJun Yan		regulator-always-on;
66*53ec6d21SJun Yan		regulator-boot-on;
67*53ec6d21SJun Yan		regulator-min-microvolt = <1800000>;
68*53ec6d21SJun Yan		regulator-max-microvolt = <1800000>;
69*53ec6d21SJun Yan		vin-supply = <&vcc5v0_sys>;
70*53ec6d21SJun Yan	};
71*53ec6d21SJun Yan
72*53ec6d21SJun Yan	vcc_3v3: regulator-vcc-3v3 {
73*53ec6d21SJun Yan		compatible = "regulator-fixed";
74*53ec6d21SJun Yan		regulator-name = "vcc_3v3";
75*53ec6d21SJun Yan		regulator-always-on;
76*53ec6d21SJun Yan		regulator-boot-on;
77*53ec6d21SJun Yan		regulator-min-microvolt = <3300000>;
78*53ec6d21SJun Yan		regulator-max-microvolt = <3300000>;
79*53ec6d21SJun Yan		vin-supply = <&vcc5v0_sys>;
80*53ec6d21SJun Yan	};
81*53ec6d21SJun Yan
82*53ec6d21SJun Yan	vcc12v0_dcin: regulator-vcc12v0-dcin {
83*53ec6d21SJun Yan		compatible = "regulator-fixed";
84*53ec6d21SJun Yan		regulator-name = "vcc12v0_dcin";
85*53ec6d21SJun Yan		regulator-always-on;
86*53ec6d21SJun Yan		regulator-boot-on;
87*53ec6d21SJun Yan		regulator-min-microvolt = <12000000>;
88*53ec6d21SJun Yan		regulator-max-microvolt = <12000000>;
89*53ec6d21SJun Yan	};
90*53ec6d21SJun Yan
91*53ec6d21SJun Yan	vcc3v3_sys: regulator-vcc3v3-sys {
92*53ec6d21SJun Yan		compatible = "regulator-fixed";
93*53ec6d21SJun Yan		regulator-name = "vcc3v3_sys";
94*53ec6d21SJun Yan		regulator-always-on;
95*53ec6d21SJun Yan		regulator-boot-on;
96*53ec6d21SJun Yan		regulator-min-microvolt = <3300000>;
97*53ec6d21SJun Yan		regulator-max-microvolt = <3300000>;
98*53ec6d21SJun Yan		vin-supply = <&vcc12v0_dcin>;
99*53ec6d21SJun Yan	};
100*53ec6d21SJun Yan
101*53ec6d21SJun Yan	vcc5v0_sys: regulator-vcc5v0-sys {
102*53ec6d21SJun Yan		compatible = "regulator-fixed";
103*53ec6d21SJun Yan		regulator-name = "vcc5v0_sys";
104*53ec6d21SJun Yan		regulator-always-on;
105*53ec6d21SJun Yan		regulator-boot-on;
106*53ec6d21SJun Yan		regulator-min-microvolt = <5000000>;
107*53ec6d21SJun Yan		regulator-max-microvolt = <5000000>;
108*53ec6d21SJun Yan		vin-supply = <&vcc12v0_dcin>;
109*53ec6d21SJun Yan	};
110*53ec6d21SJun Yan
111*53ec6d21SJun Yan	vcc5v0_usb_host: regulator-vcc5v0-usb-host {
112*53ec6d21SJun Yan		compatible = "regulator-fixed";
113*53ec6d21SJun Yan		enable-active-high;
114*53ec6d21SJun Yan		gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>;
115*53ec6d21SJun Yan		pinctrl-names = "default";
116*53ec6d21SJun Yan		pinctrl-0 = <&vcc5v0_usb_host_en>;
117*53ec6d21SJun Yan		regulator-name = "vcc5v0_usb_host";
118*53ec6d21SJun Yan		regulator-min-microvolt = <5000000>;
119*53ec6d21SJun Yan		regulator-max-microvolt = <5000000>;
120*53ec6d21SJun Yan		vin-supply = <&vcc5v0_sys>;
121*53ec6d21SJun Yan	};
122*53ec6d21SJun Yan
123*53ec6d21SJun Yan	vdd_cpu: regulator-vdd-cpu {
124*53ec6d21SJun Yan		compatible = "pwm-regulator";
125*53ec6d21SJun Yan		pwms = <&pwm0 0 5000 PWM_POLARITY_INVERTED>;
126*53ec6d21SJun Yan		regulator-always-on;
127*53ec6d21SJun Yan		regulator-boot-on;
128*53ec6d21SJun Yan		regulator-name = "vdd_cpu";
129*53ec6d21SJun Yan		regulator-min-microvolt = <800000>;
130*53ec6d21SJun Yan		regulator-max-microvolt = <1200000>;
131*53ec6d21SJun Yan		regulator-settling-time-up-us = <250>;
132*53ec6d21SJun Yan		pwm-supply = <&vcc5v0_sys>;
133*53ec6d21SJun Yan	};
134*53ec6d21SJun Yan
135*53ec6d21SJun Yan	vdd_fixed: regulator-vdd-fixed {
136*53ec6d21SJun Yan		compatible = "regulator-fixed";
137*53ec6d21SJun Yan		regulator-always-on;
138*53ec6d21SJun Yan		regulator-boot-on;
139*53ec6d21SJun Yan		regulator-name = "vdd_fixed";
140*53ec6d21SJun Yan		regulator-min-microvolt = <950000>;
141*53ec6d21SJun Yan		regulator-max-microvolt = <950000>;
142*53ec6d21SJun Yan		vin-supply = <&vcc5v0_sys>;
143*53ec6d21SJun Yan	};
144*53ec6d21SJun Yan
145*53ec6d21SJun Yan	vdd_logic: regulator-vdd-logic {
146*53ec6d21SJun Yan		compatible = "pwm-regulator";
147*53ec6d21SJun Yan		pwms = <&pwm1 0 5000 PWM_POLARITY_INVERTED>;
148*53ec6d21SJun Yan		regulator-name = "vdd_logic";
149*53ec6d21SJun Yan		regulator-always-on;
150*53ec6d21SJun Yan		regulator-boot-on;
151*53ec6d21SJun Yan		regulator-min-microvolt = <800000>;
152*53ec6d21SJun Yan		regulator-max-microvolt = <1100000>;
153*53ec6d21SJun Yan		regulator-settling-time-up-us = <250>;
154*53ec6d21SJun Yan		pwm-supply = <&vcc5v0_sys>;
155*53ec6d21SJun Yan	};
156*53ec6d21SJun Yan};
157*53ec6d21SJun Yan
158*53ec6d21SJun Yan
159*53ec6d21SJun Yan/* No hardware video output port */
160*53ec6d21SJun Yan&display_subsystem {
161*53ec6d21SJun Yan	status = "disabled";
162*53ec6d21SJun Yan};
163*53ec6d21SJun Yan
164*53ec6d21SJun Yan&combphy1 {
165*53ec6d21SJun Yan	status = "okay";
166*53ec6d21SJun Yan};
167*53ec6d21SJun Yan
168*53ec6d21SJun Yan&combphy2 {
169*53ec6d21SJun Yan	status = "okay";
170*53ec6d21SJun Yan};
171*53ec6d21SJun Yan
172*53ec6d21SJun Yan&cpu0 {
173*53ec6d21SJun Yan	cpu-supply = <&vdd_cpu>;
174*53ec6d21SJun Yan};
175*53ec6d21SJun Yan
176*53ec6d21SJun Yan&cpu1 {
177*53ec6d21SJun Yan	cpu-supply = <&vdd_cpu>;
178*53ec6d21SJun Yan};
179*53ec6d21SJun Yan
180*53ec6d21SJun Yan&cpu2 {
181*53ec6d21SJun Yan	cpu-supply = <&vdd_cpu>;
182*53ec6d21SJun Yan};
183*53ec6d21SJun Yan
184*53ec6d21SJun Yan&cpu3 {
185*53ec6d21SJun Yan	cpu-supply = <&vdd_cpu>;
186*53ec6d21SJun Yan};
187*53ec6d21SJun Yan
188*53ec6d21SJun Yan&gmac1 {
189*53ec6d21SJun Yan	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
190*53ec6d21SJun Yan	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&gmac1_clkin>;
191*53ec6d21SJun Yan	clock_in_out = "input";
192*53ec6d21SJun Yan	phy-handle = <&rgmii_phy1>;
193*53ec6d21SJun Yan	phy-mode = "rgmii-id";
194*53ec6d21SJun Yan	pinctrl-names = "default";
195*53ec6d21SJun Yan	pinctrl-0 = <&gmac1m1_miim
196*53ec6d21SJun Yan		    &gmac1m1_tx_bus2
197*53ec6d21SJun Yan		    &gmac1m1_rx_bus2
198*53ec6d21SJun Yan		    &gmac1m1_rgmii_clk
199*53ec6d21SJun Yan		    &gmac1m1_rgmii_bus
200*53ec6d21SJun Yan		    &gmac1m1_clkinout>;
201*53ec6d21SJun Yan	status = "okay";
202*53ec6d21SJun Yan};
203*53ec6d21SJun Yan
204*53ec6d21SJun Yan&gpu {
205*53ec6d21SJun Yan	status = "okay";
206*53ec6d21SJun Yan};
207*53ec6d21SJun Yan
208*53ec6d21SJun Yan&mdio1 {
209*53ec6d21SJun Yan	rgmii_phy1: ethernet-phy@1 {
210*53ec6d21SJun Yan		compatible = "ethernet-phy-ieee802.3-c22";
211*53ec6d21SJun Yan		reg = <0x1>;
212*53ec6d21SJun Yan		reset-assert-us = <20000>;
213*53ec6d21SJun Yan		reset-deassert-us = <100000>;
214*53ec6d21SJun Yan		reset-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>;
215*53ec6d21SJun Yan	};
216*53ec6d21SJun Yan};
217*53ec6d21SJun Yan
218*53ec6d21SJun Yan&pinctrl {
219*53ec6d21SJun Yan	gmac {
220*53ec6d21SJun Yan		eth_phy_reset_pin: eth-phy-reset-pin {
221*53ec6d21SJun Yan			rockchip,pins = <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>;
222*53ec6d21SJun Yan		};
223*53ec6d21SJun Yan	};
224*53ec6d21SJun Yan
225*53ec6d21SJun Yan	leds {
226*53ec6d21SJun Yan		rgb_led_b_enable_l: rgb-led-b-enable-l {
227*53ec6d21SJun Yan			rockchip,pins = <3 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
228*53ec6d21SJun Yan		};
229*53ec6d21SJun Yan
230*53ec6d21SJun Yan		rgb_led_g_enable_l: rgb-led-g-enable-l {
231*53ec6d21SJun Yan			rockchip,pins = <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
232*53ec6d21SJun Yan		};
233*53ec6d21SJun Yan
234*53ec6d21SJun Yan		rgb_led_r_enable_l: rgb-led-r-enable-l {
235*53ec6d21SJun Yan			rockchip,pins = <0 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
236*53ec6d21SJun Yan		};
237*53ec6d21SJun Yan	};
238*53ec6d21SJun Yan
239*53ec6d21SJun Yan	usb {
240*53ec6d21SJun Yan		vcc5v0_usb_host_en: vcc5v0-usb-host-en {
241*53ec6d21SJun Yan			rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
242*53ec6d21SJun Yan		};
243*53ec6d21SJun Yan	};
244*53ec6d21SJun Yan};
245*53ec6d21SJun Yan
246*53ec6d21SJun Yan&pmu_io_domains {
247*53ec6d21SJun Yan	pmuio1-supply = <&vcc_3v3>;
248*53ec6d21SJun Yan	pmuio2-supply = <&vcc_3v3>;
249*53ec6d21SJun Yan	vccio1-supply = <&vcc_1v8>;
250*53ec6d21SJun Yan	vccio3-supply = <&vcc_3v3>;
251*53ec6d21SJun Yan	vccio4-supply = <&vcc_1v8>;
252*53ec6d21SJun Yan	vccio5-supply = <&vcc_3v3>;
253*53ec6d21SJun Yan	vccio6-supply = <&vcc_1v8>;
254*53ec6d21SJun Yan	vccio7-supply = <&vcc_3v3>;
255*53ec6d21SJun Yan	status = "okay";
256*53ec6d21SJun Yan};
257*53ec6d21SJun Yan
258*53ec6d21SJun Yan&pwm0 {
259*53ec6d21SJun Yan	status = "okay";
260*53ec6d21SJun Yan};
261*53ec6d21SJun Yan
262*53ec6d21SJun Yan&pwm1 {
263*53ec6d21SJun Yan	status = "okay";
264*53ec6d21SJun Yan};
265*53ec6d21SJun Yan
266*53ec6d21SJun Yan&saradc {
267*53ec6d21SJun Yan	vref-supply = <&vcc_1v8>;
268*53ec6d21SJun Yan	status = "okay";
269*53ec6d21SJun Yan};
270*53ec6d21SJun Yan
271*53ec6d21SJun Yan&sata2 {
272*53ec6d21SJun Yan	status = "okay";
273*53ec6d21SJun Yan};
274*53ec6d21SJun Yan
275*53ec6d21SJun Yan&sdhci {
276*53ec6d21SJun Yan	bus-width = <8>;
277*53ec6d21SJun Yan	cap-mmc-highspeed;
278*53ec6d21SJun Yan	mmc-hs200-1_8v;
279*53ec6d21SJun Yan	no-sd;
280*53ec6d21SJun Yan	no-sdio;
281*53ec6d21SJun Yan	non-removable;
282*53ec6d21SJun Yan	pinctrl-names = "default";
283*53ec6d21SJun Yan	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
284*53ec6d21SJun Yan	status = "okay";
285*53ec6d21SJun Yan};
286*53ec6d21SJun Yan
287*53ec6d21SJun Yan&tsadc {
288*53ec6d21SJun Yan	rockchip,hw-tshut-mode = <1>;
289*53ec6d21SJun Yan	rockchip,hw-tshut-polarity = <0>;
290*53ec6d21SJun Yan	status = "okay";
291*53ec6d21SJun Yan};
292*53ec6d21SJun Yan
293*53ec6d21SJun Yan&uart2 {
294*53ec6d21SJun Yan	status = "okay";
295*53ec6d21SJun Yan};
296*53ec6d21SJun Yan
297*53ec6d21SJun Yan&usb_host0_ehci {
298*53ec6d21SJun Yan	status = "okay";
299*53ec6d21SJun Yan};
300*53ec6d21SJun Yan
301*53ec6d21SJun Yan&usb_host0_ohci {
302*53ec6d21SJun Yan	status = "okay";
303*53ec6d21SJun Yan};
304*53ec6d21SJun Yan
305*53ec6d21SJun Yan&usb_host1_ehci {
306*53ec6d21SJun Yan	status = "okay";
307*53ec6d21SJun Yan};
308*53ec6d21SJun Yan
309*53ec6d21SJun Yan&usb_host1_ohci {
310*53ec6d21SJun Yan	status = "okay";
311*53ec6d21SJun Yan};
312*53ec6d21SJun Yan
313*53ec6d21SJun Yan&usb_host1_xhci  {
314*53ec6d21SJun Yan	status = "okay";
315*53ec6d21SJun Yan};
316*53ec6d21SJun Yan
317*53ec6d21SJun Yan&usb2phy0 {
318*53ec6d21SJun Yan	status = "okay";
319*53ec6d21SJun Yan};
320*53ec6d21SJun Yan
321*53ec6d21SJun Yan&usb2phy0_host {
322*53ec6d21SJun Yan	phy-supply = <&vcc5v0_usb_host>;
323*53ec6d21SJun Yan	status = "okay";
324*53ec6d21SJun Yan};
325*53ec6d21SJun Yan
326*53ec6d21SJun Yan&usb2phy0_otg {
327*53ec6d21SJun Yan	status = "okay";
328*53ec6d21SJun Yan};
329*53ec6d21SJun Yan
330*53ec6d21SJun Yan&usb2phy1 {
331*53ec6d21SJun Yan	status = "okay";
332*53ec6d21SJun Yan};
333*53ec6d21SJun Yan
334*53ec6d21SJun Yan&usb2phy1_host {
335*53ec6d21SJun Yan	phy-supply = <&vcc5v0_usb_host>;
336*53ec6d21SJun Yan	status = "okay";
337*53ec6d21SJun Yan};
338*53ec6d21SJun Yan
339*53ec6d21SJun Yan&usb2phy1_otg {
340*53ec6d21SJun Yan	phy-supply = <&vcc5v0_usb_host>;
341*53ec6d21SJun Yan	status = "okay";
342*53ec6d21SJun Yan};
343