arm64: dts: qcom: sm8550: add TRNG node
[linux-modified.git] / arch / arm64 / boot / dts / mediatek / mt7622-bananapi-bpi-r64.dts
1 /*
2  * Copyright (c) 2018 MediaTek Inc.
3  * Author: Ryder Lee <ryder.lee@mediatek.com>
4  *
5  * SPDX-License-Identifier: (GPL-2.0 OR MIT)
6  */
7
8 /dts-v1/;
9 #include <dt-bindings/input/input.h>
10 #include <dt-bindings/gpio/gpio.h>
11 #include <dt-bindings/leds/common.h>
12
13 #include "mt7622.dtsi"
14 #include "mt6380.dtsi"
15
16 / {
17         model = "Bananapi BPI-R64";
18         chassis-type = "embedded";
19         compatible = "bananapi,bpi-r64", "mediatek,mt7622";
20
21         aliases {
22                 serial0 = &uart0;
23         };
24
25         chosen {
26                 stdout-path = "serial0:115200n8";
27                 bootargs = "earlycon=uart8250,mmio32,0x11002000 swiotlb=512";
28         };
29
30         cpus {
31                 cpu@0 {
32                         proc-supply = <&mt6380_vcpu_reg>;
33                         sram-supply = <&mt6380_vm_reg>;
34                 };
35
36                 cpu@1 {
37                         proc-supply = <&mt6380_vcpu_reg>;
38                         sram-supply = <&mt6380_vm_reg>;
39                 };
40         };
41
42         gpio-keys {
43                 compatible = "gpio-keys";
44
45                 factory-key {
46                         label = "factory";
47                         linux,code = <BTN_0>;
48                         gpios = <&pio 0 GPIO_ACTIVE_HIGH>;
49                 };
50
51                 wps-key {
52                         label = "wps";
53                         linux,code = <KEY_WPS_BUTTON>;
54                         gpios = <&pio 102 GPIO_ACTIVE_LOW>;
55                 };
56         };
57
58         leds {
59                 compatible = "gpio-leds";
60
61                 led-0 {
62                         label = "bpi-r64:pio:green";
63                         color = <LED_COLOR_ID_GREEN>;
64                         gpios = <&pio 89 GPIO_ACTIVE_HIGH>;
65                         default-state = "off";
66                 };
67
68                 led-1 {
69                         label = "bpi-r64:pio:red";
70                         color = <LED_COLOR_ID_RED>;
71                         gpios = <&pio 88 GPIO_ACTIVE_HIGH>;
72                         default-state = "off";
73                 };
74         };
75
76         memory@40000000 {
77                 reg = <0 0x40000000 0 0x40000000>;
78         };
79
80         reg_1p8v: regulator-1p8v {
81                 compatible = "regulator-fixed";
82                 regulator-name = "fixed-1.8V";
83                 regulator-min-microvolt = <1800000>;
84                 regulator-max-microvolt = <1800000>;
85                 regulator-always-on;
86         };
87
88         reg_3p3v: regulator-3p3v {
89                 compatible = "regulator-fixed";
90                 regulator-name = "fixed-3.3V";
91                 regulator-min-microvolt = <3300000>;
92                 regulator-max-microvolt = <3300000>;
93                 regulator-boot-on;
94                 regulator-always-on;
95         };
96
97         reg_5v: regulator-5v {
98                 compatible = "regulator-fixed";
99                 regulator-name = "fixed-5V";
100                 regulator-min-microvolt = <5000000>;
101                 regulator-max-microvolt = <5000000>;
102                 regulator-boot-on;
103                 regulator-always-on;
104         };
105 };
106
107 &bch {
108         status = "disabled";
109 };
110
111 &btif {
112         status = "okay";
113 };
114
115 &cir {
116         pinctrl-names = "default";
117         pinctrl-0 = <&irrx_pins>;
118         status = "okay";
119 };
120
121 &eth {
122         status = "okay";
123         gmac0: mac@0 {
124                 compatible = "mediatek,eth-mac";
125                 reg = <0>;
126                 phy-mode = "2500base-x";
127
128                 fixed-link {
129                         speed = <2500>;
130                         full-duplex;
131                         pause;
132                 };
133         };
134
135         gmac1: mac@1 {
136                 compatible = "mediatek,eth-mac";
137                 reg = <1>;
138                 phy-mode = "rgmii";
139
140                 fixed-link {
141                         speed = <1000>;
142                         full-duplex;
143                         pause;
144                 };
145         };
146
147         mdio: mdio-bus {
148                 #address-cells = <1>;
149                 #size-cells = <0>;
150
151                 switch@0 {
152                         compatible = "mediatek,mt7531";
153                         reg = <0>;
154                         interrupt-controller;
155                         #interrupt-cells = <1>;
156                         interrupt-parent = <&pio>;
157                         interrupts = <53 IRQ_TYPE_LEVEL_HIGH>;
158                         reset-gpios = <&pio 54 0>;
159
160                         ports {
161                                 #address-cells = <1>;
162                                 #size-cells = <0>;
163
164                                 port@0 {
165                                         reg = <0>;
166                                         label = "wan";
167                                 };
168
169                                 port@1 {
170                                         reg = <1>;
171                                         label = "lan0";
172                                 };
173
174                                 port@2 {
175                                         reg = <2>;
176                                         label = "lan1";
177                                 };
178
179                                 port@3 {
180                                         reg = <3>;
181                                         label = "lan2";
182                                 };
183
184                                 port@4 {
185                                         reg = <4>;
186                                         label = "lan3";
187                                 };
188
189                                 port@6 {
190                                         reg = <6>;
191                                         label = "cpu";
192                                         ethernet = <&gmac0>;
193                                         phy-mode = "2500base-x";
194
195                                         fixed-link {
196                                                 speed = <2500>;
197                                                 full-duplex;
198                                                 pause;
199                                         };
200                                 };
201                         };
202                 };
203
204         };
205 };
206
207 &i2c1 {
208         pinctrl-names = "default";
209         pinctrl-0 = <&i2c1_pins>;
210         status = "okay";
211 };
212
213 &i2c2 {
214         pinctrl-names = "default";
215         pinctrl-0 = <&i2c2_pins>;
216         status = "okay";
217 };
218
219 &mmc0 {
220         pinctrl-names = "default", "state_uhs";
221         pinctrl-0 = <&emmc_pins_default>;
222         pinctrl-1 = <&emmc_pins_uhs>;
223         status = "okay";
224         bus-width = <8>;
225         max-frequency = <50000000>;
226         cap-mmc-highspeed;
227         mmc-hs200-1_8v;
228         vmmc-supply = <&reg_3p3v>;
229         vqmmc-supply = <&reg_1p8v>;
230         assigned-clocks = <&topckgen CLK_TOP_MSDC30_0_SEL>;
231         assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>;
232         non-removable;
233 };
234
235 &mmc1 {
236         pinctrl-names = "default", "state_uhs";
237         pinctrl-0 = <&sd0_pins_default>;
238         pinctrl-1 = <&sd0_pins_uhs>;
239         status = "okay";
240         bus-width = <4>;
241         max-frequency = <50000000>;
242         cap-sd-highspeed;
243         cd-gpios = <&pio 81 GPIO_ACTIVE_LOW>;
244         vmmc-supply = <&reg_3p3v>;
245         vqmmc-supply = <&reg_3p3v>;
246         assigned-clocks = <&topckgen CLK_TOP_MSDC30_1_SEL>;
247         assigned-clock-parents = <&topckgen CLK_TOP_UNIV48M>;
248 };
249
250 &nandc {
251         pinctrl-names = "default";
252         pinctrl-0 = <&parallel_nand_pins>;
253         status = "disabled";
254 };
255
256 &bch {
257         status = "okay";
258 };
259
260 &snfi {
261         pinctrl-names = "default";
262         pinctrl-0 = <&serial_nand_pins>;
263         status = "okay";
264         flash@0 {
265                 compatible = "spi-nand";
266                 reg = <0>;
267                 spi-tx-bus-width = <4>;
268                 spi-rx-bus-width = <4>;
269                 nand-ecc-engine = <&snfi>;
270                 partitions {
271                         compatible = "fixed-partitions";
272                         #address-cells = <1>;
273                         #size-cells = <1>;
274
275                         partition@0 {
276                                 label = "bl2";
277                                 reg = <0x0 0x80000>;
278                                 read-only;
279                         };
280
281                         partition@80000 {
282                                 label = "fip";
283                                 reg = <0x80000 0x200000>;
284                                 read-only;
285                         };
286
287                         ubi: partition@280000 {
288                                 label = "ubi";
289                                 reg = <0x280000 0x7d80000>;
290                         };
291                 };
292         };
293 };
294
295 &pcie0 {
296         pinctrl-names = "default";
297         pinctrl-0 = <&pcie0_pins>;
298         status = "okay";
299 };
300
301 &pcie1 {
302         pinctrl-names = "default";
303         pinctrl-0 = <&pcie1_pins>;
304         status = "okay";
305 };
306
307 &pio {
308         /* Attention: GPIO 90 is used to switch between PCIe@1,0 and
309          * SATA functions. i.e. output-high: PCIe, output-low: SATA
310          */
311         asm_sel {
312                 gpio-hog;
313                 gpios = <90 GPIO_ACTIVE_HIGH>;
314                 output-high;
315         };
316
317         /* eMMC is shared pin with parallel NAND */
318         emmc_pins_default: emmc-pins-default {
319                 mux {
320                         function = "emmc", "emmc_rst";
321                         groups = "emmc";
322                 };
323
324                 /* "NDL0","NDL1","NDL2","NDL3","NDL4","NDL5","NDL6","NDL7",
325                  * "NRB","NCLE" pins are used as DAT0,DAT1,DAT2,DAT3,DAT4,
326                  * DAT5,DAT6,DAT7,CMD,CLK for eMMC respectively
327                  */
328                 conf-cmd-dat {
329                         pins = "NDL0", "NDL1", "NDL2",
330                                "NDL3", "NDL4", "NDL5",
331                                "NDL6", "NDL7", "NRB";
332                         input-enable;
333                         bias-pull-up;
334                 };
335
336                 conf-clk {
337                         pins = "NCLE";
338                         bias-pull-down;
339                 };
340         };
341
342         emmc_pins_uhs: emmc-pins-uhs {
343                 mux {
344                         function = "emmc";
345                         groups = "emmc";
346                 };
347
348                 conf-cmd-dat {
349                         pins = "NDL0", "NDL1", "NDL2",
350                                "NDL3", "NDL4", "NDL5",
351                                "NDL6", "NDL7", "NRB";
352                         input-enable;
353                         drive-strength = <4>;
354                         bias-pull-up;
355                 };
356
357                 conf-clk {
358                         pins = "NCLE";
359                         drive-strength = <4>;
360                         bias-pull-down;
361                 };
362         };
363
364         eth_pins: eth-pins {
365                 mux {
366                         function = "eth";
367                         groups = "mdc_mdio", "rgmii_via_gmac2";
368                 };
369         };
370
371         i2c1_pins: i2c1-pins {
372                 mux {
373                         function = "i2c";
374                         groups = "i2c1_0";
375                 };
376         };
377
378         i2c2_pins: i2c2-pins {
379                 mux {
380                         function = "i2c";
381                         groups = "i2c2_0";
382                 };
383         };
384
385         i2s1_pins: i2s1-pins {
386                 mux {
387                         function = "i2s";
388                         groups = "i2s_out_mclk_bclk_ws",
389                                  "i2s1_in_data",
390                                  "i2s1_out_data";
391                 };
392
393                 conf {
394                         pins = "I2S1_IN", "I2S1_OUT", "I2S_BCLK",
395                                "I2S_WS", "I2S_MCLK";
396                         drive-strength = <12>;
397                         bias-pull-down;
398                 };
399         };
400
401         irrx_pins: irrx-pins {
402                 mux {
403                         function = "ir";
404                         groups = "ir_1_rx";
405                 };
406         };
407
408         irtx_pins: irtx-pins {
409                 mux {
410                         function = "ir";
411                         groups = "ir_1_tx";
412                 };
413         };
414
415         /* Parallel nand is shared pin with eMMC */
416         parallel_nand_pins: parallel-nand-pins {
417                 mux {
418                         function = "flash";
419                         groups = "par_nand";
420                 };
421         };
422
423         pcie0_pins: pcie0-pins {
424                 mux {
425                         function = "pcie";
426                         groups = "pcie0_pad_perst",
427                                  "pcie0_1_waken",
428                                  "pcie0_1_clkreq";
429                 };
430         };
431
432         pcie1_pins: pcie1-pins {
433                 mux {
434                         function = "pcie";
435                         groups = "pcie1_pad_perst",
436                                  "pcie1_0_waken",
437                                  "pcie1_0_clkreq";
438                 };
439         };
440
441         pmic_bus_pins: pmic-bus-pins {
442                 mux {
443                         function = "pmic";
444                         groups = "pmic_bus";
445                 };
446         };
447
448         pwm_pins: pwm-pins {
449                 mux {
450                         function = "pwm";
451                         groups = "pwm_ch1_0", /* mt7622_pwm_ch1_0_pins[] = { 51, }; */
452                                  "pwm_ch2_0", /* mt7622_pwm_ch2_0_pins[] = { 52, }; */
453                                  "pwm_ch3_2", /* mt7622_pwm_ch3_2_pins[] = { 97, }; */
454                                  "pwm_ch4_1", /* mt7622_pwm_ch4_1_pins[] = { 67, }; */
455                                  "pwm_ch5_0", /* mt7622_pwm_ch5_0_pins[] = { 68, }; */
456                                  "pwm_ch6_0"; /* mt7622_pwm_ch6_0_pins[] = { 69, }; */
457                 };
458         };
459
460         wled_pins: wled-pins {
461                 mux {
462                         function = "led";
463                         groups = "wled";
464                 };
465         };
466
467         sd0_pins_default: sd0-pins-default {
468                 mux {
469                         function = "sd";
470                         groups = "sd_0";
471                 };
472
473                 /* "I2S2_OUT, "I2S4_IN"", "I2S3_IN", "I2S2_IN",
474                  *  "I2S4_OUT", "I2S3_OUT" are used as DAT0, DAT1,
475                  *  DAT2, DAT3, CMD, CLK for SD respectively.
476                  */
477                 conf-cmd-data {
478                         pins = "I2S2_OUT", "I2S4_IN", "I2S3_IN",
479                                "I2S2_IN","I2S4_OUT";
480                         input-enable;
481                         drive-strength = <8>;
482                         bias-pull-up;
483                 };
484                 conf-clk {
485                         pins = "I2S3_OUT";
486                         drive-strength = <12>;
487                         bias-pull-down;
488                 };
489                 conf-cd {
490                         pins = "TXD3";
491                         bias-pull-up;
492                 };
493         };
494
495         sd0_pins_uhs: sd0-pins-uhs {
496                 mux {
497                         function = "sd";
498                         groups = "sd_0";
499                 };
500
501                 conf-cmd-data {
502                         pins = "I2S2_OUT", "I2S4_IN", "I2S3_IN",
503                                "I2S2_IN","I2S4_OUT";
504                         input-enable;
505                         bias-pull-up;
506                 };
507
508                 conf-clk {
509                         pins = "I2S3_OUT";
510                         bias-pull-down;
511                 };
512         };
513
514         /* Serial NAND is shared pin with SPI-NOR */
515         serial_nand_pins: serial-nand-pins {
516                 mux {
517                         function = "flash";
518                         groups = "snfi";
519                 };
520         };
521
522         spic0_pins: spic0-pins {
523                 mux {
524                         function = "spi";
525                         groups = "spic0_0";
526                 };
527         };
528
529         spic1_pins: spic1-pins {
530                 mux {
531                         function = "spi";
532                         groups = "spic1_0";
533                 };
534         };
535
536         /* SPI-NOR is shared pin with serial NAND */
537         spi_nor_pins: spi-nor-pins {
538                 mux {
539                         function = "flash";
540                         groups = "spi_nor";
541                 };
542         };
543
544         /* serial NAND is shared pin with SPI-NOR */
545         serial_nand_pins: serial-nand-pins {
546                 mux {
547                         function = "flash";
548                         groups = "snfi";
549                 };
550         };
551
552         uart0_pins: uart0-pins {
553                 mux {
554                         function = "uart";
555                         groups = "uart0_0_tx_rx" ;
556                 };
557         };
558
559         uart2_pins: uart2-pins {
560                 mux {
561                         function = "uart";
562                         groups = "uart2_1_tx_rx" ;
563                 };
564         };
565
566         watchdog_pins: watchdog-pins {
567                 mux {
568                         function = "watchdog";
569                         groups = "watchdog";
570                 };
571         };
572 };
573
574 &pwm {
575         pinctrl-names = "default";
576         pinctrl-0 = <&pwm_pins>;
577         status = "okay";
578 };
579
580 &pwrap {
581         pinctrl-names = "default";
582         pinctrl-0 = <&pmic_bus_pins>;
583
584         status = "okay";
585 };
586
587 &sata {
588         status = "disabled";
589 };
590
591 &sata_phy {
592         status = "disabled";
593 };
594
595 &spi0 {
596         pinctrl-names = "default";
597         pinctrl-0 = <&spic0_pins>;
598         status = "okay";
599 };
600
601 &spi1 {
602         pinctrl-names = "default";
603         pinctrl-0 = <&spic1_pins>;
604 };
605
606 &ssusb {
607         vusb33-supply = <&reg_3p3v>;
608         vbus-supply = <&reg_5v>;
609         status = "okay";
610 };
611
612 &u3phy {
613         status = "okay";
614 };
615
616 &uart0 {
617         pinctrl-names = "default";
618         pinctrl-0 = <&uart0_pins>;
619         status = "okay";
620 };
621
622 &uart2 {
623         pinctrl-names = "default";
624         pinctrl-0 = <&uart2_pins>;
625 };
626
627 &watchdog {
628         pinctrl-names = "default";
629         pinctrl-0 = <&watchdog_pins>;
630         status = "okay";
631 };
632
633 &wmac {
634         status = "okay";
635 };