1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2020 Aditya Prayoga <aditya@kobol.io>
4 */
5
6/*
7 * The Kobol Helios64 is a board designed to operate as a NAS and optionally
8 * ships with an enclosing that can host five 2.5" hard disks.
9 *
10 * See https://wiki.kobol.io/helios64/intro/ for further details.
11 */
12
13/dts-v1/;
14#include "rk3399.dtsi"
15#include "rk3399-opp.dtsi"
16
17/ {
18	model = "Kobol Helios64";
19	compatible = "kobol,helios64", "rockchip,rk3399";
20
21	avdd_1v8_s0: avdd-1v8-s0 {
22		compatible = "regulator-fixed";
23		regulator-name = "avdd_1v8_s0";
24		regulator-always-on;
25		regulator-boot-on;
26		regulator-min-microvolt = <1800000>;
27		regulator-max-microvolt = <1800000>;
28		vin-supply = <&vcc3v3_sys_s3>;
29	};
30
31	clkin_gmac: external-gmac-clock {
32		compatible = "fixed-clock";
33		clock-frequency = <125000000>;
34		clock-output-names = "clkin_gmac";
35		#clock-cells = <0>;
36	};
37
38	leds {
39		compatible = "gpio-leds";
40		pinctrl-names = "default";
41		pinctrl-0 = <&sys_grn_led_on &sys_red_led_on>;
42
43		led-0 {
44			label = "helios64:green:status";
45			gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
46			default-state = "on";
47		};
48
49		led-1 {
50			label = "helios64:red:fault";
51			gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
52			default-state = "keep";
53		};
54	};
55
56	vcc1v8_sys_s0: vcc1v8-sys-s0 {
57		compatible = "regulator-fixed";
58		regulator-name = "vcc1v8_sys_s0";
59		regulator-always-on;
60		regulator-boot-on;
61		regulator-min-microvolt = <1800000>;
62		regulator-max-microvolt = <1800000>;
63		vin-supply = <&vcc1v8_sys_s3>;
64	};
65
66	vcc3v0_sd: vcc3v0-sd {
67		compatible = "regulator-fixed";
68		enable-active-high;
69		gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
70		regulator-name = "vcc3v0_sd";
71		regulator-boot-on;
72		regulator-min-microvolt = <3000000>;
73		regulator-max-microvolt = <3000000>;
74		pinctrl-names = "default";
75		pinctrl-0 = <&sdmmc0_pwr_h>;
76		vin-supply = <&vcc3v3_sys_s3>;
77	};
78
79	vcc3v3_sys_s3: vcc_lan: vcc3v3-sys-s3 {
80		compatible = "regulator-fixed";
81		regulator-name = "vcc3v3_sys_s3";
82		regulator-always-on;
83		regulator-boot-on;
84		regulator-min-microvolt = <3300000>;
85		regulator-max-microvolt = <3300000>;
86		vin-supply = <&vcc5v0_sys>;
87
88		regulator-state-mem {
89			regulator-on-in-suspend;
90		};
91	};
92
93	vcc5v0_sys: vcc5v0-sys {
94		compatible = "regulator-fixed";
95		regulator-name = "vcc5v0_sys";
96		regulator-always-on;
97		regulator-boot-on;
98		regulator-min-microvolt = <5000000>;
99		regulator-max-microvolt = <5000000>;
100		vin-supply = <&vcc12v_dcin_bkup>;
101
102		regulator-state-mem {
103			regulator-on-in-suspend;
104		};
105	};
106
107	vcc12v_dcin: vcc12v-dcin {
108		compatible = "regulator-fixed";
109		regulator-name = "vcc12v_dcin";
110		regulator-always-on;
111		regulator-boot-on;
112		regulator-min-microvolt = <12000000>;
113		regulator-max-microvolt = <12000000>;
114	};
115
116	vcc12v_dcin_bkup: vcc12v-dcin-bkup {
117		compatible = "regulator-fixed";
118		regulator-name = "vcc12v_dcin_bkup";
119		regulator-always-on;
120		regulator-boot-on;
121		regulator-min-microvolt = <12000000>;
122		regulator-max-microvolt = <12000000>;
123		vin-supply = <&vcc12v_dcin>;
124	};
125};
126
127/*
128 * The system doesn't run stable with cpu freq enabled, so disallow the lower
129 * frequencies until this problem is properly understood and resolved.
130 */
131&cluster0_opp {
132	/delete-node/ opp00;
133	/delete-node/ opp01;
134	/delete-node/ opp02;
135	/delete-node/ opp03;
136	/delete-node/ opp04;
137};
138
139&cluster1_opp {
140	/delete-node/ opp00;
141	/delete-node/ opp01;
142	/delete-node/ opp02;
143	/delete-node/ opp03;
144	/delete-node/ opp04;
145	/delete-node/ opp05;
146	/delete-node/ opp06;
147};
148
149&cpu_b0 {
150	cpu-supply = <&vdd_cpu_b>;
151};
152
153&cpu_b1 {
154	cpu-supply = <&vdd_cpu_b>;
155};
156
157&cpu_l0 {
158	cpu-supply = <&vdd_cpu_l>;
159};
160
161&cpu_l1 {
162	cpu-supply = <&vdd_cpu_l>;
163};
164
165&cpu_l2 {
166	cpu-supply = <&vdd_cpu_l>;
167};
168
169&cpu_l3 {
170	cpu-supply = <&vdd_cpu_l>;
171};
172
173&emmc_phy {
174	status = "okay";
175};
176
177&gmac {
178	assigned-clock-parents = <&clkin_gmac>;
179	assigned-clocks = <&cru SCLK_RMII_SRC>;
180	clock_in_out = "input";
181	phy-mode = "rgmii";
182	phy-supply = <&vcc_lan>;
183	pinctrl-names = "default";
184	pinctrl-0 = <&rgmii_pins &gphy_reset>;
185	rx_delay = <0x20>;
186	tx_delay = <0x28>;
187	snps,reset-active-low;
188	snps,reset-delays-us = <0 10000 50000>;
189	snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
190	status = "okay";
191};
192
193&i2c0 {
194	clock-frequency = <400000>;
195	i2c-scl-rising-time-ns = <168>;
196	i2c-scl-falling-time-ns = <4>;
197	status = "okay";
198
199	rk808: pmic@1b {
200		compatible = "rockchip,rk808";
201		reg = <0x1b>;
202		interrupt-parent = <&gpio0>;
203		interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
204		clock-output-names = "xin32k", "rk808-clkout2";
205		pinctrl-names = "default";
206		pinctrl-0 = <&pmic_int_l>;
207		vcc1-supply = <&vcc5v0_sys>;
208		vcc2-supply = <&vcc5v0_sys>;
209		vcc3-supply = <&vcc5v0_sys>;
210		vcc4-supply = <&vcc5v0_sys>;
211		vcc6-supply = <&vcc5v0_sys>;
212		vcc7-supply = <&vcc5v0_sys>;
213		vcc8-supply = <&vcc3v3_sys_s3>;
214		vcc9-supply = <&vcc5v0_sys>;
215		vcc10-supply = <&vcc5v0_sys>;
216		vcc11-supply = <&vcc5v0_sys>;
217		vcc12-supply = <&vcc3v3_sys_s3>;
218		vddio-supply = <&vcc3v0_s3>;
219		wakeup-source;
220		#clock-cells = <1>;
221
222		regulators {
223			vdd_cpu_l: DCDC_REG2 {
224				regulator-name = "vdd_cpu_l";
225				regulator-always-on;
226				regulator-boot-on;
227				regulator-min-microvolt = <750000>;
228				regulator-max-microvolt = <1350000>;
229				regulator-ramp-delay = <6001>;
230
231				regulator-state-mem {
232					regulator-off-in-suspend;
233				};
234			};
235
236			vcc1v8_sys_s3: DCDC_REG4 {
237				regulator-name = "vcc1v8_sys_s3";
238				regulator-always-on;
239				regulator-boot-on;
240				regulator-min-microvolt = <1800000>;
241				regulator-max-microvolt = <1800000>;
242
243				regulator-state-mem {
244					regulator-on-in-suspend;
245					regulator-suspend-microvolt = <1800000>;
246				};
247			};
248
249			vcc_sdio_s0: LDO_REG4 {
250				regulator-name = "vcc_sdio_s0";
251				regulator-always-on;
252				regulator-boot-on;
253				regulator-min-microvolt = <1800000>;
254				regulator-max-microvolt = <3000000>;
255
256				regulator-state-mem {
257					regulator-on-in-suspend;
258					regulator-suspend-microvolt = <3000000>;
259				};
260			};
261
262			vcc3v0_s3: LDO_REG8 {
263				regulator-name = "vcc3v0_s3";
264				regulator-always-on;
265				regulator-boot-on;
266				regulator-min-microvolt = <3000000>;
267				regulator-max-microvolt = <3000000>;
268
269				regulator-state-mem {
270					regulator-on-in-suspend;
271					regulator-suspend-microvolt = <3000000>;
272				};
273			};
274		};
275	};
276
277	vdd_cpu_b: regulator@40 {
278		compatible = "silergy,syr827";
279		reg = <0x40>;
280		fcs,suspend-voltage-selector = <1>;
281		regulator-name = "vdd_cpu_b";
282		regulator-always-on;
283		regulator-boot-on;
284		regulator-min-microvolt = <712500>;
285		regulator-max-microvolt = <1500000>;
286		regulator-ramp-delay = <1000>;
287		vin-supply = <&vcc5v0_sys>;
288
289		regulator-state-mem {
290			regulator-off-in-suspend;
291		};
292	};
293};
294
295&i2c2 {
296	clock-frequency = <400000>;
297	i2c-scl-rising-time-ns = <160>;
298	i2c-scl-falling-time-ns = <30>;
299	status = "okay";
300
301	temp@4c {
302		compatible = "national,lm75";
303		reg = <0x4c>;
304	};
305};
306
307&io_domains {
308	audio-supply = <&vcc1v8_sys_s0>;
309	bt656-supply = <&vcc1v8_sys_s0>;
310	gpio1830-supply = <&vcc3v0_s3>;
311	sdmmc-supply = <&vcc_sdio_s0>;
312	status = "okay";
313};
314
315&pinctrl {
316	gmac {
317		gphy_reset: gphy-reset {
318			rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_output_low>;
319		};
320	};
321
322	leds {
323		sys_grn_led_on: sys-grn-led-on {
324			rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
325		};
326
327		sys_red_led_on: sys-red-led-on {
328			rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_down>;
329		};
330	};
331
332	pmic {
333		pmic_int_l: pmic-int-l {
334			rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
335		};
336	};
337
338	vcc3v0-sd {
339		sdmmc0_pwr_h: sdmmc0-pwr-h {
340			rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
341		};
342	};
343};
344
345&pmu_io_domains {
346	pmu1830-supply = <&vcc3v0_s3>;
347	status = "okay";
348};
349
350&sdhci {
351	bus-width = <8>;
352	mmc-hs200-1_8v;
353	non-removable;
354	vqmmc-supply = <&vcc1v8_sys_s0>;
355	status = "okay";
356};
357
358&sdmmc {
359	bus-width = <4>;
360	cap-sd-highspeed;
361	cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
362	disable-wp;
363	pinctrl-names = "default";
364	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
365	vmmc-supply = <&vcc3v0_sd>;
366	vqmmc-supply = <&vcc_sdio_s0>;
367	status = "okay";
368};
369
370&uart2 {
371	status = "okay";
372};
373