Loading...
1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * at91-sama5d2_icp.dts - Device Tree file for SAMA5D2-ICP board
4 *
5 * Copyright (C) 2019 Microchip Technology Inc. and its subsidiaries
6 *
7 * Author: Radu Pirea & Razvan Stefanescu,
8 * Codrin Ciubotariu <codrin.ciubotariu@microchip.com>,
9 * Cristian Birsan <cristian.birsan@microchip.com>
10 */
11/dts-v1/;
12#include "sama5d2.dtsi"
13#include "sama5d2-pinfunc.h"
14#include <dt-bindings/gpio/gpio.h>
15#include <dt-bindings/input/input.h>
16#include <dt-bindings/mfd/atmel-flexcom.h>
17
18/ {
19 model = "Microchip SAMA5D2-ICP";
20 compatible = "microchip,sama5d2-icp", "atmel,sama5d27", "atmel,sama5d2", "atmel,sama5";
21
22 aliases {
23 serial0 = &uart0; /* debug uart0 + mikro BUS 1 */
24 serial1 = &uart1; /* mikro BUS 3 */
25 serial3 = &uart3; /* mikro BUS 2 */
26 serial5 = &uart7; /* flx2 */
27 i2c0 = &i2c0;
28 i2c1 = &i2c1;
29 };
30
31 chosen {
32 stdout-path = "serial0:115200n8";
33 };
34
35 clocks {
36 slow_xtal {
37 clock-frequency = <32768>;
38 };
39
40 main_xtal {
41 clock-frequency = <12000000>;
42 };
43 };
44
45 gpio-keys {
46 compatible = "gpio-keys";
47
48 pinctrl-names = "default";
49 pinctrl-0 = <&pinctrl_key_gpio_default>;
50
51 button-1 {
52 label = "USER_PB1";
53 gpios = <&pioA PIN_PD0 GPIO_ACTIVE_LOW>;
54 linux,code = <KEY_PROG1>;
55 wakeup-source;
56 };
57 };
58
59 leds {
60 compatible = "gpio-leds";
61 pinctrl-names = "default";
62 pinctrl-0 = <&pinctrl_led_gpio_default>;
63 status = "okay"; /* conflict with pwm0 */
64
65 red {
66 label = "red";
67 gpios = <&pioA PIN_PB0 GPIO_ACTIVE_HIGH>;
68 };
69
70 green {
71 label = "green";
72 gpios = <&pioA PIN_PB1 GPIO_ACTIVE_HIGH>;
73 };
74
75 blue {
76 label = "blue";
77 gpios = <&pioA PIN_PA31 GPIO_ACTIVE_HIGH>;
78 linux,default-trigger = "heartbeat";
79 };
80 };
81};
82
83&adc {
84 vddana-supply = <&vdd_io_reg>;
85 vref-supply = <&vdd_io_reg>;
86 pinctrl-names = "default";
87 pinctrl-0 = <&pinctrl_adc_default &pinctrl_adtrg_default>;
88 status = "okay";
89};
90
91&can0 {
92 pinctrl-names = "default";
93 pinctrl-0 = <&pinctrl_can0_default>;
94 status = "okay";
95};
96
97&can1 {
98 pinctrl-names = "default";
99 pinctrl-0 = <&pinctrl_can1_default>;
100 status = "okay";
101};
102
103&flx0 { /* mikrobus2 spi */
104 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
105 status = "okay";
106
107 spi2: spi@400 {
108 dmas = <0>, <0>;
109 cs-gpios = <&pioA PIN_PC0 GPIO_ACTIVE_LOW>;
110 pinctrl-names = "default";
111 pinctrl-0 = <&pinctrl_mikrobus2_spi &pinctrl_ksz_spi_cs>;
112 status = "okay";
113 #address-cells = <1>;
114 #size-cells = <0>;
115
116 switch0: ksz8563@0 {
117 compatible = "microchip,ksz8563";
118 reg = <0>;
119 reset-gpios = <&pioA PIN_PD4 GPIO_ACTIVE_LOW>;
120
121 spi-max-frequency = <500000>;
122 spi-cpha;
123 spi-cpol;
124
125 ports {
126 #address-cells = <1>;
127 #size-cells = <0>;
128 port@0 {
129 reg = <0>;
130 label = "lan1";
131 };
132
133 port@1 {
134 reg = <1>;
135 label = "lan2";
136 };
137
138 port@2 {
139 reg = <2>;
140 label = "cpu";
141 ethernet = <&macb0>;
142 phy-mode = "mii";
143 fixed-link {
144 speed = <100>;
145 full-duplex;
146 };
147 };
148 };
149 };
150 };
151};
152
153&flx2 {
154 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
155 status = "okay";
156
157 uart7: serial@200 {
158 pinctrl-0 = <&pinctrl_flx2_default>;
159 pinctrl-names = "default";
160 atmel,use-dma-rx;
161 atmel,use-dma-tx;
162 status = "okay"; /* Conflict w/ qspi1. */
163 };
164};
165
166&flx3 { /* mikrobus1 spi */
167 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
168 status = "okay";
169
170 spi5: spi@400 {
171 dmas = <0>, <0>;
172 pinctrl-names = "default";
173 pinctrl-0 = <&pinctrl_mikrobus1_spi &pinctrl_mikrobus1_spi_cs>;
174 status = "okay";
175 };
176};
177
178&flx4 {
179 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
180 status = "okay";
181
182 i2c6: i2c@600 {
183 dmas = <0>, <0>;
184 pinctrl-names = "default";
185 pinctrl-0 = <&pinctrl_flx4_default>;
186 i2c-digital-filter;
187 i2c-digital-filter-width-ns = <35>;
188 status = "okay";
189
190 mcp16502@5b {
191 compatible = "microchip,mcp16502";
192 reg = <0x5b>;
193 status = "okay";
194 lpm-gpios = <&pioBU 7 GPIO_ACTIVE_LOW>;
195
196 regulators {
197 vdd_io_reg: VDD_IO {
198 regulator-name = "VDD_IO";
199 regulator-min-microvolt = <3300000>;
200 regulator-max-microvolt = <3300000>;
201 regulator-initial-mode = <2>;
202 regulator-allowed-modes = <2>, <4>;
203 regulator-always-on;
204
205 regulator-state-standby {
206 regulator-on-in-suspend;
207 regulator-mode = <4>;
208 };
209
210 regulator-state-mem {
211 regulator-off-in-suspend;
212 regulator-mode = <4>;
213 };
214 };
215
216 VDD_DDR {
217 regulator-name = "VDD_DDR";
218 regulator-min-microvolt = <1350000>;
219 regulator-max-microvolt = <1350000>;
220 regulator-initial-mode = <2>;
221 regulator-allowed-modes = <2>, <4>;
222 regulator-always-on;
223
224 regulator-state-standby {
225 regulator-on-in-suspend;
226 regulator-mode = <4>;
227 };
228
229 regulator-state-mem {
230 regulator-on-in-suspend;
231 regulator-mode = <4>;
232 };
233 };
234
235 VDD_CORE {
236 regulator-name = "VDD_CORE";
237 regulator-min-microvolt = <1250000>;
238 regulator-max-microvolt = <1250000>;
239 regulator-initial-mode = <2>;
240 regulator-allowed-modes = <2>, <4>;
241 regulator-always-on;
242
243 regulator-state-standby {
244 regulator-on-in-suspend;
245 regulator-mode = <4>;
246 };
247
248 regulator-state-mem {
249 regulator-off-in-suspend;
250 regulator-mode = <4>;
251 };
252 };
253
254 VDD_OTHER {
255 regulator-name = "VDD_OTHER";
256 regulator-min-microvolt = <600000>;
257 regulator-max-microvolt = <1850000>;
258 regulator-initial-mode = <2>;
259 regulator-allowed-modes = <2>, <4>;
260
261 regulator-state-standby {
262 regulator-on-in-suspend;
263 regulator-mode = <4>;
264 };
265
266 regulator-state-mem {
267 regulator-off-in-suspend;
268 regulator-mode = <4>;
269 };
270 };
271
272 LDO1 {
273 regulator-name = "LDO1";
274 regulator-min-microvolt = <2500000>;
275 regulator-max-microvolt = <2500000>;
276 regulator-always-on;
277
278 regulator-state-standby {
279 regulator-on-in-suspend;
280 };
281
282 regulator-state-mem {
283 regulator-off-in-suspend;
284 };
285 };
286
287 LDO2 {
288 regulator-name = "LDO2";
289 regulator-min-microvolt = <3300000>;
290 regulator-max-microvolt = <3300000>;
291 regulator-always-on;
292
293 regulator-state-standby {
294 regulator-on-in-suspend;
295 };
296
297 regulator-state-mem {
298 regulator-off-in-suspend;
299 };
300 };
301
302 };
303 };
304 };
305};
306
307&i2c0 { /* mikrobus i2c */
308 pinctrl-names = "default", "gpio";
309 pinctrl-0 = <&pinctrl_mikrobus_i2c>;
310 pinctrl-1 = <&pinctrl_i2c0_gpio>;
311 sda-gpios = <&pioA PIN_PD21 GPIO_ACTIVE_HIGH>;
312 scl-gpios = <&pioA PIN_PD22 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
313 i2c-digital-filter;
314 i2c-digital-filter-width-ns = <35>;
315 status = "okay";
316};
317
318&i2c1 {
319 dmas = <0>, <0>;
320 pinctrl-names = "default", "gpio";
321 pinctrl-0 = <&pinctrl_i2c1_default>;
322 pinctrl-1 = <&pinctrl_i2c1_gpio>;
323 sda-gpios = <&pioA PIN_PD19 GPIO_ACTIVE_HIGH>;
324 scl-gpios = <&pioA PIN_PD20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
325 i2c-digital-filter;
326 i2c-digital-filter-width-ns = <35>;
327 status = "okay";
328
329 eeprom@50 {
330 compatible = "atmel,24c02";
331 reg = <0x50>;
332 pagesize = <16>;
333 status = "okay";
334 };
335
336 eeprom@52 {
337 compatible = "atmel,24c02";
338 reg = <0x52>;
339 pagesize = <16>;
340 status = "disabled";
341 };
342
343 eeprom@53 {
344 compatible = "atmel,24c02";
345 reg = <0x53>;
346 pagesize = <16>;
347 status = "disabled";
348 };
349};
350
351&macb0 {
352 pinctrl-names = "default";
353 pinctrl-0 = <&pinctrl_macb0_default &pinctrl_macb0_phy_irq &pinctrl_macb0_rst>;
354 phy-mode = "mii";
355 status = "okay";
356
357 fixed-link {
358 speed = <100>;
359 full-duplex;
360 };
361};
362
363&pioA {
364 pinctrl_adc_default: adc_default {
365 pinmux = <PIN_PD24__GPIO>,
366 <PIN_PD25__GPIO>,
367 <PIN_PD26__GPIO>;
368 bias-disable;
369 };
370
371 /*
372 * The ADTRG pin can work on any edge type.
373 * In here it's being pulled up, so need to
374 * connect it to ground to get an edge e.g.
375 * Trigger can be configured on falling, rise
376 * or any edge, and the pull-up can be changed
377 * to pull-down or left floating according to
378 * needs.
379 */
380 pinctrl_adtrg_default: adtrg_default {
381 pinmux = <PIN_PD31__ADTRG>;
382 bias-pull-up;
383 };
384
385 pinctrl_flx4_default: flx4_default {
386 pinmux = <PIN_PC28__FLEXCOM4_IO0>,
387 <PIN_PC29__FLEXCOM4_IO1>;
388 bias-disable;
389 };
390
391 pinctrl_can0_default: can0_default {
392 pinmux = <PIN_PC10__CANTX0>,
393 <PIN_PC11__CANRX0>;
394 bias-disable;
395 };
396
397 pinctrl_can1_default: can1_default {
398 pinmux = <PIN_PC26__CANTX1>,
399 <PIN_PC27__CANRX1>;
400 bias-disable;
401 };
402
403 pinctrl_i2c1_default: i2c1_default {
404 pinmux = <PIN_PD19__TWD1>,
405 <PIN_PD20__TWCK1>;
406 bias-disable;
407 };
408
409 pinctrl_i2c1_gpio: i2c1_gpio {
410 pinmux = <PIN_PD19__GPIO>,
411 <PIN_PD20__GPIO>;
412 bias-disable;
413 };
414
415 pinctrl_key_gpio_default: key_gpio_default {
416 pinmux = <PIN_PD0__GPIO>;
417 bias-pull-up;
418 };
419
420 pinctrl_led_gpio_default: led_gpio_default {
421 pinmux = <PIN_PB0__GPIO>,
422 <PIN_PB1__GPIO>,
423 <PIN_PA31__GPIO>;
424 bias-pull-up;
425 };
426
427 pinctrl_qspi1_default: qspi1_default {
428 pinmux = <PIN_PA6__QSPI1_SCK>,
429 <PIN_PA7__QSPI1_IO0>,
430 <PIN_PA8__QSPI1_IO1>,
431 <PIN_PA9__QSPI1_IO2>,
432 <PIN_PA10__QSPI1_IO3>,
433 <PIN_PA11__QSPI1_CS>;
434 bias-disable;
435 };
436
437 pinctrl_sdmmc0_default: sdmmc0_default {
438 cmd_data {
439 pinmux = <PIN_PA1__SDMMC0_CMD>,
440 <PIN_PA2__SDMMC0_DAT0>,
441 <PIN_PA3__SDMMC0_DAT1>,
442 <PIN_PA4__SDMMC0_DAT2>,
443 <PIN_PA5__SDMMC0_DAT3>;
444 bias-disable;
445 };
446
447 ck_cd {
448 pinmux = <PIN_PA0__SDMMC0_CK>,
449 <PIN_PA13__SDMMC0_CD>;
450 bias-disable;
451 };
452 };
453
454 pinctrl_sdmmc1_default: sdmmc1_default {
455 cmd_data {
456 pinmux = <PIN_PA18__SDMMC1_DAT0>,
457 <PIN_PA19__SDMMC1_DAT1>,
458 <PIN_PA20__SDMMC1_DAT2>,
459 <PIN_PA21__SDMMC1_DAT3>;
460 bias-disable;
461 };
462
463 ck_cd {
464 pinmux = <PIN_PA22__SDMMC1_CK>,
465 <PIN_PA28__SDMMC1_CMD>;
466 bias-disable;
467 };
468 };
469
470 pinctrl_mikrobus_i2c: mikrobus_i2c {
471 pinmux = <PIN_PD22__TWCK0>,
472 <PIN_PD21__TWD0>;
473 bias-disable;
474 };
475
476 pinctrl_i2c0_gpio: i2c0_gpio {
477 pinmux = <PIN_PD21__GPIO>,
478 <PIN_PD22__GPIO>;
479 bias-disable;
480 };
481
482 pinctrl_mikrobus1_an: mikrobus1_an {
483 pinmux = <PIN_PD26__GPIO>;
484 bias-disable;
485 };
486
487 pinctrl_mikrobus1_rst: mikrobus1_rst {
488 pinmux = <PIN_PC5__GPIO>;
489 bias-disable;
490 };
491
492 pinctrl_mikrobus1_spi_cs: mikrobus1_spi_cs {
493 pinmux = <PIN_PC21__FLEXCOM3_IO3>;
494 bias-disable;
495 };
496
497 pinctrl_mikrobus1_spi: mikrobus1_spi {
498 pinmux = <PIN_PC20__FLEXCOM3_IO0>,
499 <PIN_PC19__FLEXCOM3_IO1>,
500 <PIN_PC18__FLEXCOM3_IO2>;
501 bias-disable;
502 };
503
504 pinctrl_mikrobus1_pwm: mikrobus1_pwm {
505 pinmux = <PIN_PC4__TIOB1>;
506 bias-disable;
507 };
508
509 pinctrl_mikrobus1_int: mikrobus1_int {
510 pinmux = <PIN_PC3__GPIO>;
511 bias-disable;
512 };
513
514 pinctrl_mikrobus1_uart: mikrobus1_uart {
515 pinmux = <PIN_PB26__URXD0>,
516 <PIN_PB27__UTXD0>;
517 bias-disable;
518 };
519
520 pinctrl_mikrobus2_an: mikrobus2_an {
521 pinmux = <PIN_PD25__GPIO>;
522 bias-disable;
523 };
524
525 pinctrl_mikrobus2_rst: mikrobus2_rst {
526 pinmux = <PIN_PB24__GPIO>;
527 bias-disable;
528 };
529
530 pinctrl_mikrobus2_spi_cs: mikrobus2_spi_cs {
531 pinmux = <PIN_PB31__FLEXCOM0_IO3>;
532 bias-disable;
533 };
534
535 pinctrl_mikrobus2_spi: mikrobus2_spi {
536 pinmux = <PIN_PB28__FLEXCOM0_IO0>,
537 <PIN_PB29__FLEXCOM0_IO1>,
538 <PIN_PB30__FLEXCOM0_IO2>;
539 bias-disable;
540 };
541
542 pinctrl_ksz_spi_cs: ksz_spi_cs {
543 pinmux = <PIN_PC0__GPIO>;
544 bias-disable;
545 };
546
547 pinctrl_mikrobus2_pwm: mikrobus2_pwm {
548 pinmux = <PIN_PB23__TIOB2>;
549 bias-disable;
550 };
551
552 pinctrl_mikrobus2_int: mikrobus2_int {
553 pinmux = <PIN_PB22__GPIO>;
554 bias-disable;
555 };
556
557 pinctrl_mikrobus2_uart: mikrobus2_uart {
558 pinmux = <PIN_PC12__URXD3>,
559 <PIN_PC13__UTXD3>;
560 bias-disable;
561 };
562
563 pinctrl_mikrobus3_an: mikrobus3_an {
564 pinmux = <PIN_PD24__GPIO>;
565 bias-disable;
566 };
567
568 pinctrl_mikrobus3_rst: mikrobus3_rst {
569 pinmux = <PIN_PB21__GPIO>;
570 bias-disable;
571 };
572
573 pinctrl_mikrobus3_spi_cs: mikrobus3_spi_cs {
574 pinmux = <PIN_PA17__SPI0_NPCS0>;
575 bias-disable;
576 };
577
578 pinctrl_mikrobus3_spi: mikrobus3_spi {
579 pinmux = <PIN_PA14__SPI0_SPCK>,
580 <PIN_PA16__SPI0_MISO>,
581 <PIN_PA15__SPI0_MOSI>;
582 bias-disable;
583 };
584
585 pinctrl_mikrobus3_pwm: mikrobus3_pwm {
586 pinmux = <PIN_PB20__TIOB3>;
587 bias-disable;
588 };
589
590 pinctrl_mikrobus3_int: mikrobus3_int {
591 pinmux = <PIN_PB18__GPIO>;
592 bias-disable;
593 };
594
595 pinctrl_mikrobus3_uart: mikrobus3_uart {
596 pinmux = <PIN_PC7__URXD1>,
597 <PIN_PC8__UTXD1>;
598 bias-disable;
599 };
600
601 pinctrl_usb_default: usb_default {
602 pinmux = <PIN_PC17__GPIO>;
603 bias-disable;
604 };
605
606 pinctrl_usba_vbus: usba_vbus {
607 pinmux = <PIN_PD23__GPIO>;
608 bias-disable;
609 };
610
611 pinctrl_pwm0_pwm2_default: pwm0_pwm2_default {
612 pinmux = <PIN_PB5__PWMH2>,
613 <PIN_PB6__PWML2>;
614 bias-pull-up;
615 };
616
617 pinctrl_macb0_default: macb0_default {
618 pinmux = <PIN_PD1__GRXCK>,
619 <PIN_PD2__GTXER>,
620 <PIN_PD5__GRX2>,
621 <PIN_PD6__GRX3>,
622 <PIN_PD7__GTX2>,
623 <PIN_PD8__GTX3>,
624 <PIN_PD9__GTXCK>,
625 <PIN_PD10__GTXEN>,
626 <PIN_PD11__GRXDV>,
627 <PIN_PD12__GRXER>,
628 <PIN_PD13__GRX0>,
629 <PIN_PD14__GRX1>,
630 <PIN_PD15__GTX0>,
631 <PIN_PD16__GTX1>,
632 <PIN_PD17__GMDC>,
633 <PIN_PD18__GMDIO>;
634 bias-disable;
635 };
636
637 pinctrl_macb0_phy_irq: macb0_phy_irq {
638 pinmux = <PIN_PD3__GPIO>;
639 bias-disable;
640 };
641
642 pinctrl_macb0_rst: macb0_sw_rst {
643 pinmux = <PIN_PD4__GPIO>;
644 bias-disable;
645 };
646
647 pinctrl_flx2_default: flx2_default {
648 pinmux = <PIN_PA6__FLEXCOM2_IO0>,
649 <PIN_PA7__FLEXCOM2_IO1>,
650 <PIN_PA9__FLEXCOM2_IO3>,
651 <PIN_PA10__FLEXCOM2_IO4>;
652 bias-disable;
653 };
654};
655
656&pwm0 {
657 pinctrl-names = "default";
658 pinctrl-0 = <&pinctrl_pwm0_pwm2_default>;
659 status = "disabled"; /* conflict with leds, HSIC */
660};
661
662&qspi1 {
663 pinctrl-names = "default";
664 pinctrl-0 = <&pinctrl_qspi1_default>;
665 status = "disabled"; /* Conflict with wilc_pwrseq, flx2 */
666
667 flash@0 {
668 #address-cells = <1>;
669 #size-cells = <1>;
670 compatible = "jedec,spi-nor";
671 reg = <0>;
672 spi-max-frequency = <80000000>;
673 spi-tx-bus-width = <4>;
674 spi-rx-bus-width = <4>;
675 m25p,fast-read;
676
677 at91bootstrap@0 {
678 label = "qspi: at91bootstrap";
679 reg = <0x00000000 0x00040000>;
680 };
681
682 bootloader@40000 {
683 label = "qspi: bootloader";
684 reg = <0x00040000 0x000c0000>;
685 };
686
687 bootloaderenvred@100000 {
688 label = "qspi: bootloader env redundant";
689 reg = <0x00100000 0x00040000>;
690 };
691
692 bootloaderenv@140000 {
693 label = "qspi: bootloader env";
694 reg = <0x00140000 0x00040000>;
695 };
696
697 dtb@180000 {
698 label = "qspi: device tree";
699 reg = <0x00180000 0x00080000>;
700 };
701
702 kernel@200000 {
703 label = "qspi: kernel";
704 reg = <0x00200000 0x00600000>;
705 };
706 };
707};
708
709&sdmmc0 {
710 no-1-8-v;
711 bus-width = <4>;
712 pinctrl-names = "default";
713 pinctrl-0 = <&pinctrl_sdmmc0_default>;
714 status = "okay";
715};
716
717&shutdown_controller {
718 debounce-delay-us = <976>;
719 atmel,wakeup-rtc-timer;
720
721 input@0 {
722 reg = <0>;
723 };
724};
725
726&spi0 { /* mikrobus3 spi */
727 pinctrl-names = "default";
728 pinctrl-0 = <&pinctrl_mikrobus3_spi &pinctrl_mikrobus3_spi_cs>;
729 status = "okay";
730};
731
732&tcb0 {
733 timer0: timer@0 {
734 compatible = "atmel,tcb-timer";
735 reg = <0>;
736 };
737
738 timer1: timer@1 {
739 compatible = "atmel,tcb-timer";
740 reg = <1>;
741 };
742};
743
744&uart0 {
745 pinctrl-names = "default";
746 pinctrl-0 = <&pinctrl_mikrobus1_uart>;
747 atmel,use-dma-rx;
748 atmel,use-dma-tx;
749 status = "okay";
750};
751
752&uart1 {
753 pinctrl-names = "default";
754 pinctrl-0 = <&pinctrl_mikrobus3_uart>;
755 atmel,use-dma-rx;
756 atmel,use-dma-tx;
757 status = "okay";
758};
759
760&uart3 {
761 pinctrl-names = "default";
762 pinctrl-0 = <&pinctrl_mikrobus2_uart>;
763 atmel,use-dma-rx;
764 atmel,use-dma-tx;
765 status = "okay";
766};
767
768&usb0 {
769 atmel,vbus-gpio = <&pioA PIN_PD23 GPIO_ACTIVE_HIGH>;
770 pinctrl-names = "default";
771 pinctrl-0 = <&pinctrl_usba_vbus>;
772 status = "okay";
773};
774
775&usb1 {
776 num-ports = <3>;
777 pinctrl-names = "default";
778 pinctrl-0 = <&pinctrl_usb_default>;
779 status = "okay";
780};
781
782&usb2 {
783 phy_type = "hsic";
784 status = "okay";
785};
786
787&watchdog {
788 status = "okay";
789};
1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * at91-sama5d2_icp.dts - Device Tree file for SAMA5D2-ICP board
4 *
5 * Copyright (C) 2019 Microchip Technology Inc. and its subsidiaries
6 *
7 * Author: Radu Pirea & Razvan Stefanescu,
8 * Codrin Ciubotariu <codrin.ciubotariu@microchip.com>,
9 * Cristian Birsan <cristian.birsan@microchip.com>
10 */
11/dts-v1/;
12#include "sama5d2.dtsi"
13#include "sama5d2-pinfunc.h"
14#include <dt-bindings/gpio/gpio.h>
15#include <dt-bindings/input/input.h>
16#include <dt-bindings/mfd/atmel-flexcom.h>
17
18/ {
19 model = "Microchip SAMA5D2-ICP";
20 compatible = "microchip,sama5d2-icp", "atmel,sama5d27", "atmel,sama5d2", "atmel,sama5";
21
22 aliases {
23 serial0 = &uart0; /* debug uart0 + mikro BUS 1 */
24 serial1 = &uart1; /* mikro BUS 3 */
25 serial3 = &uart3; /* mikro BUS 2 */
26 serial5 = &uart7; /* flx2 */
27 i2c0 = &i2c0;
28 i2c1 = &i2c1;
29 };
30
31 chosen {
32 stdout-path = "serial0:115200n8";
33 };
34
35 clocks {
36 slow_xtal {
37 clock-frequency = <32768>;
38 };
39
40 main_xtal {
41 clock-frequency = <12000000>;
42 };
43 };
44
45 gpio_keys {
46 compatible = "gpio-keys";
47
48 pinctrl-names = "default";
49 pinctrl-0 = <&pinctrl_key_gpio_default>;
50 status = "okay";
51
52 sw4 {
53 label = "USER_PB1";
54 gpios = <&pioA PIN_PD0 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 pwm0 */
65
66 red {
67 label = "red";
68 gpios = <&pioA PIN_PB0 GPIO_ACTIVE_HIGH>;
69 };
70
71 green {
72 label = "green";
73 gpios = <&pioA PIN_PB1 GPIO_ACTIVE_HIGH>;
74 };
75
76 blue {
77 label = "blue";
78 gpios = <&pioA PIN_PA31 GPIO_ACTIVE_HIGH>;
79 linux,default-trigger = "heartbeat";
80 };
81 };
82};
83
84&adc {
85 vddana-supply = <&vdd_io_reg>;
86 vref-supply = <&vdd_io_reg>;
87 pinctrl-names = "default";
88 pinctrl-0 = <&pinctrl_adc_default &pinctrl_adtrg_default>;
89 status = "okay";
90};
91
92&can0 {
93 pinctrl-names = "default";
94 pinctrl-0 = <&pinctrl_can0_default>;
95 status = "okay";
96};
97
98&can1 {
99 pinctrl-names = "default";
100 pinctrl-0 = <&pinctrl_can1_default>;
101 status = "okay";
102};
103
104&flx0 { /* mikrobus2 spi */
105 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
106 status = "okay";
107
108 spi2: spi@400 {
109 dmas = <0>, <0>;
110 cs-gpios = <&pioA PIN_PC0 GPIO_ACTIVE_LOW>;
111 pinctrl-names = "default";
112 pinctrl-0 = <&pinctrl_mikrobus2_spi &pinctrl_ksz_spi_cs>;
113 status = "okay";
114 #address-cells = <1>;
115 #size-cells = <0>;
116
117 switch0: ksz8563@0 {
118 compatible = "microchip,ksz8563";
119 reg = <0>;
120 reset-gpios = <&pioA PIN_PD4 GPIO_ACTIVE_LOW>;
121
122 spi-max-frequency = <500000>;
123 spi-cpha;
124 spi-cpol;
125
126 ports {
127 #address-cells = <1>;
128 #size-cells = <0>;
129 port@0 {
130 reg = <0>;
131 label = "lan1";
132 };
133
134 port@1 {
135 reg = <1>;
136 label = "lan2";
137 };
138
139 port@2 {
140 reg = <2>;
141 label = "cpu";
142 ethernet = <&macb0>;
143 phy-mode = "mii";
144 fixed-link {
145 speed = <100>;
146 full-duplex;
147 };
148 };
149 };
150 };
151 };
152};
153
154&flx2 {
155 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
156 status = "okay";
157
158 uart7: serial@200 {
159 pinctrl-0 = <&pinctrl_flx2_default>;
160 pinctrl-names = "default";
161 atmel,use-dma-rx;
162 atmel,use-dma-tx;
163 status = "okay"; /* Conflict w/ qspi1. */
164 };
165};
166
167&flx3 { /* mikrobus1 spi */
168 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
169 status = "okay";
170
171 spi5: spi@400 {
172 dmas = <0>, <0>;
173 pinctrl-names = "default";
174 pinctrl-0 = <&pinctrl_mikrobus1_spi &pinctrl_mikrobus1_spi_cs>;
175 status = "okay";
176 };
177};
178
179&flx4 {
180 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
181 status = "okay";
182
183 i2c6: i2c@600 {
184 dmas = <0>, <0>;
185 pinctrl-names = "default";
186 pinctrl-0 = <&pinctrl_flx4_default>;
187 status = "okay";
188
189 mcp16502@5b {
190 compatible = "microchip,mcp16502";
191 reg = <0x5b>;
192 status = "okay";
193 lpm-gpios = <&pioBU 7 GPIO_ACTIVE_LOW>;
194
195 regulators {
196 vdd_io_reg: VDD_IO {
197 regulator-name = "VDD_IO";
198 regulator-min-microvolt = <1200000>;
199 regulator-max-microvolt = <3700000>;
200 regulator-initial-mode = <2>;
201 regulator-allowed-modes = <2>, <4>;
202 regulator-always-on;
203
204 regulator-state-standby {
205 regulator-on-in-suspend;
206 regulator-mode = <4>;
207 };
208
209 regulator-state-mem {
210 regulator-off-in-suspend;
211 regulator-mode = <4>;
212 };
213 };
214
215 VDD_DDR {
216 regulator-name = "VDD_DDR";
217 regulator-min-microvolt = <600000>;
218 regulator-max-microvolt = <1850000>;
219 regulator-initial-mode = <2>;
220 regulator-allowed-modes = <2>, <4>;
221 regulator-always-on;
222
223 regulator-state-standby {
224 regulator-on-in-suspend;
225 regulator-mode = <4>;
226 };
227
228 regulator-state-mem {
229 regulator-on-in-suspend;
230 regulator-mode = <4>;
231 };
232 };
233
234 VDD_CORE {
235 regulator-name = "VDD_CORE";
236 regulator-min-microvolt = <600000>;
237 regulator-max-microvolt = <1850000>;
238 regulator-initial-mode = <2>;
239 regulator-allowed-modes = <2>, <4>;
240 regulator-always-on;
241
242 regulator-state-standby {
243 regulator-on-in-suspend;
244 regulator-mode = <4>;
245 };
246
247 regulator-state-mem {
248 regulator-off-in-suspend;
249 regulator-mode = <4>;
250 };
251 };
252
253 VDD_OTHER {
254 regulator-name = "VDD_OTHER";
255 regulator-min-microvolt = <600000>;
256 regulator-max-microvolt = <1850000>;
257 regulator-initial-mode = <2>;
258 regulator-allowed-modes = <2>, <4>;
259 regulator-always-on;
260
261 regulator-state-standby {
262 regulator-on-in-suspend;
263 regulator-mode = <4>;
264 };
265
266 regulator-state-mem {
267 regulator-off-in-suspend;
268 regulator-mode = <4>;
269 };
270 };
271
272 LDO1 {
273 regulator-name = "LDO1";
274 regulator-min-microvolt = <1200000>;
275 regulator-max-microvolt = <3700000>;
276 regulator-always-on;
277
278 regulator-state-standby {
279 regulator-on-in-suspend;
280 };
281
282 regulator-state-mem {
283 regulator-off-in-suspend;
284 };
285 };
286
287 LDO2 {
288 regulator-name = "LDO2";
289 regulator-min-microvolt = <1200000>;
290 regulator-max-microvolt = <3700000>;
291 regulator-always-on;
292
293 regulator-state-standby {
294 regulator-on-in-suspend;
295 };
296
297 regulator-state-mem {
298 regulator-off-in-suspend;
299 };
300 };
301
302 };
303 };
304 };
305};
306
307&i2c0 { /* mikrobus i2c */
308 pinctrl-names = "default";
309 pinctrl-0 = <&pinctrl_mikrobus_i2c>;
310 status = "okay";
311};
312
313&i2c1 {
314 dmas = <0>, <0>;
315 pinctrl-names = "default";
316 pinctrl-0 = <&pinctrl_i2c1_default>;
317 status = "okay";
318
319 eeprom@50 {
320 compatible = "atmel,24c32";
321 reg = <0x50>;
322 pagesize = <16>;
323 status = "okay";
324 };
325
326 eeprom@52 {
327 compatible = "atmel,24c32";
328 reg = <0x52>;
329 pagesize = <16>;
330 status = "disabled";
331 };
332
333 eeprom@53 {
334 compatible = "atmel,24c32";
335 reg = <0x53>;
336 pagesize = <16>;
337 status = "disabled";
338 };
339};
340
341&macb0 {
342 pinctrl-names = "default";
343 pinctrl-0 = <&pinctrl_macb0_default &pinctrl_macb0_phy_irq &pinctrl_macb0_rst>;
344 phy-mode = "mii";
345 status = "okay";
346
347 fixed-link {
348 speed = <100>;
349 full-duplex;
350 };
351};
352
353&pioA {
354 pinctrl_adc_default: adc_default {
355 pinmux = <PIN_PD24__GPIO>,
356 <PIN_PD25__GPIO>,
357 <PIN_PD26__GPIO>;
358 bias-disable;
359 };
360
361 /*
362 * The ADTRG pin can work on any edge type.
363 * In here it's being pulled up, so need to
364 * connect it to ground to get an edge e.g.
365 * Trigger can be configured on falling, rise
366 * or any edge, and the pull-up can be changed
367 * to pull-down or left floating according to
368 * needs.
369 */
370 pinctrl_adtrg_default: adtrg_default {
371 pinmux = <PIN_PD31__ADTRG>;
372 bias-pull-up;
373 };
374
375 pinctrl_flx4_default: flx4_default {
376 pinmux = <PIN_PC28__FLEXCOM4_IO0>,
377 <PIN_PC29__FLEXCOM4_IO1>;
378 bias-disable;
379 };
380
381 pinctrl_can0_default: can0_default {
382 pinmux = <PIN_PC10__CANTX0>,
383 <PIN_PC11__CANRX0>;
384 bias-disable;
385 };
386
387 pinctrl_can1_default: can1_default {
388 pinmux = <PIN_PC26__CANTX1>,
389 <PIN_PC27__CANRX1>;
390 bias-disable;
391 };
392
393 pinctrl_i2c1_default: i2c1_default {
394 pinmux = <PIN_PD19__TWD1>,
395 <PIN_PD20__TWCK1>;
396 bias-disable;
397 };
398
399 pinctrl_key_gpio_default: key_gpio_default {
400 pinmux = <PIN_PD0__GPIO>;
401 bias-pull-up;
402 };
403
404 pinctrl_led_gpio_default: led_gpio_default {
405 pinmux = <PIN_PB0__GPIO>,
406 <PIN_PB1__GPIO>,
407 <PIN_PA31__GPIO>;
408 bias-pull-up;
409 };
410
411 pinctrl_qspi1_default: qspi1_default {
412 pinmux = <PIN_PA6__QSPI1_SCK>,
413 <PIN_PA7__QSPI1_IO0>,
414 <PIN_PA8__QSPI1_IO1>,
415 <PIN_PA9__QSPI1_IO2>,
416 <PIN_PA10__QSPI1_IO3>,
417 <PIN_PA11__QSPI1_CS>;
418 bias-disable;
419 };
420
421 pinctrl_sdmmc0_default: sdmmc0_default {
422 cmd_data {
423 pinmux = <PIN_PA1__SDMMC0_CMD>,
424 <PIN_PA2__SDMMC0_DAT0>,
425 <PIN_PA3__SDMMC0_DAT1>,
426 <PIN_PA4__SDMMC0_DAT2>,
427 <PIN_PA5__SDMMC0_DAT3>;
428 bias-disable;
429 };
430
431 ck_cd {
432 pinmux = <PIN_PA0__SDMMC0_CK>,
433 <PIN_PA13__SDMMC0_CD>;
434 bias-disable;
435 };
436 };
437
438 pinctrl_sdmmc1_default: sdmmc1_default {
439 cmd_data {
440 pinmux = <PIN_PA18__SDMMC1_DAT0>,
441 <PIN_PA19__SDMMC1_DAT1>,
442 <PIN_PA20__SDMMC1_DAT2>,
443 <PIN_PA21__SDMMC1_DAT3>;
444 bias-disable;
445 };
446
447 ck_cd {
448 pinmux = <PIN_PA22__SDMMC1_CK>,
449 <PIN_PA28__SDMMC1_CMD>;
450 bias-disable;
451 };
452 };
453
454 pinctrl_mikrobus_i2c: mikrobus_i2c {
455 pinmux = <PIN_PD22__TWCK0>,
456 <PIN_PD21__TWD0>;
457 bias-disable;
458 };
459
460 pinctrl_mikrobus1_an: mikrobus1_an {
461 pinmux = <PIN_PD26__GPIO>;
462 bias-disable;
463 };
464
465 pinctrl_mikrobus1_rst: mikrobus1_rst {
466 pinmux = <PIN_PC5__GPIO>;
467 bias-disable;
468 };
469
470 pinctrl_mikrobus1_spi_cs: mikrobus1_spi_cs {
471 pinmux = <PIN_PC21__FLEXCOM3_IO3>;
472 bias-disable;
473 };
474
475 pinctrl_mikrobus1_spi: mikrobus1_spi {
476 pinmux = <PIN_PC20__FLEXCOM3_IO0>,
477 <PIN_PC19__FLEXCOM3_IO1>,
478 <PIN_PC18__FLEXCOM3_IO2>;
479 bias-disable;
480 };
481
482 pinctrl_mikrobus1_pwm: mikrobus1_pwm {
483 pinmux = <PIN_PC4__TIOB1>;
484 bias-disable;
485 };
486
487 pinctrl_mikrobus1_int: mikrobus1_int {
488 pinmux = <PIN_PC3__GPIO>;
489 bias-disable;
490 };
491
492 pinctrl_mikrobus1_uart: mikrobus1_uart {
493 pinmux = <PIN_PB26__URXD0>,
494 <PIN_PB27__UTXD0>;
495 bias-disable;
496 };
497
498 pinctrl_mikrobus2_an: mikrobus2_an {
499 pinmux = <PIN_PD25__GPIO>;
500 bias-disable;
501 };
502
503 pinctrl_mikrobus2_rst: mikrobus2_rst {
504 pinmux = <PIN_PB24__GPIO>;
505 bias-disable;
506 };
507
508 pinctrl_mikrobus2_spi_cs: mikrobus2_spi_cs {
509 pinmux = <PIN_PB31__FLEXCOM0_IO3>;
510 bias-disable;
511 };
512
513 pinctrl_mikrobus2_spi: mikrobus2_spi {
514 pinmux = <PIN_PB28__FLEXCOM0_IO0>,
515 <PIN_PB29__FLEXCOM0_IO1>,
516 <PIN_PB30__FLEXCOM0_IO2>;
517 bias-disable;
518 };
519
520 pinctrl_ksz_spi_cs: ksz_spi_cs {
521 pinmux = <PIN_PC0__GPIO>;
522 bias-disable;
523 };
524
525 pinctrl_mikrobus2_pwm: mikrobus2_pwm {
526 pinmux = <PIN_PB23__TIOB2>;
527 bias-disable;
528 };
529
530 pinctrl_mikrobus2_int: mikrobus2_int {
531 pinmux = <PIN_PB22__GPIO>;
532 bias-disable;
533 };
534
535 pinctrl_mikrobus2_uart: mikrobus2_uart {
536 pinmux = <PIN_PC12__URXD3>,
537 <PIN_PC13__UTXD3>;
538 bias-disable;
539 };
540
541 pinctrl_mikrobus3_an: mikrobus3_an {
542 pinmux = <PIN_PD24__GPIO>;
543 bias-disable;
544 };
545
546 pinctrl_mikrobus3_rst: mikrobus3_rst {
547 pinmux = <PIN_PB21__GPIO>;
548 bias-disable;
549 };
550
551 pinctrl_mikrobus3_spi_cs: mikrobus3_spi_cs {
552 pinmux = <PIN_PA17__SPI0_NPCS0>;
553 bias-disable;
554 };
555
556 pinctrl_mikrobus3_spi: mikrobus3_spi {
557 pinmux = <PIN_PA14__SPI0_SPCK>,
558 <PIN_PA16__SPI0_MISO>,
559 <PIN_PA15__SPI0_MOSI>;
560 bias-disable;
561 };
562
563 pinctrl_mikrobus3_pwm: mikrobus3_pwm {
564 pinmux = <PIN_PB20__TIOB3>;
565 bias-disable;
566 };
567
568 pinctrl_mikrobus3_int: mikrobus3_int {
569 pinmux = <PIN_PB18__GPIO>;
570 bias-disable;
571 };
572
573 pinctrl_mikrobus3_uart: mikrobus3_uart {
574 pinmux = <PIN_PC7__URXD1>,
575 <PIN_PC8__UTXD1>;
576 bias-disable;
577 };
578
579 pinctrl_usb_default: usb_default {
580 pinmux = <PIN_PC17__GPIO>;
581 bias-disable;
582 };
583
584 pinctrl_usba_vbus: usba_vbus {
585 pinmux = <PIN_PD23__GPIO>;
586 bias-disable;
587 };
588
589 pinctrl_pwm0_pwm2_default: pwm0_pwm2_default {
590 pinmux = <PIN_PB5__PWMH2>,
591 <PIN_PB6__PWML2>;
592 bias-pull-up;
593 };
594
595 pinctrl_macb0_default: macb0_default {
596 pinmux = <PIN_PD1__GRXCK>,
597 <PIN_PD2__GTXER>,
598 <PIN_PD5__GRX2>,
599 <PIN_PD6__GRX3>,
600 <PIN_PD7__GTX2>,
601 <PIN_PD8__GTX3>,
602 <PIN_PD9__GTXCK>,
603 <PIN_PD10__GTXEN>,
604 <PIN_PD11__GRXDV>,
605 <PIN_PD12__GRXER>,
606 <PIN_PD13__GRX0>,
607 <PIN_PD14__GRX1>,
608 <PIN_PD15__GTX0>,
609 <PIN_PD16__GTX1>,
610 <PIN_PD17__GMDC>,
611 <PIN_PD18__GMDIO>;
612 bias-disable;
613 };
614
615 pinctrl_macb0_phy_irq: macb0_phy_irq {
616 pinmux = <PIN_PD3__GPIO>;
617 bias-disable;
618 };
619
620 pinctrl_macb0_rst: macb0_sw_rst {
621 pinmux = <PIN_PD4__GPIO>;
622 bias-disable;
623 };
624
625 pinctrl_flx2_default: flx2_default {
626 pinmux = <PIN_PA6__FLEXCOM2_IO0>,
627 <PIN_PA7__FLEXCOM2_IO1>,
628 <PIN_PA9__FLEXCOM2_IO3>,
629 <PIN_PA10__FLEXCOM2_IO4>;
630 bias-disable;
631 };
632};
633
634&pwm0 {
635 pinctrl-names = "default";
636 pinctrl-0 = <&pinctrl_pwm0_pwm2_default>;
637 status = "disabled"; /* conflict with leds, HSIC */
638};
639
640&qspi1 {
641 pinctrl-names = "default";
642 pinctrl-0 = <&pinctrl_qspi1_default>;
643 status = "disabled"; /* Conflict with wilc_pwrseq, flx2 */
644
645 flash@0 {
646 #address-cells = <1>;
647 #size-cells = <1>;
648 compatible = "jedec,spi-nor";
649 reg = <0>;
650 spi-max-frequency = <80000000>;
651 spi-tx-bus-width = <4>;
652 spi-rx-bus-width = <4>;
653 m25p,fast-read;
654
655 at91bootstrap@0 {
656 label = "qspi: at91bootstrap";
657 reg = <0x00000000 0x00040000>;
658 };
659
660 bootloader@40000 {
661 label = "qspi: bootloader";
662 reg = <0x00040000 0x000c0000>;
663 };
664
665 bootloaderenvred@100000 {
666 label = "qspi: bootloader env redundant";
667 reg = <0x00100000 0x00040000>;
668 };
669
670 bootloaderenv@140000 {
671 label = "qspi: bootloader env";
672 reg = <0x00140000 0x00040000>;
673 };
674
675 dtb@180000 {
676 label = "qspi: device tree";
677 reg = <0x00180000 0x00080000>;
678 };
679
680 kernel@200000 {
681 label = "qspi: kernel";
682 reg = <0x00200000 0x00600000>;
683 };
684 };
685};
686
687&sdmmc0 {
688 no-1-8-v;
689 bus-width = <4>;
690 pinctrl-names = "default";
691 pinctrl-0 = <&pinctrl_sdmmc0_default>;
692 status = "okay";
693};
694
695&shutdown_controller {
696 debounce-delay-us = <976>;
697 atmel,wakeup-rtc-timer;
698
699 input@0 {
700 reg = <0>;
701 };
702};
703
704&spi0 { /* mikrobus3 spi */
705 pinctrl-names = "default";
706 pinctrl-0 = <&pinctrl_mikrobus3_spi &pinctrl_mikrobus3_spi_cs>;
707 status = "okay";
708};
709
710&tcb0 {
711 timer0: timer@0 {
712 compatible = "atmel,tcb-timer";
713 reg = <0>;
714 };
715
716 timer1: timer@1 {
717 compatible = "atmel,tcb-timer";
718 reg = <1>;
719 };
720};
721
722&uart0 {
723 pinctrl-names = "default";
724 pinctrl-0 = <&pinctrl_mikrobus1_uart>;
725 atmel,use-dma-rx;
726 atmel,use-dma-tx;
727 status = "okay";
728};
729
730&uart1 {
731 pinctrl-names = "default";
732 pinctrl-0 = <&pinctrl_mikrobus3_uart>;
733 atmel,use-dma-rx;
734 atmel,use-dma-tx;
735 status = "okay";
736};
737
738&uart3 {
739 pinctrl-names = "default";
740 pinctrl-0 = <&pinctrl_mikrobus2_uart>;
741 atmel,use-dma-rx;
742 atmel,use-dma-tx;
743 status = "okay";
744};
745
746&usb0 {
747 atmel,vbus-gpio = <&pioA PIN_PD23 GPIO_ACTIVE_HIGH>;
748 pinctrl-names = "default";
749 pinctrl-0 = <&pinctrl_usba_vbus>;
750 status = "okay";
751};
752
753&usb1 {
754 num-ports = <3>;
755 pinctrl-names = "default";
756 pinctrl-0 = <&pinctrl_usb_default>;
757 status = "okay";
758};
759
760&usb2 {
761 phy_type = "hsic";
762 status = "okay";
763};
764
765&watchdog {
766 status = "okay";
767};