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	pcfg_pull_up_drv_12ma: pcfg-pull-up-drv-12ma {
324		bias-pull-up;
325		drive-strength = <12>;
326	};
327
328	act8846 {
329		pwr_hold: pwr-hold {
330			rockchip,pins = <0 1 RK_FUNC_GPIO &pcfg_output_high>;
331		};
332	};
333
334	gmac {
335		phy_int: phy-int {
336			rockchip,pins = <0 9 RK_FUNC_GPIO &pcfg_pull_up>;
337		};
338
339		phy_pmeb: phy-pmeb {
340			rockchip,pins = <0 8 RK_FUNC_GPIO &pcfg_pull_up>;
341		};
342
343		phy_rst: phy-rst {
344			rockchip,pins = <4 8 RK_FUNC_GPIO &pcfg_output_high>;
345		};
346	};
347
348	hym8563 {
349		rtc_int: rtc-int {
350			rockchip,pins = <7 4 RK_FUNC_GPIO &pcfg_pull_up>;
351		};
352	};
353
354	keys {
355		pwr_key: pwr-key {
356			rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
357		};
358	};
359
360	leds {
361		power_led: power-led {
362			rockchip,pins = <8 2 RK_FUNC_GPIO &pcfg_pull_none>;
363		};
364
365		work_led: work-led {
366			rockchip,pins = <8 1 RK_FUNC_GPIO &pcfg_pull_none>;
367		};
368	};
369
370	sdmmc {
371		/*
372		 * Default drive strength isn't enough to achieve even
373		 * high-speed mode on firefly board so bump up to 12ma.
374		 */
375		sdmmc_bus4: sdmmc-bus4 {
376			rockchip,pins = <6 RK_PC0 1 &pcfg_pull_up_drv_12ma>,
377					<6 RK_PC1 1 &pcfg_pull_up_drv_12ma>,
378					<6 RK_PC2 1 &pcfg_pull_up_drv_12ma>,
379					<6 RK_PC3 1 &pcfg_pull_up_drv_12ma>;
380		};
381
382		sdmmc_clk: sdmmc-clk {
383			rockchip,pins = <6 RK_PC4 1 &pcfg_pull_none_12ma>;
384		};
385
386		sdmmc_cmd: sdmmc-cmd {
387			rockchip,pins = <6 RK_PC5 1 &pcfg_pull_up_drv_12ma>;
388		};
389
390		sdmmc_pwr: sdmmc-pwr {
391			rockchip,pins = <7 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
392		};
393	};
394
395	usb_host {
396		host_vbus_drv: host-vbus-drv {
397			rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>;
398		};
399
400		usbhub_rst: usbhub-rst {
401			rockchip,pins = <8 3 RK_FUNC_GPIO &pcfg_output_high>;
402		};
403	};
404
405	usb_otg {
406		otg_vbus_drv: otg-vbus-drv {
407			rockchip,pins = <0 12 RK_FUNC_GPIO &pcfg_pull_none>;
408		};
409	};
410};
411
412&saradc {
413	vref-supply = <&vcc_18>;
414	status = "okay";
415};
416
417&sdio0 {
418	broken-cd;
419	bus-width = <4>;
420	disable-wp;
421	non-removable;
422	num-slots = <1>;
423	pinctrl-names = "default";
424	pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>;
425	vmmc-supply = <&vcc_18>;
426	status = "disabled";
427};
428
429&sdmmc {
430	bus-width = <4>;
431	cap-mmc-highspeed;
432	cap-sd-highspeed;
433	card-detect-delay = <200>;
434	disable-wp;
435	num-slots = <1>;
436	pinctrl-names = "default";
437	pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>;
438	vmmc-supply = <&vcc_sd>;
439	status = "okay";
440};
441
442&spi0 {
443	pinctrl-names = "default";
444	pinctrl-0 = <&spi0_clk>, <&spi0_cs0>, <&spi0_tx>, <&spi0_rx>, <&spi0_cs1>;
445	status = "okay";
446};
447
448&uart0 {
449	pinctrl-names = "default";
450	pinctrl-0 = <&uart0_xfer>, <&uart0_cts>, <&uart0_rts>;
451	status = "okay";
452};
453
454&uart1 {
455	status = "okay";
456};
457
458&uart2 {
459	status = "okay";
460};
461
462&uart3 {
463	status = "okay";
464};
465
466&usb_host1 {
467	pinctrl-names = "default";
468	pinctrl-0 = <&usbhub_rst>;
469	status = "okay";
470};
471
472&usb_otg {
473	status = "okay";
474};
475
476&vopb {
477	status = "okay";
478};
479
480&vopb_mmu {
481	status = "okay";
482};
483
484&vopl {
485	status = "okay";
486};
487
488&vopl_mmu {
489	status = "okay";
490};
491
492&wdt {
493	status = "okay";
494};
495