1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Device tree file for Firefly Rockchip RK3288 Core board
4 * Copyright (c) 2016 Randy Li <ayaka@soulik.info>
5 */
6
7/dts-v1/;
8#include "rk3288-firefly-reload-core.dtsi"
9
10/ {
11	model = "Firefly-RK3288-reload";
12	compatible = "firefly,firefly-rk3288-reload", "rockchip,rk3288";
13
14	adc-keys {
15		compatible = "adc-keys";
16		io-channels = <&saradc 1>;
17		io-channel-names = "buttons";
18		keyup-threshold-microvolt = <1800000>;
19
20		button-recovery {
21			label = "Recovery";
22			linux,code = <KEY_VENDOR>;
23			press-threshold-microvolt = <0>;
24		};
25	};
26
27	gpio-keys {
28		compatible = "gpio-keys";
29
30		power {
31			wakeup-source;
32			gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
33			label = "GPIO Power";
34			linux,code = <KEY_POWER>;
35			pinctrl-names = "default";
36			pinctrl-0 = <&pwr_key>;
37		};
38	};
39
40	ir-receiver {
41		compatible = "gpio-ir-receiver";
42		gpios = <&gpio7 RK_PA0 GPIO_ACTIVE_LOW>;
43	};
44
45	leds {
46		compatible = "gpio-leds";
47
48		power {
49			gpios = <&gpio8 RK_PA2 GPIO_ACTIVE_LOW>;
50			label = "firefly:blue:power";
51			pinctrl-names = "default";
52			pinctrl-0 = <&power_led>;
53			panic-indicator;
54		};
55
56		work {
57			gpios = <&gpio8 RK_PA1 GPIO_ACTIVE_LOW>;
58			label = "firefly:blue:user";
59			linux,default-trigger = "rc-feedback";
60			pinctrl-names = "default";
61			pinctrl-0 = <&work_led>;
62		};
63	};
64
65	sdio_pwrseq: sdio-pwrseq {
66		compatible = "mmc-pwrseq-simple";
67		clocks = <&hym8563>;
68		clock-names = "ext_clock";
69		pinctrl-names = "default";
70		pinctrl-0 = <&wifi_enable>;
71		reset-gpios = <&gpio4 RK_PD4 GPIO_ACTIVE_LOW>;
72	};
73
74	sound {
75		compatible = "simple-audio-card";
76		simple-audio-card,name = "SPDIF";
77		simple-audio-card,dai-link@1 {  /* S/PDIF - S/PDIF */
78			cpu { sound-dai = <&spdif>; };
79			codec { sound-dai = <&spdif_out>; };
80		};
81	};
82
83	spdif_out: spdif-out {
84		compatible = "linux,spdif-dit";
85		#sound-dai-cells = <0>;
86	};
87
88	vcc_host_5v: usb-host-regulator {
89		compatible = "regulator-fixed";
90		enable-active-high;
91		gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
92		pinctrl-names = "default";
93		pinctrl-0 = <&host_vbus_drv>;
94		regulator-name = "vcc_host_5v";
95		regulator-min-microvolt = <5000000>;
96		regulator-max-microvolt = <5000000>;
97		regulator-always-on;
98		vin-supply = <&vcc_5v>;
99	};
100
101	vcc_5v: vcc_sys: vsys-regulator {
102		compatible = "regulator-fixed";
103		regulator-name = "vcc_5v";
104		regulator-min-microvolt = <5000000>;
105		regulator-max-microvolt = <5000000>;
106		regulator-always-on;
107		regulator-boot-on;
108	};
109
110	vcc_sd: sdmmc-regulator {
111		compatible = "regulator-fixed";
112		gpio = <&gpio7 RK_PB3 GPIO_ACTIVE_LOW>;
113		pinctrl-names = "default";
114		pinctrl-0 = <&sdmmc_pwr>;
115		regulator-name = "vcc_sd";
116		regulator-min-microvolt = <3300000>;
117		regulator-max-microvolt = <3300000>;
118		startup-delay-us = <100000>;
119		vin-supply = <&vcc_io>;
120	};
121
122	vcc_otg_5v: usb-otg-regulator {
123		compatible = "regulator-fixed";
124		enable-active-high;
125		gpio = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
126		pinctrl-names = "default";
127		pinctrl-0 = <&otg_vbus_drv>;
128		regulator-name = "vcc_otg_5v";
129		regulator-min-microvolt = <5000000>;
130		regulator-max-microvolt = <5000000>;
131		regulator-always-on;
132		vin-supply = <&vcc_5v>;
133	};
134
135	dovdd_1v8: dovdd-1v8-regulator {
136		compatible = "regulator-fixed";
137		enable-active-high;
138		gpio = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>;
139		pinctrl-names = "default";
140		pinctrl-0 = <&dvp_pwr>;
141		regulator-name = "dovdd_1v8";
142		regulator-min-microvolt = <1800000>;
143		regulator-max-microvolt = <1800000>;
144		vin-supply = <&vcc_io>;
145	};
146
147	vcc28_dvp: vcc28-dvp-regulator {
148		compatible = "regulator-fixed";
149		enable-active-high;
150		gpio = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>;
151		pinctrl-names = "default";
152		pinctrl-0 = <&dvp_pwr>;
153		regulator-name = "vcc28_dvp";
154		regulator-min-microvolt = <2800000>;
155		regulator-max-microvolt = <2800000>;
156		vin-supply = <&vcc_io>;
157	};
158
159	af_28: af_28-regulator {
160		compatible = "regulator-fixed";
161		enable-active-high;
162		gpio = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>;
163		pinctrl-names = "default";
164		pinctrl-0 = <&dvp_pwr>;
165		regulator-name = "af_28";
166		regulator-min-microvolt = <2800000>;
167		regulator-max-microvolt = <2800000>;
168		vin-supply = <&vcc_io>;
169	};
170
171	dvdd_1v2: af_28-regulator {
172		compatible = "regulator-fixed";
173		enable-active-high;
174		gpio = <&gpio7 RK_PB4 GPIO_ACTIVE_HIGH>;
175		pinctrl-names = "default";
176		pinctrl-0 = <&cif_pwr>;
177		regulator-name = "dvdd_1v2";
178		regulator-min-microvolt = <1200000>;
179		regulator-max-microvolt = <1200000>;
180		vin-supply = <&vcc_io>;
181	};
182
183	vbat_wl: wifi-regulator {
184		compatible = "regulator-fixed";
185		regulator-name = "vbat_wl";
186		regulator-min-microvolt = <3300000>;
187		regulator-max-microvolt = <3300000>;
188		vin-supply = <&vcc_io>;
189	};
190};
191
192&hdmi {
193	ddc-i2c-bus = <&i2c5>;
194	pinctrl-names = "default";
195	pinctrl-0 = <&hdmi_cec_c0>;
196	status = "okay";
197};
198
199&i2c0 {
200	hym8563: hym8563@51 {
201		compatible = "haoyu,hym8563";
202		reg = <0x51>;
203		#clock-cells = <0>;
204		clock-frequency = <32768>;
205		clock-output-names = "xin32k";
206		interrupt-parent = <&gpio7>;
207		interrupts = <RK_PA4 IRQ_TYPE_EDGE_FALLING>;
208		pinctrl-names = "default";
209		pinctrl-0 = <&rtc_int>;
210	};
211};
212
213&i2c2 {
214	status = "okay";
215
216	codec: es8328@10 {
217		compatible = "everest,es8328";
218		DVDD-supply = <&vcca_33>;
219		AVDD-supply = <&vcca_33>;
220		PVDD-supply = <&vcca_33>;
221		HPVDD-supply = <&vcca_33>;
222		clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>;
223		clock-names = "i2s_hclk", "i2s_clk";
224		reg = <0x10>;
225	};
226};
227
228&i2c5 {
229	status = "okay";
230};
231
232&i2s {
233	status = "okay";
234};
235
236&saradc {
237	status = "okay";
238};
239
240&sdmmc {
241	bus-width = <4>;
242	cap-mmc-highspeed;
243	cap-sd-highspeed;
244	card-detect-delay = <200>;
245	disable-wp;
246	pinctrl-names = "default";
247	pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>;
248	vmmc-supply = <&vcc_sd>;
249	vqmmc-supply = <&vccio_sd>;
250	status = "okay";
251};
252
253&sdio0 {
254	bus-width = <4>;
255	cap-sd-highspeed;
256	cap-sdio-irq;
257	mmc-pwrseq = <&sdio_pwrseq>;
258	non-removable;
259	pinctrl-names = "default";
260	pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>, <&sdio0_int>;
261	sd-uhs-sdr12;
262	sd-uhs-sdr25;
263	sd-uhs-sdr50;
264	sd-uhs-ddr50;
265	vmmc-supply = <&vbat_wl>;
266	vqmmc-supply = <&vccio_wl>;
267	status = "okay";
268};
269
270&spdif {
271	status = "okay";
272};
273
274&uart0 {
275	pinctrl-names = "default";
276	pinctrl-0 = <&uart0_xfer>, <&uart0_cts>, <&uart0_rts>;
277	status = "okay";
278};
279
280&uart1 {
281	status = "okay";
282};
283
284&uart2 {
285	status = "okay";
286};
287
288&uart3 {
289	status = "okay";
290};
291
292&usbphy {
293	status = "okay";
294};
295
296&usb_host1 {
297	pinctrl-names = "default";
298	pinctrl-0 = <&usbhub_rst>;
299	status = "okay";
300};
301
302&usb_otg {
303	status = "okay";
304};
305
306&pinctrl {
307	ir {
308		ir_int: ir-int {
309			rockchip,pins = <7 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
310		};
311	};
312
313	dvp {
314		dvp_pwr: dvp-pwr {
315			rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
316		};
317
318		cif_pwr: cif-pwr {
319			rockchip,pins = <7 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
320		};
321	};
322
323	hym8563 {
324		rtc_int: rtc-int {
325			rockchip,pins = <7 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
326		};
327	};
328
329	keys {
330		pwr_key: pwr-key {
331			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
332		};
333	};
334
335	leds {
336		power_led: power-led {
337			rockchip,pins = <8 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
338		};
339
340		work_led: work-led {
341			rockchip,pins = <8 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
342		};
343	};
344
345	sdmmc {
346		/*
347		 * Default drive strength isn't enough to achieve even
348		 * high-speed mode on firefly board so bump up to 12ma.
349		 */
350		sdmmc_bus4: sdmmc-bus4 {
351			rockchip,pins = <6 RK_PC0 1 &pcfg_pull_up_drv_12ma>,
352					<6 RK_PC1 1 &pcfg_pull_up_drv_12ma>,
353					<6 RK_PC2 1 &pcfg_pull_up_drv_12ma>,
354					<6 RK_PC3 1 &pcfg_pull_up_drv_12ma>;
355		};
356
357		sdmmc_clk: sdmmc-clk {
358			rockchip,pins = <6 RK_PC4 1 &pcfg_pull_none_12ma>;
359		};
360
361		sdmmc_cmd: sdmmc-cmd {
362			rockchip,pins = <6 RK_PC5 1 &pcfg_pull_up_drv_12ma>;
363		};
364
365		sdmmc_pwr: sdmmc-pwr {
366			rockchip,pins = <7 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
367		};
368	};
369
370	sdio {
371		wifi_enable: wifi-enable {
372			rockchip,pins = <4 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
373		};
374	};
375
376	usb_host {
377		host_vbus_drv: host-vbus-drv {
378			rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
379		};
380
381		usbhub_rst: usbhub-rst {
382			rockchip,pins = <8 RK_PA3 RK_FUNC_GPIO &pcfg_output_high>;
383		};
384	};
385
386	usb_otg {
387		otg_vbus_drv: otg-vbus-drv {
388			rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
389		};
390	};
391};
392