1/* SPDX-License-Identifier: Apache-2.0 */
2
3#include <arm/armv7-m.dtsi>
4#include <nordic/nrf_common.dtsi>
5
6/ {
7	chosen {
8		zephyr,bt-hci = &bt_hci_controller;
9		zephyr,entropy = &rng;
10		zephyr,flash-controller = &flash_controller;
11	};
12
13	cpus {
14		#address-cells = <1>;
15		#size-cells = <0>;
16
17		cpu@0 {
18			device_type = "cpu";
19			compatible = "arm,cortex-m4f";
20			reg = <0>;
21			#address-cells = <1>;
22			#size-cells = <1>;
23
24			itm: itm@e0000000 {
25				compatible = "arm,armv7m-itm";
26				reg = <0xe0000000 0x1000>;
27				swo-ref-frequency = <32000000>;
28			};
29		};
30	};
31
32	soc {
33		ficr: ficr@10000000 {
34			compatible = "nordic,nrf-ficr";
35			reg = <0x10000000 0x1000>;
36			#nordic,ficr-cells = <1>;
37			status = "okay";
38		};
39
40		uicr: uicr@10001000 {
41			compatible = "nordic,nrf-uicr";
42			reg = <0x10001000 0x1000>;
43			status = "okay";
44		};
45
46		sram0: memory@20000000 {
47			compatible = "mmio-sram";
48		};
49
50		clock: clock@40000000 {
51			compatible = "nordic,nrf-clock";
52			reg = <0x40000000 0x1000>;
53			interrupts = <0 NRF_DEFAULT_IRQ_PRIORITY>;
54			status = "okay";
55		};
56
57		power: power@40000000 {
58			compatible = "nordic,nrf-power";
59			reg = <0x40000000 0x1000>;
60			interrupts = <0 NRF_DEFAULT_IRQ_PRIORITY>;
61			status = "okay";
62			#address-cells = <1>;
63			#size-cells = <1>;
64
65			gpregret1: gpregret1@4000051c {
66				#address-cells = <1>;
67				#size-cells = <1>;
68				compatible = "nordic,nrf-gpregret";
69				reg = <0x4000051c 0x1>;
70				status = "okay";
71			};
72
73			gpregret2: gpregret2@40000520 {
74				#address-cells = <1>;
75				#size-cells = <1>;
76				compatible = "nordic,nrf-gpregret";
77				reg = <0x40000520 0x1>;
78				status = "okay";
79			};
80		};
81
82		radio: radio@40001000 {
83			compatible = "nordic,nrf-radio";
84			reg = <0x40001000 0x1000>;
85			interrupts = <1 NRF_DEFAULT_IRQ_PRIORITY>;
86			status = "okay";
87			ieee802154-supported;
88			ble-2mbps-supported;
89			ble-coded-phy-supported;
90			tx-high-power-supported;
91
92			ieee802154: ieee802154 {
93				compatible = "nordic,nrf-ieee802154";
94				status = "disabled";
95			};
96
97			/* Note: In the nRF Connect SDK the SoftDevice Controller
98			 * is added and set as the default Bluetooth Controller.
99			 */
100			bt_hci_controller: bt_hci_controller {
101				compatible = "zephyr,bt-hci-ll-sw-split";
102				status = "okay";
103			};
104		};
105
106		uart0: uart@40002000 {
107			/* uart can be either UART or UARTE, for the user to pick */
108			/* compatible = "nordic,nrf-uarte" or "nordic,nrf-uart"; */
109			compatible = "nordic,nrf-uarte";
110			reg = <0x40002000 0x1000>;
111			interrupts = <2 NRF_DEFAULT_IRQ_PRIORITY>;
112			status = "disabled";
113		};
114
115		i2c0: i2c@40003000 {
116			/*
117			 * This i2c node can be TWI, TWIM, or TWIS,
118			 * for the user to pick:
119			 * compatible = "nordic,nrf-twi" or
120			 *              "nordic,nrf-twim" or
121			 *              "nordic,nrf-twis".
122			 */
123			compatible = "nordic,nrf-twim";
124			#address-cells = <1>;
125			#size-cells = <0>;
126			reg = <0x40003000 0x1000>;
127			clock-frequency = <I2C_BITRATE_STANDARD>;
128			interrupts = <3 NRF_DEFAULT_IRQ_PRIORITY>;
129			easydma-maxcnt-bits = <16>;
130			status = "disabled";
131		};
132
133		spi0: spi@40003000 {
134			/*
135			 * This spi node can be SPI, SPIM, or SPIS,
136			 * for the user to pick:
137			 * compatible = "nordic,nrf-spi" or
138			 *              "nordic,nrf-spim" or
139			 *              "nordic,nrf-spis".
140			 */
141			compatible = "nordic,nrf-spim";
142			#address-cells = <1>;
143			#size-cells = <0>;
144			reg = <0x40003000 0x1000>;
145			interrupts = <3 NRF_DEFAULT_IRQ_PRIORITY>;
146			max-frequency = <DT_FREQ_M(8)>;
147			easydma-maxcnt-bits = <16>;
148			status = "disabled";
149		};
150
151		i2c1: i2c@40004000 {
152			/*
153			 * This i2c node can be TWI, TWIM, or TWIS,
154			 * for the user to pick:
155			 * compatible = "nordic,nrf-twi" or
156			 *              "nordic,nrf-twim" or
157			 *              "nordic,nrf-twis".
158			 */
159			compatible = "nordic,nrf-twim";
160			#address-cells = <1>;
161			#size-cells = <0>;
162			reg = <0x40004000 0x1000>;
163			clock-frequency = <I2C_BITRATE_STANDARD>;
164			interrupts = <4 NRF_DEFAULT_IRQ_PRIORITY>;
165			easydma-maxcnt-bits = <16>;
166			status = "disabled";
167		};
168
169		spi1: spi@40004000 {
170			/*
171			 * This spi node can be SPI, SPIM, or SPIS,
172			 * for the user to pick:
173			 * compatible = "nordic,nrf-spi" or
174			 *              "nordic,nrf-spim" or
175			 *              "nordic,nrf-spis".
176			 */
177			compatible = "nordic,nrf-spim";
178			#address-cells = <1>;
179			#size-cells = <0>;
180			reg = <0x40004000 0x1000>;
181			interrupts = <4 NRF_DEFAULT_IRQ_PRIORITY>;
182			max-frequency = <DT_FREQ_M(8)>;
183			easydma-maxcnt-bits = <16>;
184			status = "disabled";
185		};
186
187		nfct: nfct@40005000 {
188			compatible = "nordic,nrf-nfct";
189			reg = <0x40005000 0x1000>;
190			interrupts = <5 NRF_DEFAULT_IRQ_PRIORITY>;
191			status = "disabled";
192		};
193
194		gpiote: gpiote0: gpiote@40006000 {
195			compatible = "nordic,nrf-gpiote";
196			reg = <0x40006000 0x1000>;
197			interrupts = <6 5>;
198			status = "disabled";
199			instance = <0>;
200		};
201
202		adc: adc@40007000 {
203			compatible = "nordic,nrf-saadc";
204			reg = <0x40007000 0x1000>;
205			interrupts = <7 NRF_DEFAULT_IRQ_PRIORITY>;
206			status = "disabled";
207			#io-channel-cells = <1>;
208		};
209
210		timer0: timer@40008000 {
211			compatible = "nordic,nrf-timer";
212			status = "disabled";
213			reg = <0x40008000 0x1000>;
214			cc-num = <4>;
215			max-bit-width = <32>;
216			interrupts = <8 NRF_DEFAULT_IRQ_PRIORITY>;
217			prescaler = <0>;
218		};
219
220		timer1: timer@40009000 {
221			compatible = "nordic,nrf-timer";
222			status = "disabled";
223			reg = <0x40009000 0x1000>;
224			cc-num = <4>;
225			max-bit-width = <32>;
226			interrupts = <9 NRF_DEFAULT_IRQ_PRIORITY>;
227			prescaler = <0>;
228		};
229
230		timer2: timer@4000a000 {
231			compatible = "nordic,nrf-timer";
232			status = "disabled";
233			reg = <0x4000a000 0x1000>;
234			cc-num = <4>;
235			max-bit-width = <32>;
236			interrupts = <10 NRF_DEFAULT_IRQ_PRIORITY>;
237			prescaler = <0>;
238		};
239
240		rtc0: rtc@4000b000 {
241			compatible = "nordic,nrf-rtc";
242			reg = <0x4000b000 0x1000>;
243			cc-num = <3>;
244			interrupts = <11 NRF_DEFAULT_IRQ_PRIORITY>;
245			status = "disabled";
246			clock-frequency = <32768>;
247			prescaler = <1>;
248		};
249
250		temp: temp@4000c000 {
251			compatible = "nordic,nrf-temp";
252			reg = <0x4000c000 0x1000>;
253			interrupts = <12 NRF_DEFAULT_IRQ_PRIORITY>;
254			status = "okay";
255		};
256
257		rng: random@4000d000 {
258			compatible = "nordic,nrf-rng";
259			reg = <0x4000d000 0x1000>;
260			interrupts = <13 NRF_DEFAULT_IRQ_PRIORITY>;
261			status = "okay";
262		};
263
264		ecb: ecb@4000e000 {
265			compatible = "nordic,nrf-ecb";
266			reg = <0x4000e000 0x1000>;
267			interrupts = <14 NRF_DEFAULT_IRQ_PRIORITY>;
268			status = "okay";
269		};
270
271		ccm: ccm@4000f000 {
272			compatible = "nordic,nrf-ccm";
273			reg = <0x4000f000 0x1000>;
274			interrupts = <15 NRF_DEFAULT_IRQ_PRIORITY>;
275			length-field-length-8-bits;
276			status = "okay";
277		};
278
279		wdt: wdt0: watchdog@40010000 {
280			compatible = "nordic,nrf-wdt";
281			reg = <0x40010000 0x1000>;
282			interrupts = <16 NRF_DEFAULT_IRQ_PRIORITY>;
283			status = "okay";
284		};
285
286		rtc1: rtc@40011000 {
287			compatible = "nordic,nrf-rtc";
288			reg = <0x40011000 0x1000>;
289			cc-num = <4>;
290			interrupts = <17 NRF_DEFAULT_IRQ_PRIORITY>;
291			status = "disabled";
292			clock-frequency = <32768>;
293			prescaler = <1>;
294		};
295
296		qdec: qdec0: qdec@40012000 {
297			compatible = "nordic,nrf-qdec";
298			reg = <0x40012000 0x1000>;
299			interrupts = <18 NRF_DEFAULT_IRQ_PRIORITY>;
300			status = "disabled";
301		};
302
303		comp: comparator@40013000 {
304			/*
305			 * This comparator node can be COMP or LPCOMP,
306			 * for the user to pick:
307			 * compatible = "nordic,nrf-comp" or
308			 *              "nordic,nrf-lpcomp".
309			 */
310			compatible = "nordic,nrf-comp";
311			reg = <0x40013000 0x1000>;
312			interrupts = <19 NRF_DEFAULT_IRQ_PRIORITY>;
313			status = "disabled";
314			#io-channel-cells = <1>;
315		};
316
317		egu0: swi0: egu@40014000 {
318			compatible = "nordic,nrf-egu", "nordic,nrf-swi";
319			reg = <0x40014000 0x1000>;
320			interrupts = <20 NRF_DEFAULT_IRQ_PRIORITY>;
321			status = "okay";
322		};
323
324		egu1: swi1: egu@40015000 {
325			compatible = "nordic,nrf-egu", "nordic,nrf-swi";
326			reg = <0x40015000 0x1000>;
327			interrupts = <21 NRF_DEFAULT_IRQ_PRIORITY>;
328			status = "okay";
329		};
330
331		egu2: swi2: egu@40016000 {
332			compatible = "nordic,nrf-egu", "nordic,nrf-swi";
333			reg = <0x40016000 0x1000>;
334			interrupts = <22 NRF_DEFAULT_IRQ_PRIORITY>;
335			status = "okay";
336		};
337
338		egu3: swi3: egu@40017000 {
339			compatible = "nordic,nrf-egu", "nordic,nrf-swi";
340			reg = <0x40017000 0x1000>;
341			interrupts = <23 NRF_DEFAULT_IRQ_PRIORITY>;
342			status = "okay";
343		};
344
345		egu4: swi4: egu@40018000 {
346			compatible = "nordic,nrf-egu", "nordic,nrf-swi";
347			reg = <0x40018000 0x1000>;
348			interrupts = <24 NRF_DEFAULT_IRQ_PRIORITY>;
349			status = "okay";
350		};
351
352		egu5: swi5: egu@40019000 {
353			compatible = "nordic,nrf-egu", "nordic,nrf-swi";
354			reg = <0x40019000 0x1000>;
355			interrupts = <25 NRF_DEFAULT_IRQ_PRIORITY>;
356			status = "okay";
357		};
358
359		timer3: timer@4001a000 {
360			compatible = "nordic,nrf-timer";
361			status = "disabled";
362			reg = <0x4001a000 0x1000>;
363			cc-num = <6>;
364			max-bit-width = <32>;
365			interrupts = <26 NRF_DEFAULT_IRQ_PRIORITY>;
366			prescaler = <0>;
367		};
368
369		timer4: timer@4001b000 {
370			compatible = "nordic,nrf-timer";
371			status = "disabled";
372			reg = <0x4001b000 0x1000>;
373			cc-num = <6>;
374			max-bit-width = <32>;
375			interrupts = <27 NRF_DEFAULT_IRQ_PRIORITY>;
376			prescaler = <0>;
377		};
378
379		pwm0: pwm@4001c000 {
380			compatible = "nordic,nrf-pwm";
381			reg = <0x4001c000 0x1000>;
382			interrupts = <28 NRF_DEFAULT_IRQ_PRIORITY>;
383			status = "disabled";
384			#pwm-cells = <3>;
385		};
386
387		pdm0: pdm@4001d000 {
388			compatible = "nordic,nrf-pdm";
389			reg = <0x4001d000 0x1000>;
390			interrupts = <29 NRF_DEFAULT_IRQ_PRIORITY>;
391			status = "disabled";
392		};
393
394		acl: acl@4001e000 {
395			compatible = "nordic,nrf-acl";
396			reg = <0x4001e000 0x1000>;
397			status = "okay";
398		};
399
400		flash_controller: flash-controller@4001e000 {
401			compatible = "nordic,nrf52-flash-controller";
402			reg = <0x4001e000 0x1000>;
403			partial-erase;
404
405			#address-cells = <1>;
406			#size-cells = <1>;
407
408
409			flash0: flash@0 {
410				compatible = "soc-nv-flash";
411				erase-block-size = <4096>;
412				write-block-size = <4>;
413			};
414		};
415
416		ppi: ppi@4001f000 {
417			compatible = "nordic,nrf-ppi";
418			reg = <0x4001f000 0x1000>;
419			status = "okay";
420		};
421
422		mwu: mwu@40020000 {
423			compatible = "nordic,nrf-mwu";
424			reg = <0x40020000 0x1000>;
425			status = "okay";
426		};
427
428		pwm1: pwm@40021000 {
429			compatible = "nordic,nrf-pwm";
430			reg = <0x40021000 0x1000>;
431			interrupts = <33 NRF_DEFAULT_IRQ_PRIORITY>;
432			status = "disabled";
433			#pwm-cells = <3>;
434		};
435
436		pwm2: pwm@40022000 {
437			compatible = "nordic,nrf-pwm";
438			reg = <0x40022000 0x1000>;
439			interrupts = <34 NRF_DEFAULT_IRQ_PRIORITY>;
440			status = "disabled";
441			#pwm-cells = <3>;
442		};
443
444		spi2: spi@40023000 {
445			/*
446			 * This spi node can be SPI, SPIM, or SPIS,
447			 * for the user to pick:
448			 * compatible = "nordic,nrf-spi" or
449			 *              "nordic,nrf-spim" or
450			 *              "nordic,nrf-spis".
451			 */
452			compatible = "nordic,nrf-spim";
453			#address-cells = <1>;
454			#size-cells = <0>;
455			reg = <0x40023000 0x1000>;
456			interrupts = <35 NRF_DEFAULT_IRQ_PRIORITY>;
457			max-frequency = <DT_FREQ_M(8)>;
458			easydma-maxcnt-bits = <16>;
459			status = "disabled";
460		};
461
462		rtc2: rtc@40024000 {
463			compatible = "nordic,nrf-rtc";
464			reg = <0x40024000 0x1000>;
465			cc-num = <4>;
466			interrupts = <36 NRF_DEFAULT_IRQ_PRIORITY>;
467			status = "disabled";
468			clock-frequency = <32768>;
469			prescaler = <1>;
470		};
471
472		i2s0: i2s@40025000 {
473			compatible = "nordic,nrf-i2s";
474			#address-cells = <1>;
475			#size-cells = <0>;
476			reg = <0x40025000 0x1000>;
477			interrupts = <37 NRF_DEFAULT_IRQ_PRIORITY>;
478			status = "disabled";
479		};
480
481		usbd: usbd@40027000 {
482			compatible = "nordic,nrf-usbd";
483			reg = <0x40027000 0x1000>;
484			interrupts = <39 NRF_DEFAULT_IRQ_PRIORITY>;
485			num-bidir-endpoints = <1>;
486			num-in-endpoints = <7>;
487			num-out-endpoints = <7>;
488			num-isoin-endpoints = <1>;
489			num-isoout-endpoints = <1>;
490			status = "disabled";
491		};
492
493		uart1: uart@40028000 {
494			compatible = "nordic,nrf-uarte";
495			reg = <0x40028000 0x1000>;
496			interrupts = <40 NRF_DEFAULT_IRQ_PRIORITY>;
497			status = "disabled";
498		};
499
500		qspi: qspi@40029000 {
501			compatible = "nordic,nrf-qspi";
502			#address-cells = <1>;
503			#size-cells = <0>;
504			reg = <0x40029000 0x1000>, <0x12000000 0x8000000>;
505			reg-names = "qspi", "qspi_mm";
506			interrupts = <41 NRF_DEFAULT_IRQ_PRIORITY>;
507			status = "disabled";
508		};
509
510		pwm3: pwm@4002d000 {
511			compatible = "nordic,nrf-pwm";
512			reg = <0x4002d000 0x1000>;
513			interrupts = <45 NRF_DEFAULT_IRQ_PRIORITY>;
514			status = "disabled";
515			#pwm-cells = <3>;
516		};
517
518		spi3: spi@4002f000 {
519			compatible = "nordic,nrf-spim";
520			#address-cells = <1>;
521			#size-cells = <0>;
522			reg = <0x4002f000 0x1000>;
523			interrupts = <47 NRF_DEFAULT_IRQ_PRIORITY>;
524			max-frequency = <DT_FREQ_M(32)>;
525			easydma-maxcnt-bits = <16>;
526			rx-delay-supported;
527			rx-delay = <2>;
528			status = "disabled";
529		};
530
531		gpio0: gpio@50000000 {
532			compatible = "nordic,nrf-gpio";
533			gpio-controller;
534			reg = <0x50000000 0x200
535			       0x50000500 0x300>;
536			#gpio-cells = <2>;
537			status = "disabled";
538			port = <0>;
539			gpiote-instance = <&gpiote>;
540		};
541
542		gpio1: gpio@50000300 {
543			compatible = "nordic,nrf-gpio";
544			gpio-controller;
545			reg = <0x50000300 0x200
546			       0x50000800 0x300>;
547			#gpio-cells = <2>;
548			ngpios = <16>;
549			status = "disabled";
550			port = <1>;
551			gpiote-instance = <&gpiote>;
552		};
553
554		cryptocell: crypto@5002a000 {
555			compatible = "nordic,cryptocell", "arm,cryptocell-310";
556			reg = <0x5002a000 0x1000>, <0x5002b000 0x1000>;
557			reg-names = "wrapper", "core";
558			interrupts = <42 NRF_DEFAULT_IRQ_PRIORITY>;
559			status = "disabled";
560		};
561	};
562};
563
564&nvic {
565	arm,num-irq-priority-bits = <3>;
566};
567
568&systick {
569	/* Use RTC for system clock, instead of SysTick. */
570	status = "disabled";
571};
572