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