GNU Linux-libre 4.19.264-gnu1
[releases.git] / arch / arm / boot / dts / rk3288-firefly.dtsi
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 {
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>;
71                 };
72
73                 power {
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>;
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 = "ok";
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 1 RK_FUNC_GPIO &pcfg_output_high>;
396                 };
397         };
398
399         dvp {
400                 dvp_pwr: dvp-pwr {
401                         rockchip,pins = <0 11 RK_FUNC_GPIO &pcfg_pull_none>;
402                 };
403         };
404
405         gmac {
406                 phy_int: phy-int {
407                         rockchip,pins = <0 9 RK_FUNC_GPIO &pcfg_pull_up>;
408                 };
409
410                 phy_pmeb: phy-pmeb {
411                         rockchip,pins = <0 8 RK_FUNC_GPIO &pcfg_pull_up>;
412                 };
413
414                 phy_rst: phy-rst {
415                         rockchip,pins = <4 8 RK_FUNC_GPIO &pcfg_output_high>;
416                 };
417         };
418
419         hym8563 {
420                 rtc_int: rtc-int {
421                         rockchip,pins = <7 4 RK_FUNC_GPIO &pcfg_pull_up>;
422                 };
423         };
424
425         keys {
426                 pwr_key: pwr-key {
427                         rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
428                 };
429         };
430
431         leds {
432                 power_led: power-led {
433                         rockchip,pins = <8 2 RK_FUNC_GPIO &pcfg_pull_none>;
434                 };
435
436                 work_led: work-led {
437                         rockchip,pins = <8 1 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 16 RK_FUNC_1 &pcfg_pull_up_drv_12ma>,
448                                         <6 17 RK_FUNC_1 &pcfg_pull_up_drv_12ma>,
449                                         <6 18 RK_FUNC_1 &pcfg_pull_up_drv_12ma>,
450                                         <6 19 RK_FUNC_1 &pcfg_pull_up_drv_12ma>;
451                 };
452
453                 sdmmc_clk: sdmmc-clk {
454                         rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none_12ma>;
455                 };
456
457                 sdmmc_cmd: sdmmc-cmd {
458                         rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up_drv_12ma>;
459                 };
460
461                 sdmmc_pwr: sdmmc-pwr {
462                         rockchip,pins = <7 11 RK_FUNC_GPIO &pcfg_pull_none>;
463                 };
464         };
465
466         usb_host {
467                 host_vbus_drv: host-vbus-drv {
468                         rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>;
469                 };
470
471                 usbhub_rst: usbhub-rst {
472                         rockchip,pins = <8 3 RK_FUNC_GPIO &pcfg_output_high>;
473                 };
474         };
475
476         usb_otg {
477                 otg_vbus_drv: otg-vbus-drv {
478                         rockchip,pins = <0 12 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 };