xref: /linux/arch/arm/boot/dts/microchip/at91-sama5d29_curiosity.dts (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
1// 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	};
87
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	};
95};
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
152	mcp16502@5b {
153		compatible = "microchip,mcp16502";
154		reg = <0x5b>;
155		lvin-supply = <&reg_5v>;
156		pvin1-supply = <&reg_5v>;
157		pvin2-supply = <&reg_5v>;
158		pvin3-supply = <&reg_5v>;
159		pvin4-supply = <&reg_5v>;
160		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>;
517	pinctrl-names = "default";
518	pinctrl-0 = <&pinctrl_sdmmc0_default>;
519	disable-wp;
520	status = "okay";
521};
522
523&sdmmc1 {
524	bus-width = <4>;
525	pinctrl-names = "default";
526	pinctrl-0 = <&pinctrl_sdmmc1_default>;
527	disable-wp;
528	status = "okay";
529};
530
531&shutdown_controller {
532	debounce-delay-us = <976>;
533	atmel,wakeup-rtc-timer;
534
535	input@0 {
536		reg = <0>;
537	};
538};
539
540&spi1 {
541	pinctrl-names = "default";
542	pinctrl-0 = <&pinctrl_spi1_default>;
543	status = "okay";
544};
545
546&tcb0 {
547	timer0: timer@0 {
548		compatible = "atmel,tcb-timer";
549		reg = <0>;
550	};
551
552	timer1: timer@1 {
553		compatible = "atmel,tcb-timer";
554		reg = <1>;
555	};
556};
557
558&uart0 {
559	pinctrl-names = "default";
560	pinctrl-0 = <&pinctrl_debug_uart>;
561	atmel,use-dma-rx;
562	atmel,use-dma-tx;
563	status = "okay";
564};
565
566&uart1 {
567	pinctrl-names = "default";
568	pinctrl-0 = <&pinctrl_rpi_uart>;
569	atmel,use-dma-rx;
570	atmel,use-dma-tx;
571	status = "okay";
572};
573
574&uart3 {
575	pinctrl-names = "default";
576	pinctrl-0 = <&pinctrl_mikrobus2_uart>;
577	atmel,use-dma-rx;
578	atmel,use-dma-tx;
579	status = "okay";
580};
581
582&uart4 {
583	pinctrl-names = "default";
584	pinctrl-0 = <&pinctrl_mikrobus1_uart>;
585	atmel,use-dma-rx;
586	atmel,use-dma-tx;
587	status = "okay";
588};
589
590&usb0 {
591	atmel,vbus-gpio = <&pioA PIN_PB13 GPIO_ACTIVE_HIGH>;
592	pinctrl-names = "default";
593	pinctrl-0 = <&pinctrl_usba_vbus>;
594	status = "okay";
595};
596
597&usb1 {
598	num-ports = <3>;
599	atmel,vbus-gpio = <0
600			   &pioA PIN_PA6 GPIO_ACTIVE_HIGH
601			   0>;
602	pinctrl-names = "default";
603	pinctrl-0 = <&pinctrl_usb_default>;
604	status = "okay";
605};
606
607&usb2 {
608	status = "okay";
609};
610
611&watchdog {
612	status = "okay";
613};
614