1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2014, 2015 FUKAUMI Naoki <naobsd@gmail.com>
4 */
5
6#include <dt-bindings/input/input.h>
7#include "rk3288.dtsi"
8
9/ {
10	memory@0 {
11		device_type = "memory";
12		reg = <0x0 0x0 0x0 0x80000000>;
13	};
14
15	adc-keys {
16		compatible = "adc-keys";
17		io-channels = <&saradc 1>;
18		io-channel-names = "buttons";
19		keyup-threshold-microvolt = <1800000>;
20
21		button-recovery {
22			label = "Recovery";
23			linux,code = <KEY_VENDOR>;
24			press-threshold-microvolt = <0>;
25		};
26	};
27
28	dovdd_1v8: dovdd-1v8-regulator {
29		compatible = "regulator-fixed";
30		regulator-name = "dovdd_1v8";
31		regulator-min-microvolt = <1800000>;
32		regulator-max-microvolt = <1800000>;
33		vin-supply = <&vcc28_dvp>;
34	};
35
36	ext_gmac: external-gmac-clock {
37		compatible = "fixed-clock";
38		#clock-cells = <0>;
39		clock-frequency = <125000000>;
40		clock-output-names = "ext_gmac";
41	};
42
43	ir: ir-receiver {
44		compatible = "gpio-ir-receiver";
45		pinctrl-names = "default";
46		pinctrl-0 = <&ir_int>;
47	};
48
49	keys: gpio-keys {
50		compatible = "gpio-keys";
51
52		power {
53			wakeup-source;
54			gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
55			label = "GPIO Power";
56			linux,code = <KEY_POWER>;
57			pinctrl-names = "default";
58			pinctrl-0 = <&pwr_key>;
59		};
60	};
61
62	leds {
63		compatible = "gpio-leds";
64
65		work_led: led-0 {
66			gpios = <&gpio8 RK_PA1 GPIO_ACTIVE_LOW>;
67			label = "firefly:blue:user";
68			linux,default-trigger = "rc-feedback";
69			pinctrl-names = "default";
70			pinctrl-0 = <&work_led_pin>;
71		};
72
73		power_led: led-1 {
74			gpios = <&gpio8 RK_PA2 GPIO_ACTIVE_LOW>;
75			label = "firefly:green:power";
76			linux,default-trigger = "default-on";
77			pinctrl-names = "default";
78			pinctrl-0 = <&power_led_pin>;
79		};
80	};
81
82	vbat_wl: vcc_sys: vsys-regulator {
83		compatible = "regulator-fixed";
84		regulator-name = "vcc_sys";
85		regulator-min-microvolt = <5000000>;
86		regulator-max-microvolt = <5000000>;
87		regulator-always-on;
88		regulator-boot-on;
89	};
90
91	vcc_sd: sdmmc-regulator {
92		compatible = "regulator-fixed";
93		gpio = <&gpio7 RK_PB3 GPIO_ACTIVE_LOW>;
94		pinctrl-names = "default";
95		pinctrl-0 = <&sdmmc_pwr>;
96		regulator-name = "vcc_sd";
97		regulator-min-microvolt = <3300000>;
98		regulator-max-microvolt = <3300000>;
99		startup-delay-us = <100000>;
100		vin-supply = <&vcc_io>;
101	};
102
103	vcc_flash: flash-regulator {
104		compatible = "regulator-fixed";
105		regulator-name = "vcc_flash";
106		regulator-min-microvolt = <1800000>;
107		regulator-max-microvolt = <1800000>;
108		vin-supply = <&vcc_io>;
109	};
110
111	vcc_5v: usb-regulator {
112		compatible = "regulator-fixed";
113		regulator-name = "vcc_5v";
114		regulator-min-microvolt = <5000000>;
115		regulator-max-microvolt = <5000000>;
116		regulator-always-on;
117		regulator-boot-on;
118		vin-supply = <&vcc_sys>;
119	};
120
121	vcc_host_5v: usb-host-regulator {
122		compatible = "regulator-fixed";
123		enable-active-high;
124		gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
125		pinctrl-names = "default";
126		pinctrl-0 = <&host_vbus_drv>;
127		regulator-name = "vcc_host_5v";
128		regulator-min-microvolt = <5000000>;
129		regulator-max-microvolt = <5000000>;
130		regulator-always-on;
131		vin-supply = <&vcc_5v>;
132	};
133
134	vcc_otg_5v: usb-otg-regulator {
135		compatible = "regulator-fixed";
136		enable-active-high;
137		gpio = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
138		pinctrl-names = "default";
139		pinctrl-0 = <&otg_vbus_drv>;
140		regulator-name = "vcc_otg_5v";
141		regulator-min-microvolt = <5000000>;
142		regulator-max-microvolt = <5000000>;
143		regulator-always-on;
144		vin-supply = <&vcc_5v>;
145	};
146
147	/*
148	 * A TT8142 creates both dovdd_1v8 and vcc28_dvp, controlled
149	 * by the dvp_pwr pin.
150	 */
151	vcc28_dvp: vcc28-dvp-regulator {
152		compatible = "regulator-fixed";
153		enable-active-high;
154		gpio = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>;
155		pinctrl-names = "default";
156		pinctrl-0 = <&dvp_pwr>;
157		regulator-name = "vcc28_dvp";
158		regulator-min-microvolt = <2800000>;
159		regulator-max-microvolt = <2800000>;
160		regulator-always-on;
161		vin-supply = <&vcc_io>;
162	};
163};
164
165&cpu0 {
166	cpu0-supply = <&vdd_cpu>;
167};
168
169&emmc {
170	bus-width = <8>;
171	cap-mmc-highspeed;
172	disable-wp;
173	non-removable;
174	pinctrl-names = "default";
175	pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_pwr>, <&emmc_bus8>;
176	vmmc-supply = <&vcc_io>;
177	vqmmc-supply = <&vcc_flash>;
178	status = "okay";
179};
180
181&gmac {
182	assigned-clocks = <&cru SCLK_MAC>;
183	assigned-clock-parents = <&ext_gmac>;
184	clock_in_out = "input";
185	pinctrl-names = "default";
186	pinctrl-0 = <&rgmii_pins>, <&phy_rst>, <&phy_pmeb>, <&phy_int>;
187	phy-supply = <&vcc_lan>;
188	phy-mode = "rgmii";
189	snps,reset-active-low;
190	snps,reset-delays-us = <0 10000 1000000>;
191	snps,reset-gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_LOW>;
192	tx_delay = <0x30>;
193	rx_delay = <0x10>;
194	status = "okay";
195};
196
197&gpu {
198	mali-supply = <&vdd_gpu>;
199	status = "okay";
200};
201
202&hdmi {
203	ddc-i2c-bus = <&i2c5>;
204	status = "okay";
205};
206
207&i2c0 {
208	clock-frequency = <400000>;
209	status = "okay";
210
211	vdd_cpu: syr827@40 {
212		compatible = "silergy,syr827";
213		fcs,suspend-voltage-selector = <1>;
214		reg = <0x40>;
215		regulator-name = "vdd_cpu";
216		regulator-min-microvolt = <850000>;
217		regulator-max-microvolt = <1350000>;
218		regulator-always-on;
219		regulator-boot-on;
220		regulator-enable-ramp-delay = <300>;
221		regulator-ramp-delay = <8000>;
222		vin-supply = <&vcc_sys>;
223	};
224
225	vdd_gpu: syr828@41 {
226		compatible = "silergy,syr828";
227		fcs,suspend-voltage-selector = <1>;
228		reg = <0x41>;
229		regulator-name = "vdd_gpu";
230		regulator-min-microvolt = <850000>;
231		regulator-max-microvolt = <1350000>;
232		regulator-always-on;
233		vin-supply = <&vcc_sys>;
234	};
235
236	hym8563: hym8563@51 {
237		compatible = "haoyu,hym8563";
238		reg = <0x51>;
239		#clock-cells = <0>;
240		clock-frequency = <32768>;
241		clock-output-names = "xin32k";
242		interrupt-parent = <&gpio7>;
243		interrupts = <RK_PA4 IRQ_TYPE_EDGE_FALLING>;
244		pinctrl-names = "default";
245		pinctrl-0 = <&rtc_int>;
246	};
247
248	act8846: act8846@5a {
249		compatible = "active-semi,act8846";
250		reg = <0x5a>;
251		pinctrl-names = "default";
252		pinctrl-0 = <&pmic_vsel>, <&pwr_hold>;
253		system-power-controller;
254
255		vp1-supply = <&vcc_sys>;
256		vp2-supply = <&vcc_sys>;
257		vp3-supply = <&vcc_sys>;
258		vp4-supply = <&vcc_sys>;
259		inl1-supply = <&vcc_sys>;
260		inl2-supply = <&vcc_sys>;
261		inl3-supply = <&vcc_20>;
262
263		regulators {
264			vcc_ddr: REG1 {
265				regulator-name = "vcc_ddr";
266				regulator-min-microvolt = <1200000>;
267				regulator-max-microvolt = <1200000>;
268				regulator-always-on;
269			};
270
271			vcc_io: REG2 {
272				regulator-name = "vcc_io";
273				regulator-min-microvolt = <3300000>;
274				regulator-max-microvolt = <3300000>;
275				regulator-always-on;
276			};
277
278			vdd_log: REG3 {
279				regulator-name = "vdd_log";
280				regulator-min-microvolt = <1100000>;
281				regulator-max-microvolt = <1100000>;
282				regulator-always-on;
283			};
284
285			vcc_20: REG4 {
286				regulator-name = "vcc_20";
287				regulator-min-microvolt = <2000000>;
288				regulator-max-microvolt = <2000000>;
289				regulator-always-on;
290			};
291
292			vccio_sd: REG5 {
293				regulator-name = "vccio_sd";
294				regulator-min-microvolt = <3300000>;
295				regulator-max-microvolt = <3300000>;
296				regulator-always-on;
297			};
298
299			vdd10_lcd: REG6 {
300				regulator-name = "vdd10_lcd";
301				regulator-min-microvolt = <1000000>;
302				regulator-max-microvolt = <1000000>;
303				regulator-always-on;
304			};
305
306			vcca_18: REG7 {
307				regulator-name = "vcca_18";
308				regulator-min-microvolt = <1800000>;
309				regulator-max-microvolt = <1800000>;
310			};
311
312			vcca_33: REG8 {
313				regulator-name = "vcca_33";
314				regulator-min-microvolt = <3300000>;
315				regulator-max-microvolt = <3300000>;
316			};
317
318			vcc_lan: REG9 {
319				regulator-name = "vcc_lan";
320				regulator-min-microvolt = <3300000>;
321				regulator-max-microvolt = <3300000>;
322			};
323
324			vdd_10: REG10 {
325				regulator-name = "vdd_10";
326				regulator-min-microvolt = <1000000>;
327				regulator-max-microvolt = <1000000>;
328				regulator-always-on;
329			};
330
331			vccio_wl: vcc_18: REG11 {
332				regulator-name = "vcc_18";
333				regulator-min-microvolt = <1800000>;
334				regulator-max-microvolt = <1800000>;
335				regulator-always-on;
336			};
337
338			vcc18_lcd: REG12 {
339				regulator-name = "vcc18_lcd";
340				regulator-min-microvolt = <1800000>;
341				regulator-max-microvolt = <1800000>;
342				regulator-always-on;
343			};
344		};
345	};
346};
347
348&i2c1 {
349	status = "okay";
350};
351
352&i2c2 {
353	status = "okay";
354};
355
356&i2c4 {
357	status = "okay";
358};
359
360&i2c5 {
361	status = "okay";
362};
363
364&io_domains {
365	status = "okay";
366
367	audio-supply = <&vcca_33>;
368	bb-supply = <&vcc_io>;
369	dvp-supply = <&dovdd_1v8>;
370	flash0-supply = <&vcc_flash>;
371	flash1-supply = <&vcc_lan>;
372	gpio30-supply = <&vcc_io>;
373	gpio1830-supply = <&vcc_io>;
374	lcdc-supply = <&vcc_io>;
375	sdcard-supply = <&vccio_sd>;
376	wifi-supply = <&vccio_wl>;
377};
378
379&pinctrl {
380	pcfg_output_high: pcfg-output-high {
381		output-high;
382	};
383
384	pcfg_output_low: pcfg-output-low {
385		output-low;
386	};
387
388	pcfg_pull_up_drv_12ma: pcfg-pull-up-drv-12ma {
389		bias-pull-up;
390		drive-strength = <12>;
391	};
392
393	act8846 {
394		pwr_hold: pwr-hold {
395			rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_output_high>;
396		};
397	};
398
399	dvp {
400		dvp_pwr: dvp-pwr {
401			rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
402		};
403	};
404
405	gmac {
406		phy_int: phy-int {
407			rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>;
408		};
409
410		phy_pmeb: phy-pmeb {
411			rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
412		};
413
414		phy_rst: phy-rst {
415			rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_output_high>;
416		};
417	};
418
419	hym8563 {
420		rtc_int: rtc-int {
421			rockchip,pins = <7 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
422		};
423	};
424
425	keys {
426		pwr_key: pwr-key {
427			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
428		};
429	};
430
431	leds {
432		power_led_pin: power-led-pin {
433			rockchip,pins = <8 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
434		};
435
436		work_led_pin: work-led-pin {
437			rockchip,pins = <8 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
438		};
439	};
440
441	sdmmc {
442		/*
443		 * Default drive strength isn't enough to achieve even
444		 * high-speed mode on firefly board so bump up to 12ma.
445		 */
446		sdmmc_bus4: sdmmc-bus4 {
447			rockchip,pins = <6 RK_PC0 1 &pcfg_pull_up_drv_12ma>,
448					<6 RK_PC1 1 &pcfg_pull_up_drv_12ma>,
449					<6 RK_PC2 1 &pcfg_pull_up_drv_12ma>,
450					<6 RK_PC3 1 &pcfg_pull_up_drv_12ma>;
451		};
452
453		sdmmc_clk: sdmmc-clk {
454			rockchip,pins = <6 RK_PC4 1 &pcfg_pull_none_12ma>;
455		};
456
457		sdmmc_cmd: sdmmc-cmd {
458			rockchip,pins = <6 RK_PC5 1 &pcfg_pull_up_drv_12ma>;
459		};
460
461		sdmmc_pwr: sdmmc-pwr {
462			rockchip,pins = <7 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
463		};
464	};
465
466	usb_host {
467		host_vbus_drv: host-vbus-drv {
468			rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
469		};
470
471		usbhub_rst: usbhub-rst {
472			rockchip,pins = <8 RK_PA3 RK_FUNC_GPIO &pcfg_output_high>;
473		};
474	};
475
476	usb_otg {
477		otg_vbus_drv: otg-vbus-drv {
478			rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
479		};
480	};
481};
482
483&saradc {
484	vref-supply = <&vcc_18>;
485	status = "okay";
486};
487
488&sdio0 {
489	bus-width = <4>;
490	disable-wp;
491	non-removable;
492	pinctrl-names = "default";
493	pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>;
494	vmmc-supply = <&vbat_wl>;
495	vqmmc-supply = <&vccio_wl>;
496	status = "okay";
497};
498
499&sdmmc {
500	bus-width = <4>;
501	cap-mmc-highspeed;
502	cap-sd-highspeed;
503	card-detect-delay = <200>;
504	disable-wp;
505	pinctrl-names = "default";
506	pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>;
507	vmmc-supply = <&vcc_sd>;
508	vqmmc-supply = <&vccio_sd>;
509	status = "okay";
510};
511
512&spi0 {
513	pinctrl-names = "default";
514	pinctrl-0 = <&spi0_clk>, <&spi0_cs0>, <&spi0_tx>, <&spi0_rx>, <&spi0_cs1>;
515	status = "okay";
516};
517
518&tsadc {
519	rockchip,hw-tshut-mode = <0>;
520	rockchip,hw-tshut-polarity = <0>;
521	status = "okay";
522};
523
524&uart0 {
525	pinctrl-names = "default";
526	pinctrl-0 = <&uart0_xfer>, <&uart0_cts>, <&uart0_rts>;
527	status = "okay";
528};
529
530&uart1 {
531	status = "okay";
532};
533
534&uart2 {
535	status = "okay";
536};
537
538&uart3 {
539	status = "okay";
540};
541
542&usbphy {
543	status = "okay";
544};
545
546&usb_host1 {
547	pinctrl-names = "default";
548	pinctrl-0 = <&usbhub_rst>;
549	status = "okay";
550};
551
552&usb_otg {
553	status = "okay";
554};
555
556&vopb {
557	status = "okay";
558};
559
560&vopb_mmu {
561	status = "okay";
562};
563
564&vopl {
565	status = "okay";
566};
567
568&vopl_mmu {
569	status = "okay";
570};
571
572&wdt {
573	status = "okay";
574};
575