Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm
[platform/kernel/linux-rpi.git] / arch / arm / boot / dts / at91-sama7g5ek.dts
1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 /*
3  *  at91-sama7g5ek.dts - Device Tree file for SAMA7G5-EK board
4  *
5  *  Copyright (c) 2020 Microchip Technology Inc. and its subsidiaries
6  *
7  *  Author: Eugen Hristev <eugen.hristev@microchip.com>
8  *  Author: Claudiu Beznea <claudiu.beznea@microchip.com>
9  *
10  */
11 /dts-v1/;
12 #include "sama7g5-pinfunc.h"
13 #include "sama7g5.dtsi"
14 #include <dt-bindings/mfd/atmel-flexcom.h>
15 #include <dt-bindings/input/input.h>
16
17 / {
18         model = "Microchip SAMA7G5-EK";
19         compatible = "microchip,sama7g5ek", "microchip,sama7g5", "microchip,sama7";
20
21         chosen {
22                 bootargs = "rw root=/dev/mmcblk1p2 rootfstype=ext4 rootwait";
23                 stdout-path = "serial0:115200n8";
24         };
25
26         aliases {
27                 serial0 = &uart3;
28                 serial1 = &uart4;
29                 serial2 = &uart7;
30                 serial3 = &uart0;
31                 i2c0 = &i2c1;
32                 i2c1 = &i2c8;
33                 i2c2 = &i2c9;
34         };
35
36         clocks {
37                 slow_xtal {
38                         clock-frequency = <32768>;
39                 };
40
41                 main_xtal {
42                         clock-frequency = <24000000>;
43                 };
44         };
45
46         gpio_keys {
47                 compatible = "gpio-keys";
48
49                 pinctrl-names = "default";
50                 pinctrl-0 = <&pinctrl_key_gpio_default>;
51
52                 bp1 {
53                         label = "PB_USER";
54                         gpios = <&pioA PIN_PA12 GPIO_ACTIVE_LOW>;
55                         linux,code = <KEY_PROG1>;
56                         wakeup-source;
57                 };
58         };
59
60         leds {
61                 compatible = "gpio-leds";
62                 pinctrl-names = "default";
63                 pinctrl-0 = <&pinctrl_led_gpio_default>;
64                 status = "okay"; /* Conflict with pwm. */
65
66                 red_led {
67                         label = "red";
68                         gpios = <&pioA PIN_PB8 GPIO_ACTIVE_HIGH>;
69                 };
70
71                 green_led {
72                         label = "green";
73                         gpios = <&pioA PIN_PA13 GPIO_ACTIVE_HIGH>;
74                 };
75
76                 blue_led {
77                         label = "blue";
78                         gpios = <&pioA PIN_PD20 GPIO_ACTIVE_HIGH>;
79                         linux,default-trigger = "heartbeat";
80                 };
81         };
82
83         /* 512 M */
84         memory@60000000 {
85                 device_type = "memory";
86                 reg = <0x60000000 0x20000000>;
87         };
88
89         sound: sound {
90                 compatible = "simple-audio-card";
91                 simple-audio-card,name = "sama7g5ek audio";
92                 #address-cells = <1>;
93                 #size-cells = <0>;
94                 simple-audio-card,dai-link@0 {
95                         reg = <0>;
96                         cpu {
97                                 sound-dai = <&spdiftx>;
98                         };
99                         codec {
100                                 sound-dai = <&spdif_out>;
101                         };
102                 };
103                 simple-audio-card,dai-link@1 {
104                         reg = <1>;
105                         cpu {
106                                 sound-dai = <&spdifrx>;
107                         };
108                         codec {
109                                 sound-dai = <&spdif_in>;
110                         };
111                 };
112         };
113
114         spdif_in: spdif-in {
115                 #sound-dai-cells = <0>;
116                 compatible = "linux,spdif-dir";
117         };
118
119         spdif_out: spdif-out {
120                 #sound-dai-cells = <0>;
121                 compatible = "linux,spdif-dit";
122         };
123 };
124
125 &cpu0 {
126         cpu-supply = <&vddcpu>;
127 };
128
129 &dma0 {
130         status = "okay";
131 };
132
133 &dma1 {
134         status = "okay";
135 };
136
137 &dma2 {
138         status = "okay";
139 };
140
141 &flx0 {
142         atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
143         status = "disabled";
144
145         uart0: serial@200 {
146                 pinctrl-names = "default";
147                 pinctrl-0 = <&pinctrl_flx0_default>;
148                 status = "disabled";
149         };
150 };
151
152 &flx1 {
153         atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
154         status = "okay";
155
156         i2c1: i2c@600 {
157                 pinctrl-names = "default";
158                 pinctrl-0 = <&pinctrl_i2c1_default>;
159                 i2c-analog-filter;
160                 i2c-digital-filter;
161                 i2c-digital-filter-width-ns = <35>;
162                 status = "okay";
163
164                 mcp16502@5b {
165                         compatible = "microchip,mcp16502";
166                         reg = <0x5b>;
167                         status = "okay";
168
169                         regulators {
170                                 vdd_3v3: VDD_IO {
171                                         regulator-name = "VDD_IO";
172                                         regulator-min-microvolt = <1200000>;
173                                         regulator-max-microvolt = <3700000>;
174                                         regulator-initial-mode = <2>;
175                                         regulator-allowed-modes = <2>, <4>;
176                                         regulator-always-on;
177
178                                         regulator-state-standby {
179                                                 regulator-on-in-suspend;
180                                                 regulator-mode = <4>;
181                                         };
182
183                                         regulator-state-mem {
184                                                 regulator-off-in-suspend;
185                                                 regulator-mode = <4>;
186                                         };
187                                 };
188
189                                 vddioddr: VDD_DDR {
190                                         regulator-name = "VDD_DDR";
191                                         regulator-min-microvolt = <1300000>;
192                                         regulator-max-microvolt = <1450000>;
193                                         regulator-initial-mode = <2>;
194                                         regulator-allowed-modes = <2>, <4>;
195                                         regulator-always-on;
196
197                                         regulator-state-standby {
198                                                 regulator-on-in-suspend;
199                                                 regulator-suspend-microvolt = <1350000>;
200                                                 regulator-mode = <4>;
201                                         };
202
203                                         regulator-state-mem {
204                                                 regulator-on-in-suspend;
205                                                 regulator-suspend-microvolt = <1350000>;
206                                                 regulator-mode = <4>;
207                                         };
208                                 };
209
210                                 vddcore: VDD_CORE {
211                                         regulator-name = "VDD_CORE";
212                                         regulator-min-microvolt = <1100000>;
213                                         regulator-max-microvolt = <1850000>;
214                                         regulator-initial-mode = <2>;
215                                         regulator-allowed-modes = <2>, <4>;
216                                         regulator-always-on;
217
218                                         regulator-state-standby {
219                                                 regulator-on-in-suspend;
220                                                 regulator-mode = <4>;
221                                         };
222
223                                         regulator-state-mem {
224                                                 regulator-off-in-suspend;
225                                                 regulator-mode = <4>;
226                                         };
227                                 };
228
229                                 vddcpu: VDD_OTHER {
230                                         regulator-name = "VDD_OTHER";
231                                         regulator-min-microvolt = <1125000>;
232                                         regulator-max-microvolt = <1850000>;
233                                         regulator-initial-mode = <2>;
234                                         regulator-allowed-modes = <2>, <4>;
235                                         regulator-ramp-delay = <3125>;
236                                         regulator-always-on;
237
238                                         regulator-state-standby {
239                                                 regulator-on-in-suspend;
240                                                 regulator-mode = <4>;
241                                         };
242
243                                         regulator-state-mem {
244                                                 regulator-off-in-suspend;
245                                                 regulator-mode = <4>;
246                                         };
247                                 };
248
249                                 vldo1: LDO1 {
250                                         regulator-name = "LDO1";
251                                         regulator-min-microvolt = <1200000>;
252                                         regulator-max-microvolt = <3700000>;
253                                         regulator-always-on;
254
255                                         regulator-state-standby {
256                                                 regulator-on-in-suspend;
257                                         };
258
259                                         regulator-state-mem {
260                                                 regulator-off-in-suspend;
261                                         };
262                                 };
263
264                                 vldo2: LDO2 {
265                                         regulator-name = "LDO2";
266                                         regulator-min-microvolt = <1200000>;
267                                         regulator-max-microvolt = <3700000>;
268
269                                         regulator-state-standby {
270                                                 regulator-on-in-suspend;
271                                         };
272
273                                         regulator-state-mem {
274                                                 regulator-off-in-suspend;
275                                         };
276                                 };
277                         };
278                 };
279         };
280 };
281
282 &flx3 {
283         atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
284         status = "okay";
285
286         uart3: serial@200 {
287                 pinctrl-names = "default";
288                 pinctrl-0 = <&pinctrl_flx3_default>;
289                 status = "okay";
290         };
291 };
292
293 &flx4 {
294         atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
295         status = "okay";
296
297         uart4: serial@200 {
298                 pinctrl-names = "default";
299                 pinctrl-0 = <&pinctrl_flx4_default>;
300                 status = "okay";
301         };
302 };
303
304 &flx7 {
305         atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
306         status = "okay";
307
308         uart7: serial@200 {
309                 pinctrl-names = "default";
310                 pinctrl-0 = <&pinctrl_flx7_default>;
311                 status = "okay";
312         };
313 };
314
315 &flx8 {
316         atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
317         status = "okay";
318
319         i2c8: i2c@600 {
320                 pinctrl-names = "default";
321                 pinctrl-0 = <&pinctrl_i2c8_default>;
322                 i2c-analog-filter;
323                 i2c-digital-filter;
324                 i2c-digital-filter-width-ns = <35>;
325                 status = "okay";
326         };
327 };
328
329 &flx9 {
330         atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
331         status = "okay";
332
333         i2c9: i2c@600 {
334                 pinctrl-names = "default";
335                 pinctrl-0 = <&pinctrl_i2c9_default>;
336                 i2c-analog-filter;
337                 i2c-digital-filter;
338                 i2c-digital-filter-width-ns = <35>;
339                 status = "okay";
340         };
341 };
342
343 &flx11 {
344         atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
345         status = "okay";
346
347         spi11: spi@400 {
348                 pinctrl-names = "default";
349                 pinctrl-0 = <&pinctrl_mikrobus1_spi &pinctrl_mikrobus1_spi_cs>;
350                 status = "okay";
351         };
352 };
353
354 &gmac0 {
355         #address-cells = <1>;
356         #size-cells = <0>;
357         pinctrl-names = "default";
358         pinctrl-0 = <&pinctrl_gmac0_default
359                      &pinctrl_gmac0_mdio_default
360                      &pinctrl_gmac0_txck_default
361                      &pinctrl_gmac0_phy_irq>;
362         phy-mode = "rgmii-id";
363         status = "okay";
364
365         ethernet-phy@7 {
366                 reg = <0x7>;
367                 interrupt-parent = <&pioA>;
368                 interrupts = <PIN_PA31 IRQ_TYPE_LEVEL_LOW>;
369         };
370 };
371
372 &gmac1 {
373         #address-cells = <1>;
374         #size-cells = <0>;
375         pinctrl-names = "default";
376         pinctrl-0 = <&pinctrl_gmac1_default
377                      &pinctrl_gmac1_mdio_default
378                      &pinctrl_gmac1_phy_irq>;
379         phy-mode = "rmii";
380         status = "okay";
381
382         ethernet-phy@0 {
383                 reg = <0x0>;
384                 interrupt-parent = <&pioA>;
385                 interrupts = <PIN_PA21 IRQ_TYPE_LEVEL_LOW>;
386         };
387 };
388
389 &i2s0 {
390         pinctrl-names = "default";
391         pinctrl-0 = <&pinctrl_i2s0_default>;
392 };
393
394 &pioA {
395         pinctrl_flx0_default: flx0_default {
396                 pinmux = <PIN_PE3__FLEXCOM0_IO0>,
397                          <PIN_PE4__FLEXCOM0_IO1>,
398                          <PIN_PE6__FLEXCOM0_IO3>,
399                          <PIN_PE7__FLEXCOM0_IO4>;
400                 bias-disable;
401         };
402
403         pinctrl_flx3_default: flx3_default {
404                 pinmux = <PIN_PD16__FLEXCOM3_IO0>,
405                          <PIN_PD17__FLEXCOM3_IO1>;
406                 bias-disable;
407         };
408
409         pinctrl_flx4_default: flx4_default {
410                 pinmux = <PIN_PD18__FLEXCOM4_IO0>,
411                          <PIN_PD19__FLEXCOM4_IO1>;
412                 bias-disable;
413         };
414
415         pinctrl_flx7_default: flx7_default {
416                 pinmux = <PIN_PC23__FLEXCOM7_IO0>,
417                          <PIN_PC24__FLEXCOM7_IO1>;
418                 bias-disable;
419         };
420
421         pinctrl_gmac0_default: gmac0_default {
422                 pinmux = <PIN_PA16__G0_TX0>,
423                          <PIN_PA17__G0_TX1>,
424                          <PIN_PA26__G0_TX2>,
425                          <PIN_PA27__G0_TX3>,
426                          <PIN_PA19__G0_RX0>,
427                          <PIN_PA20__G0_RX1>,
428                          <PIN_PA28__G0_RX2>,
429                          <PIN_PA29__G0_RX3>,
430                          <PIN_PA15__G0_TXEN>,
431                          <PIN_PA30__G0_RXCK>,
432                          <PIN_PA18__G0_RXDV>,
433                          <PIN_PA25__G0_125CK>;
434                 slew-rate = <0>;
435                 bias-disable;
436         };
437
438         pinctrl_gmac0_mdio_default: gmac0_mdio_default {
439                 pinmux = <PIN_PA22__G0_MDC>,
440                          <PIN_PA23__G0_MDIO>;
441                 bias-disable;
442         };
443
444         pinctrl_gmac0_txck_default: gmac0_txck_default {
445                 pinmux = <PIN_PA24__G0_TXCK>;
446                 slew-rate = <0>;
447                 bias-pull-up;
448         };
449
450         pinctrl_gmac0_phy_irq: gmac0_phy_irq {
451                 pinmux = <PIN_PA31__GPIO>;
452                 bias-disable;
453         };
454
455         pinctrl_gmac1_default: gmac1_default {
456                 pinmux = <PIN_PD30__G1_TXCK>,
457                          <PIN_PD22__G1_TX0>,
458                          <PIN_PD23__G1_TX1>,
459                          <PIN_PD21__G1_TXEN>,
460                          <PIN_PD25__G1_RX0>,
461                          <PIN_PD26__G1_RX1>,
462                          <PIN_PD27__G1_RXER>,
463                          <PIN_PD24__G1_RXDV>;
464                 slew-rate = <0>;
465                 bias-disable;
466         };
467
468         pinctrl_gmac1_mdio_default: gmac1_mdio_default {
469                 pinmux = <PIN_PD28__G1_MDC>,
470                          <PIN_PD29__G1_MDIO>;
471                 bias-disable;
472         };
473
474         pinctrl_gmac1_phy_irq: gmac1_phy_irq {
475                 pinmux = <PIN_PA21__GPIO>;
476                 bias-disable;
477         };
478
479         pinctrl_i2c1_default: i2c1_default {
480                 pinmux = <PIN_PC9__FLEXCOM1_IO0>,
481                          <PIN_PC10__FLEXCOM1_IO1>;
482                 bias-disable;
483         };
484
485         pinctrl_i2c8_default: i2c8_default {
486                 pinmux = <PIN_PC14__FLEXCOM8_IO0>,
487                          <PIN_PC13__FLEXCOM8_IO1>;
488                 bias-disable;
489         };
490
491         pinctrl_i2c9_default: i2c9_default {
492                 pinmux = <PIN_PC18__FLEXCOM9_IO0>,
493                          <PIN_PC19__FLEXCOM9_IO1>;
494                 bias-disable;
495         };
496
497         pinctrl_i2s0_default: i2s0_default {
498                 pinmux = <PIN_PB23__I2SMCC0_CK>,
499                          <PIN_PB24__I2SMCC0_WS>,
500                          <PIN_PB25__I2SMCC0_DOUT1>,
501                          <PIN_PB26__I2SMCC0_DOUT0>,
502                          <PIN_PB27__I2SMCC0_MCK>;
503                 bias-disable;
504         };
505
506         pinctrl_key_gpio_default: key_gpio_default {
507                 pinmux = <PIN_PA12__GPIO>;
508                 bias-pull-up;
509         };
510
511         pinctrl_led_gpio_default: led_gpio_default {
512                 pinmux = <PIN_PA13__GPIO>,
513                          <PIN_PB8__GPIO>,
514                          <PIN_PD20__GPIO>;
515                 bias-pull-up;
516         };
517
518         pinctrl_mikrobus1_an_default: mikrobus1_an_default {
519                 pinmux = <PIN_PD0__GPIO>;
520                 bias-disable;
521         };
522
523         pinctrl_mikrobus2_an_default: mikrobus2_an_default {
524                 pinmux = <PIN_PD1__GPIO>;
525                 bias-disable;
526         };
527
528         pinctrl_mikrobus1_pwm2_default: mikrobus1_pwm2_default {
529                 pinmux = <PIN_PA13__PWMH2>;
530                 bias-disable;
531         };
532
533         pinctrl_mikrobus2_pwm3_default: mikrobus2_pwm3_default {
534                 pinmux = <PIN_PD20__PWMH3>;
535                 bias-disable;
536         };
537
538         pinctrl_mikrobus1_spi_cs: mikrobus1_spi_cs {
539                 pinmux = <PIN_PB6__FLEXCOM11_IO3>;
540                 bias-disable;
541         };
542
543         pinctrl_mikrobus1_spi: mikrobus1_spi {
544                 pinmux = <PIN_PB3__FLEXCOM11_IO0>,
545                          <PIN_PB4__FLEXCOM11_IO1>,
546                          <PIN_PB5__FLEXCOM11_IO2>;
547                 bias-disable;
548         };
549
550         pinctrl_sdmmc0_default: sdmmc0_default {
551                 cmd_data {
552                         pinmux = <PIN_PA1__SDMMC0_CMD>,
553                                  <PIN_PA3__SDMMC0_DAT0>,
554                                  <PIN_PA4__SDMMC0_DAT1>,
555                                  <PIN_PA5__SDMMC0_DAT2>,
556                                  <PIN_PA6__SDMMC0_DAT3>,
557                                  <PIN_PA7__SDMMC0_DAT4>,
558                                  <PIN_PA8__SDMMC0_DAT5>,
559                                  <PIN_PA9__SDMMC0_DAT6>,
560                                  <PIN_PA10__SDMMC0_DAT7>;
561                         slew-rate = <0>;
562                         bias-pull-up;
563                 };
564
565                 ck_cd_rstn_vddsel {
566                         pinmux = <PIN_PA0__SDMMC0_CK>,
567                                  <PIN_PA2__SDMMC0_RSTN>,
568                                  <PIN_PA11__SDMMC0_DS>;
569                         slew-rate = <0>;
570                         bias-pull-up;
571                 };
572         };
573
574         pinctrl_sdmmc1_default: sdmmc1_default {
575                 cmd_data {
576                         pinmux = <PIN_PB29__SDMMC1_CMD>,
577                                  <PIN_PB31__SDMMC1_DAT0>,
578                                  <PIN_PC0__SDMMC1_DAT1>,
579                                  <PIN_PC1__SDMMC1_DAT2>,
580                                  <PIN_PC2__SDMMC1_DAT3>;
581                         slew-rate = <0>;
582                         bias-pull-up;
583                 };
584
585                 ck_cd_rstn_vddsel {
586                         pinmux = <PIN_PB30__SDMMC1_CK>,
587                                  <PIN_PB28__SDMMC1_RSTN>,
588                                  <PIN_PC5__SDMMC1_1V8SEL>,
589                                  <PIN_PC4__SDMMC1_CD>;
590                         slew-rate = <0>;
591                         bias-pull-up;
592                 };
593         };
594
595         pinctrl_sdmmc2_default: sdmmc2_default {
596                 cmd_data {
597                         pinmux = <PIN_PD3__SDMMC2_CMD>,
598                                  <PIN_PD5__SDMMC2_DAT0>,
599                                  <PIN_PD6__SDMMC2_DAT1>,
600                                  <PIN_PD7__SDMMC2_DAT2>,
601                                  <PIN_PD8__SDMMC2_DAT3>;
602                         slew-rate = <0>;
603                         bias-pull-up;
604                 };
605
606                 ck {
607                         pinmux = <PIN_PD4__SDMMC2_CK>;
608                         slew-rate = <0>;
609                         bias-pull-up;
610                 };
611         };
612
613         pinctrl_spdifrx_default: spdifrx_default {
614                 pinmux = <PIN_PB0__SPDIF_RX>;
615                 bias-disable;
616         };
617
618         pinctrl_spdiftx_default: spdiftx_default {
619                 pinmux = <PIN_PB1__SPDIF_TX>;
620                 bias-disable;
621         };
622 };
623
624 &pwm {
625         pinctrl-names = "default";
626         pinctrl-0 = <&pinctrl_mikrobus1_pwm2_default &pinctrl_mikrobus2_pwm3_default>;
627         status = "disabled"; /* Conflict with leds. */
628 };
629
630 &rtt {
631         atmel,rtt-rtc-time-reg = <&gpbr 0x0>;
632 };
633
634 &sdmmc0 {
635         bus-width = <8>;
636         non-removable;
637         no-1-8-v;
638         sdhci-caps-mask = <0x0 0x00200000>;
639         pinctrl-names = "default";
640         pinctrl-0 = <&pinctrl_sdmmc0_default>;
641         status = "okay";
642 };
643
644 &sdmmc1 {
645         bus-width = <4>;
646         no-1-8-v;
647         sdhci-caps-mask = <0x0 0x00200000>;
648         pinctrl-names = "default";
649         pinctrl-0 = <&pinctrl_sdmmc1_default>;
650         status = "okay";
651 };
652
653 &sdmmc2 {
654         bus-width = <4>;
655         no-1-8-v;
656         sdhci-caps-mask = <0x0 0x00200000>;
657         pinctrl-names = "default";
658         pinctrl-0 = <&pinctrl_sdmmc2_default>;
659 };
660
661 &shdwc {
662         atmel,shdwc-debouncer = <976>;
663         status = "okay";
664
665         input@0 {
666                 reg = <0>;
667         };
668 };
669
670 &spdifrx {
671         pinctrl-names = "default";
672         pinctrl-0 = <&pinctrl_spdifrx_default>;
673         status = "okay";
674 };
675
676 &spdiftx {
677         pinctrl-names = "default";
678         pinctrl-0 = <&pinctrl_spdiftx_default>;
679         status = "okay";
680 };
681
682 &trng {
683         status = "okay";
684 };
685
686 &vddout25 {
687         vin-supply = <&vdd_3v3>;
688         status = "okay";
689 };