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		key-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_led: led-0 {
49			gpios = <&gpio8 RK_PA2 GPIO_ACTIVE_LOW>;
50			label = "firefly:blue:power";
51			pinctrl-names = "default";
52			pinctrl-0 = <&power_led_pin>;
53			panic-indicator;
54		};
55
56		work_led: led-1 {
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_pin>;
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	vref-supply = <&vcc_18>;
238	status = "okay";
239};
240
241&sdmmc {
242	bus-width = <4>;
243	cap-mmc-highspeed;
244	cap-sd-highspeed;
245	card-detect-delay = <200>;
246	disable-wp;
247	pinctrl-names = "default";
248	pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>;
249	vmmc-supply = <&vcc_sd>;
250	vqmmc-supply = <&vccio_sd>;
251	status = "okay";
252};
253
254&sdio0 {
255	bus-width = <4>;
256	cap-sd-highspeed;
257	cap-sdio-irq;
258	mmc-pwrseq = <&sdio_pwrseq>;
259	non-removable;
260	pinctrl-names = "default";
261	pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>, <&sdio0_int>;
262	sd-uhs-sdr12;
263	sd-uhs-sdr25;
264	sd-uhs-sdr50;
265	sd-uhs-ddr50;
266	vmmc-supply = <&vbat_wl>;
267	vqmmc-supply = <&vccio_wl>;
268	status = "okay";
269};
270
271&spdif {
272	status = "okay";
273};
274
275&uart0 {
276	pinctrl-names = "default";
277	pinctrl-0 = <&uart0_xfer>, <&uart0_cts>, <&uart0_rts>;
278	status = "okay";
279};
280
281&uart1 {
282	status = "okay";
283};
284
285&uart2 {
286	status = "okay";
287};
288
289&uart3 {
290	status = "okay";
291};
292
293&usbphy {
294	status = "okay";
295};
296
297&usb_host1 {
298	pinctrl-names = "default";
299	pinctrl-0 = <&usbhub_rst>;
300	status = "okay";
301};
302
303&usb_otg {
304	status = "okay";
305};
306
307&pinctrl {
308	ir {
309		ir_int: ir-int {
310			rockchip,pins = <7 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
311		};
312	};
313
314	dvp {
315		dvp_pwr: dvp-pwr {
316			rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
317		};
318
319		cif_pwr: cif-pwr {
320			rockchip,pins = <7 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
321		};
322	};
323
324	hym8563 {
325		rtc_int: rtc-int {
326			rockchip,pins = <7 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
327		};
328	};
329
330	keys {
331		pwr_key: pwr-key {
332			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
333		};
334	};
335
336	leds {
337		power_led_pin: power-led-pin {
338			rockchip,pins = <8 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
339		};
340
341		work_led_pin: work-led-pin {
342			rockchip,pins = <8 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
343		};
344	};
345
346	sdmmc {
347		/*
348		 * Default drive strength isn't enough to achieve even
349		 * high-speed mode on firefly board so bump up to 12ma.
350		 */
351		sdmmc_bus4: sdmmc-bus4 {
352			rockchip,pins = <6 RK_PC0 1 &pcfg_pull_up_drv_12ma>,
353					<6 RK_PC1 1 &pcfg_pull_up_drv_12ma>,
354					<6 RK_PC2 1 &pcfg_pull_up_drv_12ma>,
355					<6 RK_PC3 1 &pcfg_pull_up_drv_12ma>;
356		};
357
358		sdmmc_clk: sdmmc-clk {
359			rockchip,pins = <6 RK_PC4 1 &pcfg_pull_none_12ma>;
360		};
361
362		sdmmc_cmd: sdmmc-cmd {
363			rockchip,pins = <6 RK_PC5 1 &pcfg_pull_up_drv_12ma>;
364		};
365
366		sdmmc_pwr: sdmmc-pwr {
367			rockchip,pins = <7 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
368		};
369	};
370
371	sdio {
372		wifi_enable: wifi-enable {
373			rockchip,pins = <4 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
374		};
375	};
376
377	usb_host {
378		host_vbus_drv: host-vbus-drv {
379			rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
380		};
381
382		usbhub_rst: usbhub-rst {
383			rockchip,pins = <8 RK_PA3 RK_FUNC_GPIO &pcfg_output_high>;
384		};
385	};
386
387	usb_otg {
388		otg_vbus_drv: otg-vbus-drv {
389			rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
390		};
391	};
392};
393