1// SPDX-License-Identifier: GPL-2.0+ OR X11
2/*
3 * Copyright (c) 2014, 2015 FUKAUMI Naoki <naobsd@gmail.com>
4 */
5
6#include "rk3288.dtsi"
7
8/ {
9	memory {
10		reg = <0 0x80000000>;
11	};
12
13	ext_gmac: external-gmac-clock {
14		compatible = "fixed-clock";
15		#clock-cells = <0>;
16		clock-frequency = <125000000>;
17		clock-output-names = "ext_gmac";
18	};
19
20	ir: ir-receiver {
21		compatible = "gpio-ir-receiver";
22		pinctrl-names = "default";
23		pinctrl-0 = <&ir_int>;
24	};
25
26	keys: gpio-keys {
27		compatible = "gpio-keys";
28
29		button@0 {
30			gpio-key,wakeup = <1>;
31			gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
32			label = "GPIO Power";
33			linux,code = <116>;
34			pinctrl-names = "default";
35			pinctrl-0 = <&pwr_key>;
36		};
37	};
38
39	leds {
40		u-boot,dm-pre-reloc;
41		compatible = "gpio-leds";
42
43		work {
44			u-boot,dm-pre-reloc;
45			gpios = <&gpio8 1 GPIO_ACTIVE_LOW>;
46			label = "firefly:blue:user";
47			linux,default-trigger = "rc-feedback";
48			pinctrl-names = "default";
49			pinctrl-0 = <&work_led>;
50		};
51
52		power {
53			u-boot,dm-pre-reloc;
54			gpios = <&gpio8 2 GPIO_ACTIVE_LOW>;
55			label = "firefly:green:power";
56			linux,default-trigger = "default-on";
57			pinctrl-names = "default";
58			pinctrl-0 = <&power_led>;
59		};
60	};
61
62	vcc_sys: vsys-regulator {
63		compatible = "regulator-fixed";
64		regulator-name = "vcc_sys";
65		regulator-min-microvolt = <5000000>;
66		regulator-max-microvolt = <5000000>;
67		regulator-always-on;
68		regulator-boot-on;
69	};
70
71	vcc_sd: sdmmc-regulator {
72		compatible = "regulator-fixed";
73		gpio = <&gpio7 11 GPIO_ACTIVE_LOW>;
74		pinctrl-names = "default";
75		pinctrl-0 = <&sdmmc_pwr>;
76		regulator-name = "vcc_sd";
77		regulator-min-microvolt = <3300000>;
78		regulator-max-microvolt = <3300000>;
79		startup-delay-us = <100000>;
80		vin-supply = <&vcc_io>;
81	};
82
83	vcc_flash: flash-regulator {
84		compatible = "regulator-fixed";
85		regulator-name = "vcc_flash";
86		regulator-min-microvolt = <1800000>;
87		regulator-max-microvolt = <1800000>;
88		vin-supply = <&vcc_io>;
89	};
90
91	vcc_5v: usb-regulator {
92		compatible = "regulator-fixed";
93		regulator-name = "vcc_5v";
94		regulator-min-microvolt = <5000000>;
95		regulator-max-microvolt = <5000000>;
96		regulator-always-on;
97		regulator-boot-on;
98		vin-supply = <&vcc_sys>;
99	};
100
101	vcc_host_5v: usb-host-regulator {
102		compatible = "regulator-fixed";
103		enable-active-high;
104		gpio = <&gpio0 14 GPIO_ACTIVE_HIGH>;
105		pinctrl-names = "default";
106		pinctrl-0 = <&host_vbus_drv>;
107		regulator-name = "vcc_host_5v";
108		regulator-min-microvolt = <5000000>;
109		regulator-max-microvolt = <5000000>;
110		regulator-always-on;
111		vin-supply = <&vcc_5v>;
112	};
113
114	vcc_otg_5v: usb-otg-regulator {
115		compatible = "regulator-fixed";
116		enable-active-high;
117		gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
118		pinctrl-names = "default";
119		pinctrl-0 = <&otg_vbus_drv>;
120		regulator-name = "vcc_otg_5v";
121		regulator-min-microvolt = <5000000>;
122		regulator-max-microvolt = <5000000>;
123		regulator-always-on;
124		vin-supply = <&vcc_5v>;
125	};
126};
127
128&cpu0 {
129	cpu0-supply = <&vdd_cpu>;
130};
131
132&emmc {
133	broken-cd;
134	bus-width = <8>;
135	cap-mmc-highspeed;
136	disable-wp;
137	non-removable;
138	num-slots = <1>;
139	pinctrl-names = "default";
140	pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_pwr>, <&emmc_bus8>;
141	vmmc-supply = <&vcc_io>;
142	vqmmc-supply = <&vcc_flash>;
143	status = "okay";
144};
145
146&gmac {
147	assigned-clocks = <&cru SCLK_MAC>;
148	assigned-clock-parents = <&ext_gmac>;
149	clock_in_out = "input";
150	pinctrl-names = "default";
151	pinctrl-0 = <&rgmii_pins>, <&phy_rst>, <&phy_pmeb>, <&phy_int>;
152	phy-supply = <&vcc_lan>;
153	phy-mode = "rgmii";
154	snps,reset-active-low;
155	snps,reset-delays-us = <0 10000 1000000>;
156	snps,reset-gpio = <&gpio4 8 GPIO_ACTIVE_LOW>;
157	tx_delay = <0x30>;
158	rx_delay = <0x10>;
159	status = "okay";
160};
161
162&hdmi {
163	ddc-i2c-bus = <&i2c5>;
164	status = "okay";
165};
166
167&i2c0 {
168	clock-frequency = <400000>;
169	status = "okay";
170
171	vdd_cpu: syr827@40 {
172		compatible = "silergy,syr827";
173		fcs,suspend-voltage-selector = <1>;
174		reg = <0x40>;
175		regulator-name = "vdd_cpu";
176		regulator-min-microvolt = <850000>;
177		regulator-max-microvolt = <1350000>;
178		regulator-always-on;
179		regulator-boot-on;
180		vin-supply = <&vcc_sys>;
181	};
182
183	vdd_gpu: syr828@41 {
184		compatible = "silergy,syr828";
185		fcs,suspend-voltage-selector = <1>;
186		reg = <0x41>;
187		regulator-name = "vdd_gpu";
188		regulator-min-microvolt = <850000>;
189		regulator-max-microvolt = <1350000>;
190		regulator-always-on;
191		vin-supply = <&vcc_sys>;
192	};
193
194	hym8563: hym8563@51 {
195		compatible = "haoyu,hym8563";
196		reg = <0x51>;
197		#clock-cells = <0>;
198		clock-frequency = <32768>;
199		clock-output-names = "xin32k";
200		interrupt-parent = <&gpio7>;
201		interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
202		pinctrl-names = "default";
203		pinctrl-0 = <&rtc_int>;
204	};
205
206	act8846: act8846@5a {
207		compatible = "active-semi,act8846";
208		reg = <0x5a>;
209		pinctrl-names = "default";
210		pinctrl-0 = <&pmic_vsel>, <&pwr_hold>;
211		system-power-controller;
212
213		regulators {
214			vcc_ddr: REG1 {
215				regulator-name = "vcc_ddr";
216				regulator-min-microvolt = <1200000>;
217				regulator-max-microvolt = <1200000>;
218				regulator-always-on;
219			};
220
221			vcc_io: REG2 {
222				regulator-name = "vcc_io";
223				regulator-min-microvolt = <3300000>;
224				regulator-max-microvolt = <3300000>;
225				regulator-always-on;
226			};
227
228			vdd_log: REG3 {
229				regulator-name = "vdd_log";
230				regulator-min-microvolt = <1100000>;
231				regulator-max-microvolt = <1100000>;
232				regulator-always-on;
233			};
234
235			vcc_20: REG4 {
236				regulator-name = "vcc_20";
237				regulator-min-microvolt = <2000000>;
238				regulator-max-microvolt = <2000000>;
239				regulator-always-on;
240			};
241
242			vccio_sd: REG5 {
243				regulator-name = "vccio_sd";
244				regulator-min-microvolt = <3300000>;
245				regulator-max-microvolt = <3300000>;
246				regulator-always-on;
247			};
248
249			vdd10_lcd: REG6 {
250				regulator-name = "vdd10_lcd";
251				regulator-min-microvolt = <1000000>;
252				regulator-max-microvolt = <1000000>;
253				regulator-always-on;
254			};
255
256			vcca_18: REG7 {
257				regulator-name = "vcca_18";
258				regulator-min-microvolt = <1800000>;
259				regulator-max-microvolt = <1800000>;
260			};
261
262			vcca_33: REG8 {
263				regulator-name = "vcca_33";
264				regulator-min-microvolt = <3300000>;
265				regulator-max-microvolt = <3300000>;
266			};
267
268			vcc_lan: REG9 {
269				regulator-name = "vcc_lan";
270				regulator-min-microvolt = <3300000>;
271				regulator-max-microvolt = <3300000>;
272			};
273
274			vdd_10: REG10 {
275				regulator-name = "vdd_10";
276				regulator-min-microvolt = <1000000>;
277				regulator-max-microvolt = <1000000>;
278				regulator-always-on;
279			};
280
281			vcc_18: REG11 {
282				regulator-name = "vcc_18";
283				regulator-min-microvolt = <1800000>;
284				regulator-max-microvolt = <1800000>;
285				regulator-always-on;
286			};
287
288			vcc18_lcd: REG12 {
289				regulator-name = "vcc18_lcd";
290				regulator-min-microvolt = <1800000>;
291				regulator-max-microvolt = <1800000>;
292				regulator-always-on;
293			};
294		};
295	};
296};
297
298&i2c1 {
299	status = "okay";
300};
301
302&i2c2 {
303	status = "okay";
304};
305
306&i2c4 {
307	status = "okay";
308};
309
310&i2c5 {
311	status = "okay";
312};
313
314&pinctrl {
315	pcfg_output_high: pcfg-output-high {
316		output-high;
317	};
318
319	pcfg_output_low: pcfg-output-low {
320		output-low;
321	};
322
323	act8846 {
324		pwr_hold: pwr-hold {
325			rockchip,pins = <0 1 RK_FUNC_GPIO &pcfg_output_high>;
326		};
327	};
328
329	gmac {
330		phy_int: phy-int {
331			rockchip,pins = <0 9 RK_FUNC_GPIO &pcfg_pull_up>;
332		};
333
334		phy_pmeb: phy-pmeb {
335			rockchip,pins = <0 8 RK_FUNC_GPIO &pcfg_pull_up>;
336		};
337
338		phy_rst: phy-rst {
339			rockchip,pins = <4 8 RK_FUNC_GPIO &pcfg_output_high>;
340		};
341	};
342
343	hym8563 {
344		rtc_int: rtc-int {
345			rockchip,pins = <7 4 RK_FUNC_GPIO &pcfg_pull_up>;
346		};
347	};
348
349	keys {
350		pwr_key: pwr-key {
351			rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
352		};
353	};
354
355	leds {
356		power_led: power-led {
357			rockchip,pins = <8 2 RK_FUNC_GPIO &pcfg_pull_none>;
358		};
359
360		work_led: work-led {
361			rockchip,pins = <8 1 RK_FUNC_GPIO &pcfg_pull_none>;
362		};
363	};
364
365	sdmmc {
366		sdmmc_pwr: sdmmc-pwr {
367			rockchip,pins = <7 11 RK_FUNC_GPIO &pcfg_pull_none>;
368		};
369	};
370
371	usb_host {
372		host_vbus_drv: host-vbus-drv {
373			rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>;
374		};
375
376		usbhub_rst: usbhub-rst {
377			rockchip,pins = <8 3 RK_FUNC_GPIO &pcfg_output_high>;
378		};
379	};
380
381	usb_otg {
382		otg_vbus_drv: otg-vbus-drv {
383			rockchip,pins = <0 12 RK_FUNC_GPIO &pcfg_pull_none>;
384		};
385	};
386};
387
388&saradc {
389	vref-supply = <&vcc_18>;
390	status = "okay";
391};
392
393&sdio0 {
394	broken-cd;
395	bus-width = <4>;
396	disable-wp;
397	non-removable;
398	num-slots = <1>;
399	pinctrl-names = "default";
400	pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>;
401	vmmc-supply = <&vcc_18>;
402	status = "disabled";
403};
404
405&sdmmc {
406	bus-width = <4>;
407	cap-mmc-highspeed;
408	cap-sd-highspeed;
409	card-detect-delay = <200>;
410	disable-wp;
411	num-slots = <1>;
412	pinctrl-names = "default";
413	pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>;
414	vmmc-supply = <&vcc_sd>;
415	status = "okay";
416};
417
418&spi0 {
419	pinctrl-names = "default";
420	pinctrl-0 = <&spi0_clk>, <&spi0_cs0>, <&spi0_tx>, <&spi0_rx>, <&spi0_cs1>;
421	status = "okay";
422};
423
424&uart0 {
425	pinctrl-names = "default";
426	pinctrl-0 = <&uart0_xfer>, <&uart0_cts>, <&uart0_rts>;
427	status = "okay";
428};
429
430&uart1 {
431	status = "okay";
432};
433
434&uart2 {
435	status = "okay";
436};
437
438&uart3 {
439	status = "okay";
440};
441
442&usb_host1 {
443	pinctrl-names = "default";
444	pinctrl-0 = <&usbhub_rst>;
445	status = "okay";
446};
447
448&usb_otg {
449	status = "okay";
450};
451
452&vopb {
453	status = "okay";
454};
455
456&vopb_mmu {
457	status = "okay";
458};
459
460&vopl {
461	status = "okay";
462};
463
464&vopl_mmu {
465	status = "okay";
466};
467
468&wdt {
469	status = "okay";
470};
471