blob: 7be21578154976c1de4ef6a8ba894dff55f52d8f [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * at91-sama5d29_curiosity.dts - Device Tree file for SAMA5D29 Curiosity board
4 *
5 * Copyright (C) 2023 Microchip Technology Inc. and its subsidiaries
6 *
7 * Author: Mihai Sain <mihai.sain@microchip.com>
8 *
9 */
10/dts-v1/;
11#include "sama5d29.dtsi"
12#include "sama5d2-pinfunc.h"
13#include <dt-bindings/gpio/gpio.h>
14#include <dt-bindings/input/input.h>
15#include <dt-bindings/mfd/atmel-flexcom.h>
16
17/ {
18 model = "Microchip SAMA5D29 Curiosity";
19 compatible = "microchip,sama5d29-curiosity", "atmel,sama5d29", "atmel,sama5d2", "atmel,sama5";
20
21 aliases {
22 serial0 = &uart0; // debug
23 serial1 = &uart1; // RPi
24 serial2 = &uart3; // mikro BUS 2
25 serial3 = &uart4; // mikro BUS 1
26 serial4 = &uart6; // flx1 Bluetooth
27 i2c0 = &i2c0;
28 i2c1 = &i2c1;
29 };
30
31 chosen {
32 bootargs = "console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootwait";
33 stdout-path = "serial0:115200n8";
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 button-1 {
53 label = "USER BUTTON";
54 gpios = <&pioA PIN_PA17 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";
65
66 led-red {
67 label = "red";
68 gpios = <&pioA PIN_PA7 GPIO_ACTIVE_HIGH>;
69 };
70
71 led-green {
72 label = "green";
73 gpios = <&pioA PIN_PA8 GPIO_ACTIVE_HIGH>;
74 };
75
76 led-blue {
77 label = "blue";
78 gpios = <&pioA PIN_PA9 GPIO_ACTIVE_HIGH>;
79 linux,default-trigger = "heartbeat";
80 };
81 };
82
83 memory@20000000 {
84 device_type = "memory";
85 reg = <0x20000000 0x20000000>;
86 };
Tom Rini9c8af152024-12-24 12:03:04 -060087
88 reg_5v: regulator-5v {
89 compatible = "regulator-fixed";
90 regulator-name = "5V_MAIN";
91 regulator-min-microvolt = <5000000>;
92 regulator-max-microvolt = <5000000>;
93 regulator-always-on;
94 };
Tom Rini53633a82024-02-29 12:33:36 -050095};
96
97&adc {
98 vddana-supply = <&vdd_3v3>;
99 vref-supply = <&vdd_3v3>;
100 pinctrl-names = "default";
101 pinctrl-0 = <&pinctrl_adc_default &pinctrl_adtrg_default>;
102 status = "okay";
103};
104
105&can0 {
106 pinctrl-names = "default";
107 pinctrl-0 = <&pinctrl_can0_default>;
108 status = "okay";
109};
110
111&can1 {
112 pinctrl-names = "default";
113 pinctrl-0 = <&pinctrl_can1_default>;
114 status = "okay";
115};
116
117&flx1 {
118 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
119 status = "okay";
120
121 uart6: serial@200 {
122 pinctrl-0 = <&pinctrl_flx1_default>;
123 pinctrl-names = "default";
124 atmel,use-dma-rx;
125 atmel,use-dma-tx;
126 status = "okay";
127 };
128};
129
130&flx4 {
131 atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
132 status = "okay";
133
134 spi6: spi@400 {
135 dmas = <0>, <0>;
136 pinctrl-names = "default";
137 pinctrl-0 = <&pinctrl_rpi_spi>;
138 status = "okay";
139 };
140};
141
142&i2c0 {
143 dmas = <0>, <0>;
144 pinctrl-names = "default", "gpio";
145 pinctrl-0 = <&pinctrl_i2c0_default>;
146 pinctrl-1 = <&pinctrl_i2c0_gpio>;
147 sda-gpios = <&pioA PIN_PB31 GPIO_ACTIVE_HIGH>;
148 scl-gpios = <&pioA PIN_PC0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
149 i2c-sda-hold-time-ns = <350>;
150 status = "okay";
151
Tom Rini844493d2025-01-26 16:17:47 -0600152 pmic@5b {
Tom Rini53633a82024-02-29 12:33:36 -0500153 compatible = "microchip,mcp16502";
154 reg = <0x5b>;
Tom Rini9c8af152024-12-24 12:03:04 -0600155 lvin-supply = <&reg_5v>;
156 pvin1-supply = <&reg_5v>;
157 pvin2-supply = <&reg_5v>;
158 pvin3-supply = <&reg_5v>;
159 pvin4-supply = <&reg_5v>;
Tom Rini53633a82024-02-29 12:33:36 -0500160 status = "okay";
161 lpm-gpios = <&pioBU 0 GPIO_ACTIVE_LOW>;
162
163 regulators {
164 vdd_3v3: VDD_IO {
165 regulator-name = "VDD_IO";
166 regulator-min-microvolt = <3300000>;
167 regulator-max-microvolt = <3300000>;
168 regulator-initial-mode = <2>;
169 regulator-allowed-modes = <2>, <4>;
170 regulator-always-on;
171
172 regulator-state-standby {
173 regulator-on-in-suspend;
174 regulator-mode = <4>;
175 };
176
177 regulator-state-mem {
178 regulator-off-in-suspend;
179 regulator-mode = <4>;
180 };
181 };
182
183 vddio_ddr: VDD_DDR {
184 regulator-name = "VDD_DDR";
185 regulator-min-microvolt = <1200000>;
186 regulator-max-microvolt = <1200000>;
187 regulator-initial-mode = <2>;
188 regulator-allowed-modes = <2>, <4>;
189 regulator-always-on;
190
191 regulator-state-standby {
192 regulator-on-in-suspend;
193 regulator-suspend-microvolt = <1200000>;
194 regulator-changeable-in-suspend;
195 regulator-mode = <4>;
196 };
197
198 regulator-state-mem {
199 regulator-on-in-suspend;
200 regulator-suspend-microvolt = <1200000>;
201 regulator-changeable-in-suspend;
202 regulator-mode = <4>;
203 };
204 };
205
206 vdd_core: VDD_CORE {
207 regulator-name = "VDD_CORE";
208 regulator-min-microvolt = <1250000>;
209 regulator-max-microvolt = <1250000>;
210 regulator-initial-mode = <2>;
211 regulator-allowed-modes = <2>, <4>;
212 regulator-always-on;
213
214 regulator-state-standby {
215 regulator-on-in-suspend;
216 regulator-mode = <4>;
217 };
218
219 regulator-state-mem {
220 regulator-off-in-suspend;
221 regulator-mode = <4>;
222 };
223 };
224
225 vdd_ddr: VDD_OTHER {
226 regulator-name = "VDD_OTHER";
227 regulator-min-microvolt = <1800000>;
228 regulator-max-microvolt = <1800000>;
229 regulator-initial-mode = <2>;
230 regulator-allowed-modes = <2>, <4>;
231 regulator-always-on;
232
233 regulator-state-standby {
234 regulator-on-in-suspend;
235 regulator-suspend-microvolt = <1800000>;
236 regulator-changeable-in-suspend;
237 regulator-mode = <4>;
238 };
239
240 regulator-state-mem {
241 regulator-on-in-suspend;
242 regulator-suspend-microvolt = <1800000>;
243 regulator-changeable-in-suspend;
244 regulator-mode = <4>;
245 };
246 };
247
248 LDO1 {
249 regulator-name = "LDO1";
250 regulator-min-microvolt = <2500000>;
251 regulator-max-microvolt = <2500000>;
252 regulator-always-on;
253
254 regulator-state-standby {
255 regulator-on-in-suspend;
256 };
257
258 regulator-state-mem {
259 regulator-off-in-suspend;
260 };
261 };
262
263 LDO2 {
264 regulator-name = "LDO2";
265 regulator-min-microvolt = <3300000>;
266 regulator-max-microvolt = <3300000>;
267 regulator-always-on;
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&i2c1 {
282 dmas = <0>, <0>;
283 pinctrl-names = "default", "gpio";
284 pinctrl-0 = <&pinctrl_i2c1_default>;
285 pinctrl-1 = <&pinctrl_i2c1_gpio>;
286 i2c-analog-filter;
287 i2c-digital-filter;
288 i2c-digital-filter-width-ns = <35>;
289 sda-gpios = <&pioA PIN_PD4 GPIO_ACTIVE_HIGH>;
290 scl-gpios = <&pioA PIN_PD5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
291 status = "okay";
292};
293
294&pioA {
295 pinctrl_adc_default: adc-default {
296 pinmux = <PIN_PD25__GPIO>,
297 <PIN_PD26__GPIO>;
298 bias-disable;
299 };
300
301 pinctrl_adtrg_default: adtrg-default {
302 pinmux = <PIN_PD31__ADTRG>;
303 bias-pull-up;
304 };
305
306 pinctrl_can0_default: can0-default {
307 pinmux = <PIN_PC10__CANTX0>,
308 <PIN_PC11__CANRX0>;
309 bias-disable;
310 };
311
312 pinctrl_can1_default: can1-default {
313 pinmux = <PIN_PC26__CANTX1>,
314 <PIN_PC27__CANRX1>;
315 bias-disable;
316 };
317
318 pinctrl_debug_uart: debug-uart {
319 pinmux = <PIN_PB26__URXD0>,
320 <PIN_PB27__UTXD0>;
321 bias-disable;
322 };
323
324 pinctrl_flx1_default: flx1-default {
325 pinmux = <PIN_PA24__FLEXCOM1_IO0>,
326 <PIN_PA23__FLEXCOM1_IO1>,
327 <PIN_PA25__FLEXCOM1_IO3>,
328 <PIN_PA26__FLEXCOM1_IO4>;
329 bias-disable;
330 };
331
332 pinctrl_i2c0_default: i2c0-default {
333 pinmux = <PIN_PB31__TWD0>,
334 <PIN_PC0__TWCK0>;
335 bias-disable;
336 };
337
338 pinctrl_i2c0_gpio: i2c0-gpio-default {
339 pinmux = <PIN_PB31__GPIO>,
340 <PIN_PC0__GPIO>;
341 bias-disable;
342 };
343
344 pinctrl_i2c1_default: i2c1-default {
345 pinmux = <PIN_PD4__TWD1>,
346 <PIN_PD5__TWCK1>;
347 bias-disable;
348 };
349
350 pinctrl_i2c1_gpio: i2c1-gpio-default {
351 pinmux = <PIN_PD4__GPIO>,
352 <PIN_PD5__GPIO>;
353 bias-disable;
354 };
355
356 pinctrl_key_gpio_default: key-gpio-default {
357 pinmux = <PIN_PA17__GPIO>;
358 bias-pull-up;
359 };
360
361 pinctrl_led_gpio_default: led-gpio-default {
362 pinmux = <PIN_PA7__GPIO>,
363 <PIN_PA8__GPIO>,
364 <PIN_PA9__GPIO>;
365 bias-pull-up;
366 };
367
368 pinctrl_mikrobus1_pwm: mikrobus1-pwm {
369 pinmux = <PIN_PA31__PWML0>;
370 bias-disable;
371 };
372
373 pinctrl_mikrobus2_pwm: mikrobus2-pwm {
374 pinmux = <PIN_PB0__PWMH1>;
375 bias-disable;
376 };
377
378 pinctrl_mikrobus1_uart: mikrobus1-uart {
379 pinmux = <PIN_PB3__URXD4>,
380 <PIN_PB4__UTXD4>;
381 bias-disable;
382 };
383
384 pinctrl_mikrobus2_uart: mikrobus2-uart {
385 pinmux = <PIN_PB11__URXD3>,
386 <PIN_PB12__UTXD3>;
387 bias-disable;
388 };
389
390 pinctrl_qspi1_default: qspi1-default {
391 pinmux = <PIN_PB5__QSPI1_SCK>,
392 <PIN_PB6__QSPI1_CS>,
393 <PIN_PB7__QSPI1_IO0>,
394 <PIN_PB8__QSPI1_IO1>,
395 <PIN_PB9__QSPI1_IO2>,
396 <PIN_PB10__QSPI1_IO3>;
397 bias-disable;
398 };
399
400 pinctrl_rpi_spi: rpi-spi {
401 pinmux = <PIN_PD12__FLEXCOM4_IO0>,
402 <PIN_PD13__FLEXCOM4_IO1>,
403 <PIN_PD14__FLEXCOM4_IO2>,
404 <PIN_PD15__FLEXCOM4_IO3>,
405 <PIN_PD16__FLEXCOM4_IO4>;
406 bias-disable;
407 };
408
409 pinctrl_rpi_uart: rpi-uart {
410 pinmux = <PIN_PD2__URXD1>,
411 <PIN_PD3__UTXD1>;
412 bias-disable;
413 };
414
415 pinctrl_sdmmc0_default: sdmmc0-default {
416 pinmux = <PIN_PA0__SDMMC0_CK>,
417 <PIN_PA1__SDMMC0_CMD>,
418 <PIN_PA2__SDMMC0_DAT0>,
419 <PIN_PA3__SDMMC0_DAT1>,
420 <PIN_PA4__SDMMC0_DAT2>,
421 <PIN_PA5__SDMMC0_DAT3>,
422 <PIN_PA11__SDMMC0_VDDSEL>,
423 <PIN_PA13__SDMMC0_CD>;
424 bias-disable;
425 };
426
427 pinctrl_sdmmc1_default: sdmmc1-default {
428 pinmux = <PIN_PA18__SDMMC1_DAT0>,
429 <PIN_PA19__SDMMC1_DAT1>,
430 <PIN_PA20__SDMMC1_DAT2>,
431 <PIN_PA21__SDMMC1_DAT3>,
432 <PIN_PA22__SDMMC1_CK>,
433 <PIN_PA28__SDMMC1_CMD>,
434 <PIN_PA30__SDMMC1_CD>;
435 bias-disable;
436 };
437
438 pinctrl_spi1_default: spi1-default {
439 pinmux = <PIN_PC1__SPI1_SPCK>,
440 <PIN_PC2__SPI1_MOSI>,
441 <PIN_PC3__SPI1_MISO>,
442 <PIN_PC4__SPI1_NPCS0>,
443 <PIN_PC5__SPI1_NPCS1>,
444 <PIN_PC6__SPI1_NPCS2>,
445 <PIN_PC7__SPI1_NPCS3>;
446 bias-disable;
447 };
448
449 pinctrl_usb_default: usb-default {
450 pinmux = <PIN_PA6__GPIO>;
451 bias-disable;
452 };
453
454 pinctrl_usba_vbus: usba-vbus {
455 pinmux = <PIN_PB13__GPIO>;
456 bias-disable;
457 };
458};
459
460&pwm0 {
461 pinctrl-names = "default";
462 pinctrl-0 = <&pinctrl_mikrobus1_pwm &pinctrl_mikrobus2_pwm>;
463 status = "okay";
464};
465
466&qspi1 {
467 pinctrl-names = "default";
468 pinctrl-0 = <&pinctrl_qspi1_default>;
469 status = "okay";
470
471 flash@0 {
472 #address-cells = <1>;
473 #size-cells = <1>;
474 compatible = "jedec,spi-nor";
475 reg = <0>;
476 spi-max-frequency = <80000000>;
477 spi-tx-bus-width = <4>;
478 spi-rx-bus-width = <4>;
479 m25p,fast-read;
480 label = "atmel_qspi1";
481 status = "okay";
482
483 at91bootstrap@0 {
484 label = "at91bootstrap";
485 reg = <0x0 0x40000>;
486 };
487
488 bootloader@40000 {
489 label = "bootloader";
490 reg = <0x40000 0xc0000>;
491 };
492
493 bootloaderenvred@100000 {
494 label = "bootloader env redundant";
495 reg = <0x100000 0x40000>;
496 };
497
498 bootloaderenv@140000 {
499 label = "bootloader env";
500 reg = <0x140000 0x40000>;
501 };
502
503 dtb@180000 {
504 label = "device tree";
505 reg = <0x180000 0x80000>;
506 };
507
508 kernel@200000 {
509 label = "kernel";
510 reg = <0x200000 0x600000>;
511 };
512 };
513};
514
515&sdmmc0 {
516 bus-width = <4>;
Tom Riniab06a532025-04-02 08:31:19 -0600517 no-1-8-v;
Tom Rini53633a82024-02-29 12:33:36 -0500518 pinctrl-names = "default";
519 pinctrl-0 = <&pinctrl_sdmmc0_default>;
520 disable-wp;
521 status = "okay";
522};
523
524&sdmmc1 {
525 bus-width = <4>;
526 pinctrl-names = "default";
527 pinctrl-0 = <&pinctrl_sdmmc1_default>;
528 disable-wp;
529 status = "okay";
530};
531
532&shutdown_controller {
533 debounce-delay-us = <976>;
534 atmel,wakeup-rtc-timer;
535
536 input@0 {
537 reg = <0>;
538 };
539};
540
541&spi1 {
542 pinctrl-names = "default";
543 pinctrl-0 = <&pinctrl_spi1_default>;
544 status = "okay";
545};
546
547&tcb0 {
548 timer0: timer@0 {
549 compatible = "atmel,tcb-timer";
550 reg = <0>;
551 };
552
553 timer1: timer@1 {
554 compatible = "atmel,tcb-timer";
555 reg = <1>;
556 };
557};
558
559&uart0 {
560 pinctrl-names = "default";
561 pinctrl-0 = <&pinctrl_debug_uart>;
562 atmel,use-dma-rx;
563 atmel,use-dma-tx;
564 status = "okay";
565};
566
567&uart1 {
568 pinctrl-names = "default";
569 pinctrl-0 = <&pinctrl_rpi_uart>;
570 atmel,use-dma-rx;
571 atmel,use-dma-tx;
572 status = "okay";
573};
574
575&uart3 {
576 pinctrl-names = "default";
577 pinctrl-0 = <&pinctrl_mikrobus2_uart>;
578 atmel,use-dma-rx;
579 atmel,use-dma-tx;
580 status = "okay";
581};
582
583&uart4 {
584 pinctrl-names = "default";
585 pinctrl-0 = <&pinctrl_mikrobus1_uart>;
586 atmel,use-dma-rx;
587 atmel,use-dma-tx;
588 status = "okay";
589};
590
591&usb0 {
592 atmel,vbus-gpio = <&pioA PIN_PB13 GPIO_ACTIVE_HIGH>;
593 pinctrl-names = "default";
594 pinctrl-0 = <&pinctrl_usba_vbus>;
595 status = "okay";
596};
597
598&usb1 {
599 num-ports = <3>;
600 atmel,vbus-gpio = <0
601 &pioA PIN_PA6 GPIO_ACTIVE_HIGH
602 0>;
603 pinctrl-names = "default";
604 pinctrl-0 = <&pinctrl_usb_default>;
605 status = "okay";
606};
607
608&usb2 {
609 status = "okay";
610};
611
612&watchdog {
613 status = "okay";
614};