1/*
2 * Copyright (c) 2017 Piotr Mienkowski
3 * Copyright (c) 2017 Justin Watson
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#include <arm/armv7-m.dtsi>
9#include <dt-bindings/i2c/i2c.h>
10#include <dt-bindings/gpio/gpio.h>
11
12#include "same70-pinctrl.dtsi"
13
14/ {
15	aliases {
16		watchdog0 = &wdt;
17	};
18
19	chosen {
20		zephyr,flash-controller = &eefc;
21	};
22
23	chosen {
24		zephyr,entropy = &trng;
25	};
26
27	cpus {
28		#address-cells = <1>;
29		#size-cells = <0>;
30
31		cpu0: cpu@0 {
32			device_type = "cpu";
33			compatible = "arm,cortex-m7";
34			reg = <0>;
35			#address-cells = <1>;
36			#size-cells = <1>;
37
38			mpu: mpu@e000ed90 {
39				compatible = "arm,armv7m-mpu";
40				reg = <0xe000ed90 0x40>;
41				arm,num-mpu-regions = <16>;
42			};
43		};
44	};
45
46	sram0: memory@20400000 {
47		compatible = "mmio-sram";
48	};
49
50	soc {
51		eefc: flash-controller@400e0c00 {
52			compatible = "atmel,sam-flash-controller";
53			label = "FLASH_CTRL";
54			reg = <0x400e0c00 0x200>;
55			interrupts = <6 0>;
56			peripheral-id = <6>;
57
58			#address-cells = <1>;
59			#size-cells = <1>;
60
61			flash0: flash@400000 {
62				compatible = "soc-nv-flash";
63				label = "FLASH_E70";
64
65				write-block-size = <16>;
66				erase-block-size = <8192>;
67			};
68
69		};
70
71		wdt: watchdog@400e1850 {
72			compatible = "atmel,sam-watchdog";
73			reg = <0x400e1850 0xc>;
74			interrupts = <4 0>;
75			peripheral-id = <4>;
76			label = "WATCHDOG_0";
77			status = "disabled";
78		};
79
80		twihs0: i2c@40018000 {
81			compatible = "atmel,sam-i2c-twihs";
82			clock-frequency = <I2C_BITRATE_STANDARD>;
83			#address-cells = <1>;
84			#size-cells = <0>;
85			reg = <0x40018000 0x12B>;
86			interrupts = <19 0>;
87			peripheral-id = <19>;
88			label = "I2C_0";
89			status = "disabled";
90			pinctrl-0 = <&pa4a_twihs0_twck0 &pa3a_twihs0_twd0>;
91		};
92
93		twihs1: i2c@4001c000 {
94			compatible = "atmel,sam-i2c-twihs";
95			clock-frequency = <I2C_BITRATE_STANDARD>;
96			#address-cells = <1>;
97			#size-cells = <0>;
98			reg = <0x4001c000 0x12B>;
99			interrupts = <20 0>;
100			peripheral-id = <20>;
101			label = "I2C_1";
102			status = "disabled";
103			pinctrl-0 = <&pb5a_twihs1_twck1 &pb4a_twihs1_twd1>;
104		};
105
106		twihs2: i2c@40060000 {
107			compatible = "atmel,sam-i2c-twihs";
108			clock-frequency = <I2C_BITRATE_STANDARD>;
109			#address-cells = <1>;
110			#size-cells = <0>;
111			reg = <0x40060000 0x12B>;
112			interrupts = <41 0>;
113			peripheral-id = <41>;
114			label = "I2C_2";
115			status = "disabled";
116			pinctrl-0 = <&pd28c_twihs2_twck2 &pd27c_twihs2_twd2>;
117		};
118
119		spi0: spi@40008000 {
120			compatible = "atmel,sam-spi";
121			#address-cells = <1>;
122			#size-cells = <0>;
123			reg = <0x40008000 0x4000>;
124			interrupts = <21 0>;
125			peripheral-id = <21>;
126			label = "SPI_0";
127			status = "disabled";
128			pinctrl-0 = <&pd20b_spi0_miso &pd21b_spi0_mosi &pd22b_spi0_spck>;
129		};
130
131		spi1: spi@40058000 {
132			compatible = "atmel,sam-spi";
133			#address-cells = <1>;
134			#size-cells = <0>;
135			reg = <0x40058000 0x4000>;
136			interrupts = <42 0>;
137			peripheral-id = <42>;
138			label = "SPI_1";
139			status = "disabled";
140			pinctrl-0 = <&pc26c_spi1_miso &pc27c_spi1_mosi &pc24c_spi1_spck>;
141		};
142
143		uart0: uart@400e0800 {
144			compatible = "atmel,sam-uart";
145			reg = <0x400e0800 0x100>;
146			interrupts = <7 1>;
147			peripheral-id = <7>;
148			status = "disabled";
149			label = "UART_0";
150			pinctrl-0 = <&pa9a_uart0_urxd0 &pa10a_uart0_utxd0>;
151		};
152
153		uart1: uart@400e0a00 {
154			compatible = "atmel,sam-uart";
155			reg = <0x400e0a00 0x100>;
156			interrupts = <8 1>;
157			peripheral-id = <8>;
158			status = "disabled";
159			label = "UART_1";
160		};
161
162		uart2: uart@400e1a00 {
163			compatible = "atmel,sam-uart";
164			reg = <0x400e1a00 0x100>;
165			interrupts = <44 1>;
166			peripheral-id = <44>;
167			status = "disabled";
168			label = "UART_2";
169		};
170
171		uart3: uart@400e1c00 {
172			compatible = "atmel,sam-uart";
173			reg = <0x400e1c00 0x100>;
174			interrupts = <45 1>;
175			peripheral-id = <45>;
176			status = "disabled";
177			label = "UART_3";
178		};
179
180		uart4: uart@400e1e00 {
181			compatible = "atmel,sam-uart";
182			reg = <0x400e1e00 0x100>;
183			interrupts = <46 1>;
184			peripheral-id = <46>;
185			status = "disabled";
186			label = "UART_4";
187		};
188
189		usart0: usart@40024000 {
190			compatible = "atmel,sam-usart";
191			reg = <0x40024000 0x100>;
192			interrupts = <13 0>;
193			peripheral-id = <13>;
194			status = "disabled";
195			label = "USART_0";
196			pinctrl-0 = <&pb0c_usart0_rxd0 &pb1c_usart0_txd0>;
197		};
198
199		usart1: usart@40028000 {
200			compatible = "atmel,sam-usart";
201			reg = <0x40028000 0x100>;
202			interrupts = <14 0>;
203			peripheral-id = <14>;
204			status = "disabled";
205			label = "USART_1";
206			pinctrl-0 = <&pa21a_usart1_rxd1 &pb4d_usart1_txd1>;
207		};
208
209		usart2: usart@4002c000 {
210			compatible = "atmel,sam-usart";
211			reg = <0x4002c000 0x100>;
212			interrupts = <15 0>;
213			peripheral-id = <15>;
214			status = "disabled";
215			label = "USART_2";
216			pinctrl-0 = <&pd15b_usart2_rxd2 &pd16b_usart2_txd2>;
217		};
218
219		afec0: adc@4003c000 {
220			compatible = "atmel,sam-afec";
221			reg = <0x4003c000 0x100>;
222			interrupts = <29 0>;
223			peripheral-id = <29>;
224			status = "disabled";
225			label = "ADC_0";
226			#io-channel-cells = <1>;
227			pinctrl-0 = <&pa8b_afec0_adtrg>;
228		};
229
230		afec1: adc@40064000 {
231			compatible = "atmel,sam-afec";
232			reg = <0x40064000 0x100>;
233			interrupts = <40 0>;
234			peripheral-id = <40>;
235			status = "disabled";
236			label = "ADC_1";
237			#io-channel-cells = <1>;
238			pinctrl-0 = <&pd9c_afec1_adtrg>;
239		};
240
241		dacc: dacc@40040000 {
242			compatible = "atmel,sam-dac";
243			reg = <0x40040000 0x100>;
244			interrupts = <30 0>;
245			peripheral-id = <30>;
246			status = "disabled";
247			label = "DACC";
248			#io-channel-cells = <1>;
249		};
250
251		pinctrl@400e0e00 {
252			compatible = "atmel,sam-pinctrl";
253			#address-cells = <1>;
254			#size-cells = <1>;
255			ranges = <0x400e0e00 0x400e0e00 0xa00>;
256
257			pioa: gpio@400e0e00 {
258				compatible = "atmel,sam-gpio";
259				reg = <0x400e0e00 0x190>;
260				interrupts = <10 1>;
261				peripheral-id = <10>;
262				label = "PORTA";
263				gpio-controller;
264				#gpio-cells = <2>;
265				#atmel,pin-cells = <2>;
266			};
267
268			piob: gpio@400e1000 {
269				compatible = "atmel,sam-gpio";
270				reg = <0x400e1000 0x190>;
271				interrupts = <11 1>;
272				peripheral-id = <11>;
273				label = "PORTB";
274				gpio-controller;
275				#gpio-cells = <2>;
276				#atmel,pin-cells = <2>;
277			};
278
279			pioc: gpio@400e1200 {
280				compatible = "atmel,sam-gpio";
281				reg = <0x400e1200 0x190>;
282				interrupts = <12 1>;
283				peripheral-id = <12>;
284				label = "PORTC";
285				gpio-controller;
286				#gpio-cells = <2>;
287				#atmel,pin-cells = <2>;
288			};
289
290			piod: gpio@400e1400 {
291				compatible = "atmel,sam-gpio";
292				reg = <0x400e1400 0x190>;
293				interrupts = <16 1>;
294				peripheral-id = <16>;
295				label = "PORTD";
296				gpio-controller;
297				#gpio-cells = <2>;
298				#atmel,pin-cells = <2>;
299			};
300
301			pioe: gpio@400e1600 {
302				compatible = "atmel,sam-gpio";
303				reg = <0x400e1600 0x190>;
304				interrupts = <17 1>;
305				peripheral-id = <17>;
306				label = "PORTE";
307				gpio-controller;
308				#gpio-cells = <2>;
309				#atmel,pin-cells = <2>;
310			};
311		};
312
313		pwm0: pwm0@40020000 {
314			compatible = "atmel,sam-pwm";
315			reg = <0x40020000 0x4000>;
316			interrupts = <31 0>;
317			peripheral-id = <31>;
318			status = "disabled";
319			label = "PWM_0";
320			prescaler = <10>;
321			divider = <1>;
322			#pwm-cells = <2>;
323		};
324
325		pwm1: pwm1@4005c000 {
326			compatible = "atmel,sam-pwm";
327			reg = <0x4005c000 0x4000>;
328			interrupts = <60 0>;
329			peripheral-id = <60>;
330			status = "disabled";
331			label = "PWM_1";
332			prescaler = <10>;
333			divider = <1>;
334			#pwm-cells = <2>;
335		};
336
337		usbhs: usbd@40038000 {
338			compatible = "atmel,sam-usbhs";
339			#address-cells = <1>;
340			#size-cells = <0>;
341			reg = <0x40038000 0x4000>;
342			interrupts = <34 0>;
343			interrupt-names = "usbhs";
344			maximum-speed = "full-speed";
345			num-bidir-endpoints = <10>;
346			peripheral-id = <34>;
347			status = "disabled";
348			label = "USBHS";
349		};
350
351		gmac: ethernet@40050000 {
352			compatible = "atmel,sam-gmac";
353			reg = <0x40050000 0x4000>;
354			peripheral-id = <39>;
355			interrupts = <39 0>, <66 0>, <67 0>;
356			interrupt-names = "gmac", "q1", "q2";
357			num-queues = <3>;
358			local-mac-address = [00 00 00 00 00 00];
359			label = "GMAC";
360			status = "disabled";
361			/* Default to RMII config */
362			pinctrl-0 = <&pd0a_gmac_gtxck &pd1a_gmac_gtxen
363				     &pd2a_gmac_gtx0 &pd3a_gmac_gtx1
364				     &pd4a_gmac_grxdv &pd5a_gmac_grx0
365				     &pd6a_gmac_grx1 &pd7a_gmac_grxer>;
366
367			mdio: mdio {
368				compatible = "atmel,sam-mdio";
369				label = "MDIO";
370				status = "disabled";
371				pinctrl-0 = <&pd8a_gmac_gmdc &pd9a_gmac_gmdio>;
372			};
373		};
374
375		tc0: tc@4000c000 {
376			compatible = "atmel,sam-tc";
377			reg = <0x4000c000 0x100>;
378			interrupts = <23 0
379				      24 0
380				      25 0>;
381			peripheral-id = <23 24 25>;
382			status = "disabled";
383			label = "TC0";
384			pinctrl-0 = <>;
385		};
386
387		tc1: tc@40010000 {
388			compatible = "atmel,sam-tc";
389			reg = <0x40010000 0x100>;
390			interrupts = <26 0
391				      27 0
392				      28 0>;
393			peripheral-id = <26 27 28>;
394			status = "disabled";
395			label = "TC1";
396			pinctrl-0 = <>;
397		};
398
399		tc2: tc@40014000 {
400			compatible = "atmel,sam-tc";
401			reg = <0x40014000 0x100>;
402			interrupts = <47 0
403				      48 0
404				      49 0>;
405			peripheral-id = <47 48 49>;
406			status = "disabled";
407			label = "TC2";
408			pinctrl-0 = <>;
409		};
410
411		tc3: tc@40054000 {
412			compatible = "atmel,sam-tc";
413			reg = <0x40054000 0x100>;
414			interrupts = <50 0
415				      51 0
416				      52 0>;
417			peripheral-id = <50 51 52>;
418			status = "disabled";
419			label = "TC3";
420			pinctrl-0 = <>;
421		};
422
423		trng: random@40070000 {
424			compatible = "atmel,sam-trng";
425			reg = <0x40070000 0x4000>;
426			interrupts = <57 0>;
427			peripheral-id = <57>;
428			status = "okay";
429			label = "TRNG";
430		};
431
432		xdmac: dma-controller@40078000 {
433			compatible = "atmel,sam-xdmac";
434			reg = <0x40078000 0x400>;
435			interrupts = <58 0>;
436			peripheral-id = <58>;
437			label = "DMA_0";
438			#dma-cells = <2>;
439		};
440
441		ssc: ssc@40004000 {
442			compatible = "atmel,sam-ssc";
443			reg = <0x40004000 0x400>;
444			interrupts = <22 0>;
445			peripheral-id = <22>;
446			label = "SSC_0";
447			status = "disabled";
448		};
449	};
450};
451
452&nvic {
453	arm,num-irq-priority-bits = <3>;
454};
455