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