GNU Linux-libre 6.1.90-gnu
[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                 key-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: rtc@51 {
237                 compatible = "haoyu,hym8563";
238                 reg = <0x51>;
239                 #clock-cells = <0>;
240                 clock-output-names = "xin32k";
241                 interrupt-parent = <&gpio7>;
242                 interrupts = <RK_PA4 IRQ_TYPE_EDGE_FALLING>;
243                 pinctrl-names = "default";
244                 pinctrl-0 = <&rtc_int>;
245         };
246
247         act8846: act8846@5a {
248                 compatible = "active-semi,act8846";
249                 reg = <0x5a>;
250                 pinctrl-names = "default";
251                 pinctrl-0 = <&pmic_vsel>, <&pwr_hold>;
252                 system-power-controller;
253
254                 vp1-supply = <&vcc_sys>;
255                 vp2-supply = <&vcc_sys>;
256                 vp3-supply = <&vcc_sys>;
257                 vp4-supply = <&vcc_sys>;
258                 inl1-supply = <&vcc_sys>;
259                 inl2-supply = <&vcc_sys>;
260                 inl3-supply = <&vcc_20>;
261
262                 regulators {
263                         vcc_ddr: REG1 {
264                                 regulator-name = "vcc_ddr";
265                                 regulator-min-microvolt = <1200000>;
266                                 regulator-max-microvolt = <1200000>;
267                                 regulator-always-on;
268                         };
269
270                         vcc_io: REG2 {
271                                 regulator-name = "vcc_io";
272                                 regulator-min-microvolt = <3300000>;
273                                 regulator-max-microvolt = <3300000>;
274                                 regulator-always-on;
275                         };
276
277                         vdd_log: REG3 {
278                                 regulator-name = "vdd_log";
279                                 regulator-min-microvolt = <1100000>;
280                                 regulator-max-microvolt = <1100000>;
281                                 regulator-always-on;
282                         };
283
284                         vcc_20: REG4 {
285                                 regulator-name = "vcc_20";
286                                 regulator-min-microvolt = <2000000>;
287                                 regulator-max-microvolt = <2000000>;
288                                 regulator-always-on;
289                         };
290
291                         vccio_sd: REG5 {
292                                 regulator-name = "vccio_sd";
293                                 regulator-min-microvolt = <3300000>;
294                                 regulator-max-microvolt = <3300000>;
295                                 regulator-always-on;
296                         };
297
298                         vdd10_lcd: REG6 {
299                                 regulator-name = "vdd10_lcd";
300                                 regulator-min-microvolt = <1000000>;
301                                 regulator-max-microvolt = <1000000>;
302                                 regulator-always-on;
303                         };
304
305                         vcca_18: REG7 {
306                                 regulator-name = "vcca_18";
307                                 regulator-min-microvolt = <1800000>;
308                                 regulator-max-microvolt = <1800000>;
309                         };
310
311                         vcca_33: REG8 {
312                                 regulator-name = "vcca_33";
313                                 regulator-min-microvolt = <3300000>;
314                                 regulator-max-microvolt = <3300000>;
315                         };
316
317                         vcc_lan: REG9 {
318                                 regulator-name = "vcc_lan";
319                                 regulator-min-microvolt = <3300000>;
320                                 regulator-max-microvolt = <3300000>;
321                         };
322
323                         vdd_10: REG10 {
324                                 regulator-name = "vdd_10";
325                                 regulator-min-microvolt = <1000000>;
326                                 regulator-max-microvolt = <1000000>;
327                                 regulator-always-on;
328                         };
329
330                         vccio_wl: vcc_18: REG11 {
331                                 regulator-name = "vcc_18";
332                                 regulator-min-microvolt = <1800000>;
333                                 regulator-max-microvolt = <1800000>;
334                                 regulator-always-on;
335                         };
336
337                         vcc18_lcd: REG12 {
338                                 regulator-name = "vcc18_lcd";
339                                 regulator-min-microvolt = <1800000>;
340                                 regulator-max-microvolt = <1800000>;
341                                 regulator-always-on;
342                         };
343                 };
344         };
345 };
346
347 &i2c1 {
348         status = "okay";
349 };
350
351 &i2c2 {
352         status = "okay";
353 };
354
355 &i2c4 {
356         status = "okay";
357 };
358
359 &i2c5 {
360         status = "okay";
361 };
362
363 &io_domains {
364         status = "okay";
365
366         audio-supply = <&vcca_33>;
367         bb-supply = <&vcc_io>;
368         dvp-supply = <&dovdd_1v8>;
369         flash0-supply = <&vcc_flash>;
370         flash1-supply = <&vcc_lan>;
371         gpio30-supply = <&vcc_io>;
372         gpio1830-supply = <&vcc_io>;
373         lcdc-supply = <&vcc_io>;
374         sdcard-supply = <&vccio_sd>;
375         wifi-supply = <&vccio_wl>;
376 };
377
378 &pinctrl {
379         pcfg_output_high: pcfg-output-high {
380                 output-high;
381         };
382
383         pcfg_output_low: pcfg-output-low {
384                 output-low;
385         };
386
387         pcfg_pull_up_drv_12ma: pcfg-pull-up-drv-12ma {
388                 bias-pull-up;
389                 drive-strength = <12>;
390         };
391
392         act8846 {
393                 pwr_hold: pwr-hold {
394                         rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_output_high>;
395                 };
396         };
397
398         dvp {
399                 dvp_pwr: dvp-pwr {
400                         rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
401                 };
402         };
403
404         gmac {
405                 phy_int: phy-int {
406                         rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>;
407                 };
408
409                 phy_pmeb: phy-pmeb {
410                         rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>;
411                 };
412
413                 phy_rst: phy-rst {
414                         rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_output_high>;
415                 };
416         };
417
418         hym8563 {
419                 rtc_int: rtc-int {
420                         rockchip,pins = <7 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
421                 };
422         };
423
424         keys {
425                 pwr_key: pwr-key {
426                         rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
427                 };
428         };
429
430         leds {
431                 power_led_pin: power-led-pin {
432                         rockchip,pins = <8 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
433                 };
434
435                 work_led_pin: work-led-pin {
436                         rockchip,pins = <8 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
437                 };
438         };
439
440         sdmmc {
441                 /*
442                  * Default drive strength isn't enough to achieve even
443                  * high-speed mode on firefly board so bump up to 12ma.
444                  */
445                 sdmmc_bus4: sdmmc-bus4 {
446                         rockchip,pins = <6 RK_PC0 1 &pcfg_pull_up_drv_12ma>,
447                                         <6 RK_PC1 1 &pcfg_pull_up_drv_12ma>,
448                                         <6 RK_PC2 1 &pcfg_pull_up_drv_12ma>,
449                                         <6 RK_PC3 1 &pcfg_pull_up_drv_12ma>;
450                 };
451
452                 sdmmc_clk: sdmmc-clk {
453                         rockchip,pins = <6 RK_PC4 1 &pcfg_pull_none_12ma>;
454                 };
455
456                 sdmmc_cmd: sdmmc-cmd {
457                         rockchip,pins = <6 RK_PC5 1 &pcfg_pull_up_drv_12ma>;
458                 };
459
460                 sdmmc_pwr: sdmmc-pwr {
461                         rockchip,pins = <7 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
462                 };
463         };
464
465         usb_host {
466                 host_vbus_drv: host-vbus-drv {
467                         rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
468                 };
469
470                 usbhub_rst: usbhub-rst {
471                         rockchip,pins = <8 RK_PA3 RK_FUNC_GPIO &pcfg_output_high>;
472                 };
473         };
474
475         usb_otg {
476                 otg_vbus_drv: otg-vbus-drv {
477                         rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
478                 };
479         };
480 };
481
482 &saradc {
483         vref-supply = <&vcc_18>;
484         status = "okay";
485 };
486
487 &sdio0 {
488         bus-width = <4>;
489         disable-wp;
490         non-removable;
491         pinctrl-names = "default";
492         pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>;
493         vmmc-supply = <&vbat_wl>;
494         vqmmc-supply = <&vccio_wl>;
495         status = "okay";
496 };
497
498 &sdmmc {
499         bus-width = <4>;
500         cap-mmc-highspeed;
501         cap-sd-highspeed;
502         card-detect-delay = <200>;
503         disable-wp;
504         pinctrl-names = "default";
505         pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>;
506         vmmc-supply = <&vcc_sd>;
507         vqmmc-supply = <&vccio_sd>;
508         status = "okay";
509 };
510
511 &spi0 {
512         pinctrl-names = "default";
513         pinctrl-0 = <&spi0_clk>, <&spi0_cs0>, <&spi0_tx>, <&spi0_rx>, <&spi0_cs1>;
514         status = "okay";
515 };
516
517 &tsadc {
518         rockchip,hw-tshut-mode = <0>;
519         rockchip,hw-tshut-polarity = <0>;
520         status = "okay";
521 };
522
523 &uart0 {
524         pinctrl-names = "default";
525         pinctrl-0 = <&uart0_xfer>, <&uart0_cts>, <&uart0_rts>;
526         status = "okay";
527 };
528
529 &uart1 {
530         status = "okay";
531 };
532
533 &uart2 {
534         status = "okay";
535 };
536
537 &uart3 {
538         status = "okay";
539 };
540
541 &usbphy {
542         status = "okay";
543 };
544
545 &usb_host1 {
546         pinctrl-names = "default";
547         pinctrl-0 = <&usbhub_rst>;
548         status = "okay";
549 };
550
551 &usb_otg {
552         status = "okay";
553 };
554
555 &vopb {
556         status = "okay";
557 };
558
559 &vopb_mmu {
560         status = "okay";
561 };
562
563 &vopl {
564         status = "okay";
565 };
566
567 &vopl_mmu {
568         status = "okay";
569 };
570
571 &wdt {
572         status = "okay";
573 };