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