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