xref: /linux/scripts/dtc/include-prefixes/arm64/rockchip/rk3576-armsom-cm5.dtsi (revision 67f8bc848ee31831336bd478e57d2f993551902e)
1*44a48a23SJiaxing Hu// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2*44a48a23SJiaxing Hu/*
3*44a48a23SJiaxing Hu * ArmSoM CM5 - Rockchip RK3576 compute module (Raspberry Pi CM4 form factor).
4*44a48a23SJiaxing Hu *
5*44a48a23SJiaxing Hu * Common to all CM5 carriers. The carrier .dts includes this file, sets the
6*44a48a23SJiaxing Hu * board model/compatible, and adds carrier-specific peripherals.
7*44a48a23SJiaxing Hu *
8*44a48a23SJiaxing Hu * On-module devices:
9*44a48a23SJiaxing Hu *   - RK806 PMIC on I2C1
10*44a48a23SJiaxing Hu *   - HYM8563 RTC on I2C2
11*44a48a23SJiaxing Hu *   - eMMC (SDHCI)
12*44a48a23SJiaxing Hu *   - GMAC0 + MotorComm YT8531 Gigabit Ethernet PHY (RGMII)
13*44a48a23SJiaxing Hu *   - SYN43752 WiFi 6 + BT 5.x (SDIO + UART4)
14*44a48a23SJiaxing Hu *
15*44a48a23SJiaxing Hu * Copyright (c) 2024 ArmSoM
16*44a48a23SJiaxing Hu * Copyright (c) 2026 Jiaxing Hu <gahing@gahingwoo.com>
17*44a48a23SJiaxing Hu */
18*44a48a23SJiaxing Hu
19*44a48a23SJiaxing Hu#include <dt-bindings/gpio/gpio.h>
20*44a48a23SJiaxing Hu#include <dt-bindings/pinctrl/rockchip.h>
21*44a48a23SJiaxing Hu#include "rk3576.dtsi"
22*44a48a23SJiaxing Hu
23*44a48a23SJiaxing Hu/ {
24*44a48a23SJiaxing Hu	compatible = "armsom,cm5", "rockchip,rk3576";
25*44a48a23SJiaxing Hu
26*44a48a23SJiaxing Hu	vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 {
27*44a48a23SJiaxing Hu		compatible = "regulator-fixed";
28*44a48a23SJiaxing Hu		regulator-name = "vcc_1v1_nldo_s3";
29*44a48a23SJiaxing Hu		regulator-boot-on;
30*44a48a23SJiaxing Hu		regulator-always-on;
31*44a48a23SJiaxing Hu		regulator-min-microvolt = <1100000>;
32*44a48a23SJiaxing Hu		regulator-max-microvolt = <1100000>;
33*44a48a23SJiaxing Hu		vin-supply = <&vcc_5v0_sys>;
34*44a48a23SJiaxing Hu	};
35*44a48a23SJiaxing Hu
36*44a48a23SJiaxing Hu	vcc_1v2_ufs_vccq_s0: regulator-vcc-1v2-ufs-vccq-s0 {
37*44a48a23SJiaxing Hu		compatible = "regulator-fixed";
38*44a48a23SJiaxing Hu		regulator-name = "vcc_1v2_ufs_vccq_s0";
39*44a48a23SJiaxing Hu		regulator-boot-on;
40*44a48a23SJiaxing Hu		regulator-always-on;
41*44a48a23SJiaxing Hu		regulator-min-microvolt = <1200000>;
42*44a48a23SJiaxing Hu		regulator-max-microvolt = <1200000>;
43*44a48a23SJiaxing Hu		vin-supply = <&vcc_5v0_sys>;
44*44a48a23SJiaxing Hu	};
45*44a48a23SJiaxing Hu
46*44a48a23SJiaxing Hu	vcc_1v8_s0: regulator-vcc-1v8-s0 {
47*44a48a23SJiaxing Hu		compatible = "regulator-fixed";
48*44a48a23SJiaxing Hu		regulator-name = "vcc_1v8_s0";
49*44a48a23SJiaxing Hu		regulator-boot-on;
50*44a48a23SJiaxing Hu		regulator-always-on;
51*44a48a23SJiaxing Hu		regulator-min-microvolt = <1800000>;
52*44a48a23SJiaxing Hu		regulator-max-microvolt = <1800000>;
53*44a48a23SJiaxing Hu		vin-supply = <&vcc_1v8_s3>;
54*44a48a23SJiaxing Hu	};
55*44a48a23SJiaxing Hu
56*44a48a23SJiaxing Hu	vcc_1v8_ufs_vccq2_s0: regulator-vcc-1v8-ufs-vccq2-s0 {
57*44a48a23SJiaxing Hu		compatible = "regulator-fixed";
58*44a48a23SJiaxing Hu		regulator-name = "vcc_1v8_ufs_vccq2_s0";
59*44a48a23SJiaxing Hu		regulator-boot-on;
60*44a48a23SJiaxing Hu		regulator-always-on;
61*44a48a23SJiaxing Hu		regulator-min-microvolt = <1800000>;
62*44a48a23SJiaxing Hu		regulator-max-microvolt = <1800000>;
63*44a48a23SJiaxing Hu		vin-supply = <&vcc_1v8_s3>;
64*44a48a23SJiaxing Hu	};
65*44a48a23SJiaxing Hu
66*44a48a23SJiaxing Hu	vcc_2v0_pldo_s3: regulator-vcc-2v0-pldo-s3 {
67*44a48a23SJiaxing Hu		compatible = "regulator-fixed";
68*44a48a23SJiaxing Hu		regulator-name = "vcc_2v0_pldo_s3";
69*44a48a23SJiaxing Hu		regulator-boot-on;
70*44a48a23SJiaxing Hu		regulator-always-on;
71*44a48a23SJiaxing Hu		regulator-min-microvolt = <2000000>;
72*44a48a23SJiaxing Hu		regulator-max-microvolt = <2000000>;
73*44a48a23SJiaxing Hu		vin-supply = <&vcc_5v0_sys>;
74*44a48a23SJiaxing Hu	};
75*44a48a23SJiaxing Hu
76*44a48a23SJiaxing Hu	vcc_3v3_s0: regulator-vcc-3v3-s0 {
77*44a48a23SJiaxing Hu		compatible = "regulator-fixed";
78*44a48a23SJiaxing Hu		regulator-name = "vcc_3v3_s0";
79*44a48a23SJiaxing Hu		regulator-boot-on;
80*44a48a23SJiaxing Hu		regulator-always-on;
81*44a48a23SJiaxing Hu		regulator-min-microvolt = <3300000>;
82*44a48a23SJiaxing Hu		regulator-max-microvolt = <3300000>;
83*44a48a23SJiaxing Hu		vin-supply = <&vcc_3v3_s3>;
84*44a48a23SJiaxing Hu	};
85*44a48a23SJiaxing Hu
86*44a48a23SJiaxing Hu	vcc_3v3_ufs_s0: regulator-vcc-ufs-s0 {
87*44a48a23SJiaxing Hu		compatible = "regulator-fixed";
88*44a48a23SJiaxing Hu		regulator-name = "vcc_3v3_ufs_s0";
89*44a48a23SJiaxing Hu		regulator-boot-on;
90*44a48a23SJiaxing Hu		regulator-always-on;
91*44a48a23SJiaxing Hu		regulator-min-microvolt = <3300000>;
92*44a48a23SJiaxing Hu		regulator-max-microvolt = <3300000>;
93*44a48a23SJiaxing Hu		vin-supply = <&vcc_5v0_sys>;
94*44a48a23SJiaxing Hu	};
95*44a48a23SJiaxing Hu
96*44a48a23SJiaxing Hu	/*
97*44a48a23SJiaxing Hu	 * WiFi power sequencer for SYN43752. Reset GPIO1 PC6 active-low,
98*44a48a23SJiaxing Hu	 * clock from the HYM8563 RTC oscillator.
99*44a48a23SJiaxing Hu	 */
100*44a48a23SJiaxing Hu	sdio_pwrseq: sdio-pwrseq {
101*44a48a23SJiaxing Hu		compatible = "mmc-pwrseq-simple";
102*44a48a23SJiaxing Hu		clocks = <&hym8563>;
103*44a48a23SJiaxing Hu		clock-names = "ext_clock";
104*44a48a23SJiaxing Hu		pinctrl-names = "default";
105*44a48a23SJiaxing Hu		pinctrl-0 = <&wifi_reg_on>;
106*44a48a23SJiaxing Hu		reset-gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>;
107*44a48a23SJiaxing Hu	};
108*44a48a23SJiaxing Hu};
109*44a48a23SJiaxing Hu
110*44a48a23SJiaxing Hu&cpu_b0 {
111*44a48a23SJiaxing Hu	cpu-supply = <&vdd_cpu_big_s0>;
112*44a48a23SJiaxing Hu};
113*44a48a23SJiaxing Hu
114*44a48a23SJiaxing Hu&cpu_b1 {
115*44a48a23SJiaxing Hu	cpu-supply = <&vdd_cpu_big_s0>;
116*44a48a23SJiaxing Hu};
117*44a48a23SJiaxing Hu
118*44a48a23SJiaxing Hu&cpu_b2 {
119*44a48a23SJiaxing Hu	cpu-supply = <&vdd_cpu_big_s0>;
120*44a48a23SJiaxing Hu};
121*44a48a23SJiaxing Hu
122*44a48a23SJiaxing Hu&cpu_b3 {
123*44a48a23SJiaxing Hu	cpu-supply = <&vdd_cpu_big_s0>;
124*44a48a23SJiaxing Hu};
125*44a48a23SJiaxing Hu
126*44a48a23SJiaxing Hu&cpu_l0 {
127*44a48a23SJiaxing Hu	cpu-supply = <&vdd_cpu_lit_s0>;
128*44a48a23SJiaxing Hu};
129*44a48a23SJiaxing Hu
130*44a48a23SJiaxing Hu&cpu_l1 {
131*44a48a23SJiaxing Hu	cpu-supply = <&vdd_cpu_lit_s0>;
132*44a48a23SJiaxing Hu};
133*44a48a23SJiaxing Hu
134*44a48a23SJiaxing Hu&cpu_l2 {
135*44a48a23SJiaxing Hu	cpu-supply = <&vdd_cpu_lit_s0>;
136*44a48a23SJiaxing Hu};
137*44a48a23SJiaxing Hu
138*44a48a23SJiaxing Hu&cpu_l3 {
139*44a48a23SJiaxing Hu	cpu-supply = <&vdd_cpu_lit_s0>;
140*44a48a23SJiaxing Hu};
141*44a48a23SJiaxing Hu
142*44a48a23SJiaxing Hu/*
143*44a48a23SJiaxing Hu * GMAC0 drives an on-module MotorComm YT8531. The PHY has no local crystal and
144*44a48a23SJiaxing Hu * takes the SoC 25 MHz reference (REFCLKO25M_GMAC0_OUT); ethm0_clk0_25m_out
145*44a48a23SJiaxing Hu * routes that clock to the pad, and the PHY node consumes and enables it.
146*44a48a23SJiaxing Hu */
147*44a48a23SJiaxing Hu&gmac0 {
148*44a48a23SJiaxing Hu	phy-mode = "rgmii-id";
149*44a48a23SJiaxing Hu	clock_in_out = "output";
150*44a48a23SJiaxing Hu	phy-handle = <&rgmii_phy0>;
151*44a48a23SJiaxing Hu	phy-supply = <&vcc_3v3_s3>;
152*44a48a23SJiaxing Hu	pinctrl-names = "default";
153*44a48a23SJiaxing Hu	pinctrl-0 = <&eth0m0_miim
154*44a48a23SJiaxing Hu		     &eth0m0_tx_bus2
155*44a48a23SJiaxing Hu		     &eth0m0_rx_bus2
156*44a48a23SJiaxing Hu		     &eth0m0_rgmii_clk
157*44a48a23SJiaxing Hu		     &eth0m0_rgmii_bus
158*44a48a23SJiaxing Hu		     &ethm0_clk0_25m_out>;
159*44a48a23SJiaxing Hu	status = "okay";
160*44a48a23SJiaxing Hu};
161*44a48a23SJiaxing Hu
162*44a48a23SJiaxing Hu&gpu {
163*44a48a23SJiaxing Hu	mali-supply = <&vdd_gpu_s0>;
164*44a48a23SJiaxing Hu	status = "okay";
165*44a48a23SJiaxing Hu};
166*44a48a23SJiaxing Hu
167*44a48a23SJiaxing Hu&i2c1 {
168*44a48a23SJiaxing Hu	status = "okay";
169*44a48a23SJiaxing Hu
170*44a48a23SJiaxing Hu	pmic@23 {
171*44a48a23SJiaxing Hu		compatible = "rockchip,rk806";
172*44a48a23SJiaxing Hu		reg = <0x23>;
173*44a48a23SJiaxing Hu		gpio-controller;
174*44a48a23SJiaxing Hu		#gpio-cells = <2>;
175*44a48a23SJiaxing Hu		interrupt-parent = <&gpio0>;
176*44a48a23SJiaxing Hu		interrupts = <RK_PA6 IRQ_TYPE_LEVEL_LOW>;
177*44a48a23SJiaxing Hu		pinctrl-names = "default";
178*44a48a23SJiaxing Hu		pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
179*44a48a23SJiaxing Hu			    <&rk806_dvs2_null>, <&rk806_dvs3_null>;
180*44a48a23SJiaxing Hu		system-power-controller;
181*44a48a23SJiaxing Hu		vcc1-supply = <&vcc_5v0_sys>;
182*44a48a23SJiaxing Hu		vcc2-supply = <&vcc_5v0_sys>;
183*44a48a23SJiaxing Hu		vcc3-supply = <&vcc_5v0_sys>;
184*44a48a23SJiaxing Hu		vcc4-supply = <&vcc_5v0_sys>;
185*44a48a23SJiaxing Hu		vcc5-supply = <&vcc_5v0_sys>;
186*44a48a23SJiaxing Hu		vcc6-supply = <&vcc_5v0_sys>;
187*44a48a23SJiaxing Hu		vcc7-supply = <&vcc_5v0_sys>;
188*44a48a23SJiaxing Hu		vcc8-supply = <&vcc_5v0_sys>;
189*44a48a23SJiaxing Hu		vcc9-supply = <&vcc_5v0_sys>;
190*44a48a23SJiaxing Hu		vcc10-supply = <&vcc_5v0_sys>;
191*44a48a23SJiaxing Hu		vcc11-supply = <&vcc_2v0_pldo_s3>;
192*44a48a23SJiaxing Hu		vcc12-supply = <&vcc_5v0_sys>;
193*44a48a23SJiaxing Hu		vcc13-supply = <&vcc_1v1_nldo_s3>;
194*44a48a23SJiaxing Hu		vcc14-supply = <&vcc_1v1_nldo_s3>;
195*44a48a23SJiaxing Hu		vcca-supply = <&vcc_5v0_sys>;
196*44a48a23SJiaxing Hu
197*44a48a23SJiaxing Hu		rk806_dvs1_null: dvs1-null-pins {
198*44a48a23SJiaxing Hu			pins = "gpio_pwrctrl1";
199*44a48a23SJiaxing Hu			function = "pin_fun0";
200*44a48a23SJiaxing Hu		};
201*44a48a23SJiaxing Hu
202*44a48a23SJiaxing Hu		rk806_dvs2_null: dvs2-null-pins {
203*44a48a23SJiaxing Hu			pins = "gpio_pwrctrl2";
204*44a48a23SJiaxing Hu			function = "pin_fun0";
205*44a48a23SJiaxing Hu		};
206*44a48a23SJiaxing Hu
207*44a48a23SJiaxing Hu		rk806_dvs3_null: dvs3-null-pins {
208*44a48a23SJiaxing Hu			pins = "gpio_pwrctrl3";
209*44a48a23SJiaxing Hu			function = "pin_fun0";
210*44a48a23SJiaxing Hu		};
211*44a48a23SJiaxing Hu
212*44a48a23SJiaxing Hu		regulators {
213*44a48a23SJiaxing Hu			vdd_cpu_big_s0: dcdc-reg1 {
214*44a48a23SJiaxing Hu				regulator-always-on;
215*44a48a23SJiaxing Hu				regulator-boot-on;
216*44a48a23SJiaxing Hu				regulator-enable-ramp-delay = <400>;
217*44a48a23SJiaxing Hu				regulator-min-microvolt = <550000>;
218*44a48a23SJiaxing Hu				regulator-max-microvolt = <950000>;
219*44a48a23SJiaxing Hu				regulator-name = "vdd_cpu_big_s0";
220*44a48a23SJiaxing Hu				regulator-ramp-delay = <12500>;
221*44a48a23SJiaxing Hu
222*44a48a23SJiaxing Hu				regulator-state-mem {
223*44a48a23SJiaxing Hu					regulator-off-in-suspend;
224*44a48a23SJiaxing Hu				};
225*44a48a23SJiaxing Hu			};
226*44a48a23SJiaxing Hu
227*44a48a23SJiaxing Hu			vdd_npu_s0: dcdc-reg2 {
228*44a48a23SJiaxing Hu				regulator-boot-on;
229*44a48a23SJiaxing Hu				regulator-enable-ramp-delay = <400>;
230*44a48a23SJiaxing Hu				regulator-min-microvolt = <550000>;
231*44a48a23SJiaxing Hu				regulator-max-microvolt = <950000>;
232*44a48a23SJiaxing Hu				regulator-name = "vdd_npu_s0";
233*44a48a23SJiaxing Hu				regulator-ramp-delay = <12500>;
234*44a48a23SJiaxing Hu
235*44a48a23SJiaxing Hu				regulator-state-mem {
236*44a48a23SJiaxing Hu					regulator-off-in-suspend;
237*44a48a23SJiaxing Hu				};
238*44a48a23SJiaxing Hu			};
239*44a48a23SJiaxing Hu
240*44a48a23SJiaxing Hu			vdd_cpu_lit_s0: dcdc-reg3 {
241*44a48a23SJiaxing Hu				regulator-always-on;
242*44a48a23SJiaxing Hu				regulator-boot-on;
243*44a48a23SJiaxing Hu				regulator-min-microvolt = <550000>;
244*44a48a23SJiaxing Hu				regulator-max-microvolt = <950000>;
245*44a48a23SJiaxing Hu				regulator-name = "vdd_cpu_lit_s0";
246*44a48a23SJiaxing Hu				regulator-ramp-delay = <12500>;
247*44a48a23SJiaxing Hu
248*44a48a23SJiaxing Hu				regulator-state-mem {
249*44a48a23SJiaxing Hu					regulator-off-in-suspend;
250*44a48a23SJiaxing Hu				};
251*44a48a23SJiaxing Hu			};
252*44a48a23SJiaxing Hu
253*44a48a23SJiaxing Hu			vcc_3v3_s3: dcdc-reg4 {
254*44a48a23SJiaxing Hu				regulator-always-on;
255*44a48a23SJiaxing Hu				regulator-boot-on;
256*44a48a23SJiaxing Hu				regulator-min-microvolt = <3300000>;
257*44a48a23SJiaxing Hu				regulator-max-microvolt = <3300000>;
258*44a48a23SJiaxing Hu				regulator-name = "vcc_3v3_s3";
259*44a48a23SJiaxing Hu
260*44a48a23SJiaxing Hu				regulator-state-mem {
261*44a48a23SJiaxing Hu					regulator-on-in-suspend;
262*44a48a23SJiaxing Hu				};
263*44a48a23SJiaxing Hu			};
264*44a48a23SJiaxing Hu
265*44a48a23SJiaxing Hu			vdd_gpu_s0: dcdc-reg5 {
266*44a48a23SJiaxing Hu				regulator-boot-on;
267*44a48a23SJiaxing Hu				regulator-enable-ramp-delay = <400>;
268*44a48a23SJiaxing Hu				regulator-min-microvolt = <550000>;
269*44a48a23SJiaxing Hu				regulator-max-microvolt = <900000>;
270*44a48a23SJiaxing Hu				regulator-ramp-delay = <12500>;
271*44a48a23SJiaxing Hu				regulator-name = "vdd_gpu_s0";
272*44a48a23SJiaxing Hu
273*44a48a23SJiaxing Hu				regulator-state-mem {
274*44a48a23SJiaxing Hu					regulator-off-in-suspend;
275*44a48a23SJiaxing Hu				};
276*44a48a23SJiaxing Hu			};
277*44a48a23SJiaxing Hu
278*44a48a23SJiaxing Hu			vddq_ddr_s0: dcdc-reg6 {
279*44a48a23SJiaxing Hu				regulator-always-on;
280*44a48a23SJiaxing Hu				regulator-boot-on;
281*44a48a23SJiaxing Hu				regulator-name = "vddq_ddr_s0";
282*44a48a23SJiaxing Hu
283*44a48a23SJiaxing Hu				regulator-state-mem {
284*44a48a23SJiaxing Hu					regulator-off-in-suspend;
285*44a48a23SJiaxing Hu				};
286*44a48a23SJiaxing Hu			};
287*44a48a23SJiaxing Hu
288*44a48a23SJiaxing Hu			vdd_logic_s0: dcdc-reg7 {
289*44a48a23SJiaxing Hu				regulator-always-on;
290*44a48a23SJiaxing Hu				regulator-boot-on;
291*44a48a23SJiaxing Hu				regulator-min-microvolt = <550000>;
292*44a48a23SJiaxing Hu				regulator-max-microvolt = <800000>;
293*44a48a23SJiaxing Hu				regulator-name = "vdd_logic_s0";
294*44a48a23SJiaxing Hu
295*44a48a23SJiaxing Hu				regulator-state-mem {
296*44a48a23SJiaxing Hu					regulator-off-in-suspend;
297*44a48a23SJiaxing Hu				};
298*44a48a23SJiaxing Hu			};
299*44a48a23SJiaxing Hu
300*44a48a23SJiaxing Hu			vcc_1v8_s3: dcdc-reg8 {
301*44a48a23SJiaxing Hu				regulator-always-on;
302*44a48a23SJiaxing Hu				regulator-boot-on;
303*44a48a23SJiaxing Hu				regulator-min-microvolt = <1800000>;
304*44a48a23SJiaxing Hu				regulator-max-microvolt = <1800000>;
305*44a48a23SJiaxing Hu				regulator-name = "vcc_1v8_s3";
306*44a48a23SJiaxing Hu
307*44a48a23SJiaxing Hu				regulator-state-mem {
308*44a48a23SJiaxing Hu					regulator-on-in-suspend;
309*44a48a23SJiaxing Hu				};
310*44a48a23SJiaxing Hu			};
311*44a48a23SJiaxing Hu
312*44a48a23SJiaxing Hu			vdd2_ddr_s3: dcdc-reg9 {
313*44a48a23SJiaxing Hu				regulator-always-on;
314*44a48a23SJiaxing Hu				regulator-boot-on;
315*44a48a23SJiaxing Hu				regulator-name = "vdd2_ddr_s3";
316*44a48a23SJiaxing Hu
317*44a48a23SJiaxing Hu				regulator-state-mem {
318*44a48a23SJiaxing Hu					regulator-on-in-suspend;
319*44a48a23SJiaxing Hu				};
320*44a48a23SJiaxing Hu			};
321*44a48a23SJiaxing Hu
322*44a48a23SJiaxing Hu			vdd_ddr_s0: dcdc-reg10 {
323*44a48a23SJiaxing Hu				regulator-always-on;
324*44a48a23SJiaxing Hu				regulator-boot-on;
325*44a48a23SJiaxing Hu				regulator-min-microvolt = <550000>;
326*44a48a23SJiaxing Hu				regulator-max-microvolt = <1200000>;
327*44a48a23SJiaxing Hu				regulator-name = "vdd_ddr_s0";
328*44a48a23SJiaxing Hu
329*44a48a23SJiaxing Hu				regulator-state-mem {
330*44a48a23SJiaxing Hu					regulator-off-in-suspend;
331*44a48a23SJiaxing Hu				};
332*44a48a23SJiaxing Hu			};
333*44a48a23SJiaxing Hu
334*44a48a23SJiaxing Hu			vcca_1v8_s0: pldo-reg1 {
335*44a48a23SJiaxing Hu				regulator-always-on;
336*44a48a23SJiaxing Hu				regulator-boot-on;
337*44a48a23SJiaxing Hu				regulator-min-microvolt = <1800000>;
338*44a48a23SJiaxing Hu				regulator-max-microvolt = <1800000>;
339*44a48a23SJiaxing Hu				regulator-name = "vcca_1v8_s0";
340*44a48a23SJiaxing Hu
341*44a48a23SJiaxing Hu				regulator-state-mem {
342*44a48a23SJiaxing Hu					regulator-off-in-suspend;
343*44a48a23SJiaxing Hu				};
344*44a48a23SJiaxing Hu			};
345*44a48a23SJiaxing Hu
346*44a48a23SJiaxing Hu			vcca1v8_pldo2_s0: pldo-reg2 {
347*44a48a23SJiaxing Hu				regulator-always-on;
348*44a48a23SJiaxing Hu				regulator-boot-on;
349*44a48a23SJiaxing Hu				regulator-min-microvolt = <1800000>;
350*44a48a23SJiaxing Hu				regulator-max-microvolt = <1800000>;
351*44a48a23SJiaxing Hu				regulator-name = "vcca1v8_pldo2_s0";
352*44a48a23SJiaxing Hu
353*44a48a23SJiaxing Hu				regulator-state-mem {
354*44a48a23SJiaxing Hu					regulator-off-in-suspend;
355*44a48a23SJiaxing Hu				};
356*44a48a23SJiaxing Hu			};
357*44a48a23SJiaxing Hu
358*44a48a23SJiaxing Hu			vdda_1v2_s0: pldo-reg3 {
359*44a48a23SJiaxing Hu				regulator-always-on;
360*44a48a23SJiaxing Hu				regulator-boot-on;
361*44a48a23SJiaxing Hu				regulator-min-microvolt = <1200000>;
362*44a48a23SJiaxing Hu				regulator-max-microvolt = <1200000>;
363*44a48a23SJiaxing Hu				regulator-name = "vdda_1v2_s0";
364*44a48a23SJiaxing Hu
365*44a48a23SJiaxing Hu				regulator-state-mem {
366*44a48a23SJiaxing Hu					regulator-off-in-suspend;
367*44a48a23SJiaxing Hu				};
368*44a48a23SJiaxing Hu			};
369*44a48a23SJiaxing Hu
370*44a48a23SJiaxing Hu			vcca_3v3_s0: pldo-reg4 {
371*44a48a23SJiaxing Hu				regulator-always-on;
372*44a48a23SJiaxing Hu				regulator-boot-on;
373*44a48a23SJiaxing Hu				regulator-min-microvolt = <3300000>;
374*44a48a23SJiaxing Hu				regulator-max-microvolt = <3300000>;
375*44a48a23SJiaxing Hu				regulator-name = "vcca_3v3_s0";
376*44a48a23SJiaxing Hu
377*44a48a23SJiaxing Hu				regulator-state-mem {
378*44a48a23SJiaxing Hu					regulator-off-in-suspend;
379*44a48a23SJiaxing Hu				};
380*44a48a23SJiaxing Hu			};
381*44a48a23SJiaxing Hu
382*44a48a23SJiaxing Hu			vccio_sd_s0: pldo-reg5 {
383*44a48a23SJiaxing Hu				regulator-always-on;
384*44a48a23SJiaxing Hu				regulator-boot-on;
385*44a48a23SJiaxing Hu				regulator-min-microvolt = <1800000>;
386*44a48a23SJiaxing Hu				regulator-max-microvolt = <3300000>;
387*44a48a23SJiaxing Hu				regulator-name = "vccio_sd_s0";
388*44a48a23SJiaxing Hu
389*44a48a23SJiaxing Hu				regulator-state-mem {
390*44a48a23SJiaxing Hu					regulator-off-in-suspend;
391*44a48a23SJiaxing Hu				};
392*44a48a23SJiaxing Hu			};
393*44a48a23SJiaxing Hu
394*44a48a23SJiaxing Hu			vcca1v8_pldo6_s3: pldo-reg6 {
395*44a48a23SJiaxing Hu				regulator-always-on;
396*44a48a23SJiaxing Hu				regulator-boot-on;
397*44a48a23SJiaxing Hu				regulator-min-microvolt = <1800000>;
398*44a48a23SJiaxing Hu				regulator-max-microvolt = <1800000>;
399*44a48a23SJiaxing Hu				regulator-name = "vcca1v8_pldo6_s3";
400*44a48a23SJiaxing Hu
401*44a48a23SJiaxing Hu				regulator-state-mem {
402*44a48a23SJiaxing Hu					regulator-on-in-suspend;
403*44a48a23SJiaxing Hu				};
404*44a48a23SJiaxing Hu			};
405*44a48a23SJiaxing Hu
406*44a48a23SJiaxing Hu			vdd_0v75_s3: nldo-reg1 {
407*44a48a23SJiaxing Hu				regulator-always-on;
408*44a48a23SJiaxing Hu				regulator-boot-on;
409*44a48a23SJiaxing Hu				regulator-min-microvolt = <750000>;
410*44a48a23SJiaxing Hu				regulator-max-microvolt = <750000>;
411*44a48a23SJiaxing Hu				regulator-name = "vdd_0v75_s3";
412*44a48a23SJiaxing Hu
413*44a48a23SJiaxing Hu				regulator-state-mem {
414*44a48a23SJiaxing Hu					regulator-on-in-suspend;
415*44a48a23SJiaxing Hu				};
416*44a48a23SJiaxing Hu			};
417*44a48a23SJiaxing Hu
418*44a48a23SJiaxing Hu			vdda_ddr_pll_s0: nldo-reg2 {
419*44a48a23SJiaxing Hu				regulator-always-on;
420*44a48a23SJiaxing Hu				regulator-boot-on;
421*44a48a23SJiaxing Hu				regulator-min-microvolt = <850000>;
422*44a48a23SJiaxing Hu				regulator-max-microvolt = <850000>;
423*44a48a23SJiaxing Hu				regulator-name = "vdda_ddr_pll_s0";
424*44a48a23SJiaxing Hu
425*44a48a23SJiaxing Hu				regulator-state-mem {
426*44a48a23SJiaxing Hu					regulator-off-in-suspend;
427*44a48a23SJiaxing Hu				};
428*44a48a23SJiaxing Hu			};
429*44a48a23SJiaxing Hu
430*44a48a23SJiaxing Hu			vdda0v75_hdmi_s0: nldo-reg3 {
431*44a48a23SJiaxing Hu				regulator-always-on;
432*44a48a23SJiaxing Hu				regulator-boot-on;
433*44a48a23SJiaxing Hu				regulator-min-microvolt = <837500>;
434*44a48a23SJiaxing Hu				regulator-max-microvolt = <837500>;
435*44a48a23SJiaxing Hu				regulator-name = "vdda0v75_hdmi_s0";
436*44a48a23SJiaxing Hu
437*44a48a23SJiaxing Hu				regulator-state-mem {
438*44a48a23SJiaxing Hu					regulator-off-in-suspend;
439*44a48a23SJiaxing Hu				};
440*44a48a23SJiaxing Hu			};
441*44a48a23SJiaxing Hu
442*44a48a23SJiaxing Hu			vdda_0v85_s0: nldo-reg4 {
443*44a48a23SJiaxing Hu				regulator-always-on;
444*44a48a23SJiaxing Hu				regulator-boot-on;
445*44a48a23SJiaxing Hu				regulator-min-microvolt = <850000>;
446*44a48a23SJiaxing Hu				regulator-max-microvolt = <850000>;
447*44a48a23SJiaxing Hu				regulator-name = "vdda_0v85_s0";
448*44a48a23SJiaxing Hu
449*44a48a23SJiaxing Hu				regulator-state-mem {
450*44a48a23SJiaxing Hu					regulator-off-in-suspend;
451*44a48a23SJiaxing Hu				};
452*44a48a23SJiaxing Hu			};
453*44a48a23SJiaxing Hu
454*44a48a23SJiaxing Hu			vdda_0v75_s0: nldo-reg5 {
455*44a48a23SJiaxing Hu				regulator-always-on;
456*44a48a23SJiaxing Hu				regulator-boot-on;
457*44a48a23SJiaxing Hu				regulator-min-microvolt = <750000>;
458*44a48a23SJiaxing Hu				regulator-max-microvolt = <750000>;
459*44a48a23SJiaxing Hu				regulator-name = "vdda_0v75_s0";
460*44a48a23SJiaxing Hu
461*44a48a23SJiaxing Hu				regulator-state-mem {
462*44a48a23SJiaxing Hu					regulator-off-in-suspend;
463*44a48a23SJiaxing Hu				};
464*44a48a23SJiaxing Hu			};
465*44a48a23SJiaxing Hu		};
466*44a48a23SJiaxing Hu	};
467*44a48a23SJiaxing Hu};
468*44a48a23SJiaxing Hu
469*44a48a23SJiaxing Hu/* I2C2: HYM8563 RTC @ 0x51 (interrupt on GPIO0 PA0). */
470*44a48a23SJiaxing Hu&i2c2 {
471*44a48a23SJiaxing Hu	status = "okay";
472*44a48a23SJiaxing Hu
473*44a48a23SJiaxing Hu	hym8563: rtc@51 {
474*44a48a23SJiaxing Hu		compatible = "haoyu,hym8563";
475*44a48a23SJiaxing Hu		reg = <0x51>;
476*44a48a23SJiaxing Hu		#clock-cells = <0>;
477*44a48a23SJiaxing Hu		clock-output-names = "hym8563";
478*44a48a23SJiaxing Hu		interrupt-parent = <&gpio0>;
479*44a48a23SJiaxing Hu		interrupts = <RK_PA0 IRQ_TYPE_LEVEL_LOW>;
480*44a48a23SJiaxing Hu		pinctrl-names = "default";
481*44a48a23SJiaxing Hu		pinctrl-0 = <&hym8563_int>;
482*44a48a23SJiaxing Hu		wakeup-source;
483*44a48a23SJiaxing Hu	};
484*44a48a23SJiaxing Hu};
485*44a48a23SJiaxing Hu
486*44a48a23SJiaxing Hu/*
487*44a48a23SJiaxing Hu * The PHY reset has to be described at the MDIO bus level: mdiobus releases a
488*44a48a23SJiaxing Hu * bus level reset before it scans for PHY IDs, whereas the per-PHY reset-gpios
489*44a48a23SJiaxing Hu * is only applied by phylib once the PHY has already been found, which never
490*44a48a23SJiaxing Hu * happens while the YT8531 is still held in reset.
491*44a48a23SJiaxing Hu *
492*44a48a23SJiaxing Hu * The compatible names the YT8531 explicitly so phylib instantiates the PHY
493*44a48a23SJiaxing Hu * from the device tree without an MDIO ID probe; the crystal-less PHY does not
494*44a48a23SJiaxing Hu * answer on MDIO until its driver has enabled the reference clock below.
495*44a48a23SJiaxing Hu */
496*44a48a23SJiaxing Hu&mdio0 {
497*44a48a23SJiaxing Hu	reset-gpios = <&gpio2 RK_PB3 GPIO_ACTIVE_LOW>;
498*44a48a23SJiaxing Hu	reset-delay-us = <20000>;
499*44a48a23SJiaxing Hu	reset-post-delay-us = <100000>;
500*44a48a23SJiaxing Hu
501*44a48a23SJiaxing Hu	rgmii_phy0: ethernet-phy@1 {
502*44a48a23SJiaxing Hu		compatible = "ethernet-phy-id4f51.e91b";
503*44a48a23SJiaxing Hu		reg = <0x1>;
504*44a48a23SJiaxing Hu		clocks = <&cru REFCLKO25M_GMAC0_OUT>;
505*44a48a23SJiaxing Hu	};
506*44a48a23SJiaxing Hu};
507*44a48a23SJiaxing Hu
508*44a48a23SJiaxing Hu&saradc {
509*44a48a23SJiaxing Hu	vref-supply = <&vcca_1v8_s0>;
510*44a48a23SJiaxing Hu	status = "okay";
511*44a48a23SJiaxing Hu};
512*44a48a23SJiaxing Hu
513*44a48a23SJiaxing Hu/* eMMC: on-module, HS400 200 MHz with enhanced strobe. */
514*44a48a23SJiaxing Hu&sdhci {
515*44a48a23SJiaxing Hu	bus-width = <8>;
516*44a48a23SJiaxing Hu	full-pwr-cycle-in-suspend;
517*44a48a23SJiaxing Hu	max-frequency = <200000000>;
518*44a48a23SJiaxing Hu	mmc-hs400-1_8v;
519*44a48a23SJiaxing Hu	mmc-hs400-enhanced-strobe;
520*44a48a23SJiaxing Hu	no-sdio;
521*44a48a23SJiaxing Hu	no-sd;
522*44a48a23SJiaxing Hu	non-removable;
523*44a48a23SJiaxing Hu	/delete-property/ supports-cqe;
524*44a48a23SJiaxing Hu	status = "okay";
525*44a48a23SJiaxing Hu};
526*44a48a23SJiaxing Hu
527*44a48a23SJiaxing Hu/* SDIO: SYN43752 WiFi, power-sequenced by sdio_pwrseq, clock from HYM8563. */
528*44a48a23SJiaxing Hu&sdio {
529*44a48a23SJiaxing Hu	bus-width = <4>;
530*44a48a23SJiaxing Hu	cap-sdio-irq;
531*44a48a23SJiaxing Hu	disable-wp;
532*44a48a23SJiaxing Hu	keep-power-in-suspend;
533*44a48a23SJiaxing Hu	mmc-pwrseq = <&sdio_pwrseq>;
534*44a48a23SJiaxing Hu	no-sd;
535*44a48a23SJiaxing Hu	no-mmc;
536*44a48a23SJiaxing Hu	non-removable;
537*44a48a23SJiaxing Hu	sd-uhs-sdr50;
538*44a48a23SJiaxing Hu	sd-uhs-sdr104;
539*44a48a23SJiaxing Hu	vmmc-supply = <&vcc_3v3_s3>;
540*44a48a23SJiaxing Hu	vqmmc-supply = <&vcc_1v8_s3>;
541*44a48a23SJiaxing Hu	wakeup-source;
542*44a48a23SJiaxing Hu	status = "okay";
543*44a48a23SJiaxing Hu};
544*44a48a23SJiaxing Hu
545*44a48a23SJiaxing Hu/* UART4: Bluetooth (SYN43752). */
546*44a48a23SJiaxing Hu&uart4 {
547*44a48a23SJiaxing Hu	pinctrl-0 = <&uart4m1_xfer &uart4m1_ctsn &uart4m1_rtsn>;
548*44a48a23SJiaxing Hu	pinctrl-names = "default";
549*44a48a23SJiaxing Hu	uart-has-rtscts;
550*44a48a23SJiaxing Hu	status = "okay";
551*44a48a23SJiaxing Hu};
552*44a48a23SJiaxing Hu
553*44a48a23SJiaxing Hu&pinctrl {
554*44a48a23SJiaxing Hu	hym8563 {
555*44a48a23SJiaxing Hu		hym8563_int: hym8563-int {
556*44a48a23SJiaxing Hu			rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
557*44a48a23SJiaxing Hu		};
558*44a48a23SJiaxing Hu	};
559*44a48a23SJiaxing Hu
560*44a48a23SJiaxing Hu	wireless-wlan {
561*44a48a23SJiaxing Hu		/* GPIO1 PC6 - WiFi power enable / reset (sdio_pwrseq) */
562*44a48a23SJiaxing Hu		wifi_reg_on: wifi-reg-on {
563*44a48a23SJiaxing Hu			rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>;
564*44a48a23SJiaxing Hu		};
565*44a48a23SJiaxing Hu	};
566*44a48a23SJiaxing Hu};
567