1/*
2 * Copyright (c) 2024 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#include <mem.h>
8#include <nordic/nrf_common.dtsi>
9
10/delete-node/ &sw_pwm;
11
12/* Domain IDs. Can be used to specify channel links in IPCT nodes. */
13#define NRF_DOMAIN_ID_APPLICATION 0
14#define NRF_DOMAIN_ID_FLPR 1
15
16/ {
17	#address-cells = <1>;
18	#size-cells = <1>;
19
20	cpus {
21		#address-cells = <1>;
22		#size-cells = <0>;
23
24		cpuapp: cpu@0 {
25			compatible = "arm,cortex-m33f";
26			reg = <0>;
27			device_type = "cpu";
28			clock-frequency = <DT_FREQ_M(128)>;
29			#address-cells = <1>;
30			#size-cells = <1>;
31			itm: itm@e0000000 {
32				compatible = "arm,armv8m-itm";
33				reg = <0xe0000000 0x1000>;
34				swo-ref-frequency = <DT_FREQ_M(128)>;
35			};
36		};
37
38		cpuflpr: cpu@1 {
39			compatible = "nordic,vpr";
40			reg = <1>;
41			device_type = "cpu";
42			clock-frequency = <DT_FREQ_M(128)>;
43			riscv,isa = "rv32emc";
44			nordic,bus-width = <32>;
45		};
46	};
47
48	clocks {
49		lfxo: lfxo {
50			compatible = "nordic,nrf-lfxo";
51			#clock-cells = <0>;
52			clock-frequency = <32768>;
53		};
54
55		hfxo: hfxo {
56			compatible = "nordic,nrf-hfxo";
57			#clock-cells = <0>;
58			clock-frequency = <DT_FREQ_M(32)>;
59		};
60	};
61
62	soc {
63		#address-cells = <1>;
64		#size-cells = <1>;
65
66#ifdef USE_NON_SECURE_ADDRESS_MAP
67		/* intentionally empty because UICR is hardware fixed to Secure */
68#else
69		uicr: uicr@ffd000 {
70			compatible = "nordic,nrf-uicr";
71			reg = <0xffd000 0x1000>;
72		};
73#endif
74		ficr: ficr@ffc000 {
75			compatible = "nordic,nrf-ficr";
76			reg = <0xffc000 0x1000>;
77			#nordic,ficr-cells = <1>;
78		};
79
80		cpuapp_sram: memory@20000000 {
81			compatible = "mmio-sram";
82			reg = <0x20000000 DT_SIZE_K(188)>;
83			#address-cells = <1>;
84			#size-cells = <1>;
85			ranges = <0x0 0x20000000 0x2f000>;
86		};
87
88		cpuflpr_sram: memory@2002f000 {
89			compatible = "mmio-sram";
90			reg = <0x2002f000 DT_SIZE_K(68)>;
91			#address-cells = <1>;
92			#size-cells = <1>;
93			ranges = <0x0 0x2002f000 0x11000>;
94		};
95
96#ifdef USE_NON_SECURE_ADDRESS_MAP
97		global_peripherals: peripheral@40000000 {
98			#address-cells = <1>;
99			#size-cells = <1>;
100			ranges = <0x0 0x40000000 0x10000000>;
101#else
102		global_peripherals: peripheral@50000000 {
103			#address-cells = <1>;
104			#size-cells = <1>;
105			ranges = <0x0 0x50000000 0x10000000>;
106#endif
107
108			dppic00: dppic@42000 {
109				compatible = "nordic,nrf-dppic";
110				reg = <0x42000 0x808>;
111				status = "disabled";
112			};
113
114			spi00: spi@4a000 {
115				/*
116				 * This spi node can be either SPIM or SPIS,
117				 * for the user to pick:
118				 * compatible = "nordic,nrf-spim" or
119				 *              "nordic,nrf-spis".
120				 */
121				compatible = "nordic,nrf-spim";
122				#address-cells = <1>;
123				#size-cells = <0>;
124				reg = <0x4a000 0x1000>;
125				interrupts = <74 NRF_DEFAULT_IRQ_PRIORITY>;
126				max-frequency = <DT_FREQ_M(32)>;
127				easydma-maxcnt-bits = <16>;
128				rx-delay-supported;
129				rx-delay = <1>;
130				status = "disabled";
131			};
132
133			uart00: uart@4a000 {
134				compatible = "nordic,nrf-uarte";
135				reg = <0x4a000 0x1000>;
136				interrupts = <74 NRF_DEFAULT_IRQ_PRIORITY>;
137				status = "disabled";
138			};
139
140			cpuflpr_vpr: vpr@4c000 {
141				compatible = "nordic,nrf-vpr-coprocessor";
142				reg = <0x4c000 0x1000>;
143				ranges = <0x0 0x4c000 0x1000>;
144				#address-cells = <1>;
145				#size-cells = <1>;
146				status = "disabled";
147
148				cpuflpr_clic: interrupt-controller@f0000000 {
149					compatible = "nordic,nrf-clic";
150					reg = <0xf0000000 0x1780>;
151					interrupt-controller;
152					#interrupt-cells = <2>;
153					#address-cells = <1>;
154					status = "disabled";
155				};
156			};
157
158			gpio2: gpio@50400 {
159				compatible = "nordic,nrf-gpio";
160				gpio-controller;
161				reg = <0x50400 0x300>;
162				#gpio-cells = <2>;
163				ngpios = <11>;
164				status = "disabled";
165				port = <2>;
166			};
167
168			timer00: timer@55000 {
169				compatible = "nordic,nrf-timer";
170				status = "disabled";
171				reg = <0x55000 0x1000>;
172				cc-num = <6>;
173				max-bit-width = <32>;
174				interrupts = <85 NRF_DEFAULT_IRQ_PRIORITY>;
175				max-frequency = <DT_FREQ_M(128)>;
176				prescaler = <0>;
177			};
178
179			dppic10: dppic@82000 {
180				compatible = "nordic,nrf-dppic";
181				reg = <0x82000 0x808>;
182				status = "disabled";
183			};
184
185			timer10: timer@85000 {
186				compatible = "nordic,nrf-timer";
187				status = "disabled";
188				reg = <0x85000 0x1000>;
189				cc-num = <8>;
190				max-bit-width = <32>;
191				interrupts = <133 NRF_DEFAULT_IRQ_PRIORITY>;
192				max-frequency = <DT_FREQ_M(32)>;
193				prescaler = <0>;
194			};
195
196			egu10: egu@87000 {
197				compatible = "nordic,nrf-egu";
198				reg = <0x87000 0x1000>;
199				interrupts = <135 NRF_DEFAULT_IRQ_PRIORITY>;
200				status = "disabled";
201			};
202
203			radio: radio@8a000 {
204				compatible = "nordic,nrf-radio";
205				reg = <0x8a000 0x1000>;
206				interrupts = <138 NRF_DEFAULT_IRQ_PRIORITY>;
207				status = "disabled";
208				dfe-supported;
209				ieee802154-supported;
210				ble-2mbps-supported;
211				ble-coded-phy-supported;
212
213				ieee802154: ieee802154 {
214					compatible = "nordic,nrf-ieee802154";
215					status = "disabled";
216				};
217
218				/* Note: In the nRF Connect SDK the SoftDevice Controller
219				 * is added and set as the default Bluetooth Controller.
220				 */
221				bt_hci_controller: bt_hci_controller {
222					compatible = "zephyr,bt-hci-ll-sw-split";
223					status = "disabled";
224				};
225			};
226
227			dppic20: dppic@c2000 {
228				compatible = "nordic,nrf-dppic";
229				reg = <0xc2000 0x808>;
230				status = "disabled";
231			};
232
233			i2c20: i2c@c6000 {
234				compatible = "nordic,nrf-twim";
235				#address-cells = <1>;
236				#size-cells = <0>;
237				reg = <0xc6000 0x1000>;
238				clock-frequency = <I2C_BITRATE_STANDARD>;
239				interrupts = <198 NRF_DEFAULT_IRQ_PRIORITY>;
240				easydma-maxcnt-bits = <16>;
241				status = "disabled";
242			};
243
244			spi20: spi@c6000 {
245				/*
246				 * This spi node can be either SPIM or SPIS,
247				 * for the user to pick:
248				 * compatible = "nordic,nrf-spim" or
249				 *              "nordic,nrf-spis".
250				 */
251				compatible = "nordic,nrf-spim";
252				#address-cells = <1>;
253				#size-cells = <0>;
254				reg = <0xc6000 0x1000>;
255				interrupts = <198 NRF_DEFAULT_IRQ_PRIORITY>;
256				max-frequency = <DT_FREQ_M(8)>;
257				easydma-maxcnt-bits = <16>;
258				rx-delay-supported;
259				rx-delay = <1>;
260				status = "disabled";
261			};
262
263			uart20: uart@c6000 {
264				compatible = "nordic,nrf-uarte";
265				reg = <0xc6000 0x1000>;
266				interrupts = <198 NRF_DEFAULT_IRQ_PRIORITY>;
267				status = "disabled";
268			};
269
270			i2c21: i2c@c7000 {
271				compatible = "nordic,nrf-twim";
272				#address-cells = <1>;
273				#size-cells = <0>;
274				reg = <0xc7000 0x1000>;
275				clock-frequency = <I2C_BITRATE_STANDARD>;
276				interrupts = <199 NRF_DEFAULT_IRQ_PRIORITY>;
277				easydma-maxcnt-bits = <16>;
278				status = "disabled";
279			};
280
281			spi21: spi@c7000 {
282				/*
283				 * This spi node can be either SPIM or SPIS,
284				 * for the user to pick:
285				 * compatible = "nordic,nrf-spim" or
286				 *              "nordic,nrf-spis".
287				 */
288				compatible = "nordic,nrf-spim";
289				#address-cells = <1>;
290				#size-cells = <0>;
291				reg = <0xc7000 0x1000>;
292				interrupts = <199 NRF_DEFAULT_IRQ_PRIORITY>;
293				max-frequency = <DT_FREQ_M(8)>;
294				easydma-maxcnt-bits = <16>;
295				rx-delay-supported;
296				rx-delay = <1>;
297				status = "disabled";
298			};
299
300			uart21: uart@c7000 {
301				compatible = "nordic,nrf-uarte";
302				reg = <0xc7000 0x1000>;
303				interrupts = <199 NRF_DEFAULT_IRQ_PRIORITY>;
304				status = "disabled";
305			};
306
307			i2c22: i2c@c8000 {
308				compatible = "nordic,nrf-twim";
309				#address-cells = <1>;
310				#size-cells = <0>;
311				reg = <0xc8000 0x1000>;
312				clock-frequency = <I2C_BITRATE_STANDARD>;
313				interrupts = <200 NRF_DEFAULT_IRQ_PRIORITY>;
314				easydma-maxcnt-bits = <16>;
315				status = "disabled";
316			};
317
318			spi22: spi@c8000 {
319				/*
320				 * This spi node can be either SPIM or SPIS,
321				 * for the user to pick:
322				 * compatible = "nordic,nrf-spim" or
323				 *              "nordic,nrf-spis".
324				 */
325				compatible = "nordic,nrf-spim";
326				#address-cells = <1>;
327				#size-cells = <0>;
328				reg = <0xc8000 0x1000>;
329				interrupts = <200 NRF_DEFAULT_IRQ_PRIORITY>;
330				max-frequency = <DT_FREQ_M(8)>;
331				easydma-maxcnt-bits = <16>;
332				rx-delay-supported;
333				rx-delay = <1>;
334				status = "disabled";
335			};
336
337			uart22: uart@c8000 {
338				compatible = "nordic,nrf-uarte";
339				reg = <0xc8000 0x1000>;
340				interrupts = <200 NRF_DEFAULT_IRQ_PRIORITY>;
341				status = "disabled";
342			};
343
344			egu20: egu@c9000 {
345				compatible = "nordic,nrf-egu";
346				reg = <0xc9000 0x1000>;
347				interrupts = <201 NRF_DEFAULT_IRQ_PRIORITY>;
348				status = "disabled";
349			};
350
351			timer20: timer@ca000 {
352				compatible = "nordic,nrf-timer";
353				status = "disabled";
354				reg = <0xca000 0x1000>;
355				cc-num = <6>;
356				max-bit-width = <32>;
357				interrupts = <202 NRF_DEFAULT_IRQ_PRIORITY>;
358				prescaler = <0>;
359			};
360
361			timer21: timer@cb000 {
362				compatible = "nordic,nrf-timer";
363				status = "disabled";
364				reg = <0xcb000 0x1000>;
365				cc-num = <6>;
366				max-bit-width = <32>;
367				interrupts = <203 NRF_DEFAULT_IRQ_PRIORITY>;
368				prescaler = <0>;
369			};
370
371			timer22: timer@cc000 {
372				compatible = "nordic,nrf-timer";
373				status = "disabled";
374				reg = <0xcc000 0x1000>;
375				cc-num = <6>;
376				max-bit-width = <32>;
377				interrupts = <204 NRF_DEFAULT_IRQ_PRIORITY>;
378				prescaler = <0>;
379			};
380
381			timer23: timer@cd000 {
382				compatible = "nordic,nrf-timer";
383				status = "disabled";
384				reg = <0xcd000 0x1000>;
385				cc-num = <6>;
386				max-bit-width = <32>;
387				interrupts = <205 NRF_DEFAULT_IRQ_PRIORITY>;
388				prescaler = <0>;
389			};
390
391			timer24: timer@ce000 {
392				compatible = "nordic,nrf-timer";
393				status = "disabled";
394				reg = <0xce000 0x1000>;
395				cc-num = <6>;
396				max-bit-width = <32>;
397				interrupts = <206 NRF_DEFAULT_IRQ_PRIORITY>;
398				prescaler = <0>;
399			};
400
401			pwm20: pwm@d2000 {
402				compatible = "nordic,nrf-pwm";
403				status = "disabled";
404				reg = <0xd2000 0x1000>;
405				interrupts = <210 NRF_DEFAULT_IRQ_PRIORITY>;
406				#pwm-cells = <3>;
407			};
408
409			pwm21: pwm@d3000 {
410				compatible = "nordic,nrf-pwm";
411				status = "disabled";
412				reg = <0xd3000 0x1000>;
413				interrupts = <211 NRF_DEFAULT_IRQ_PRIORITY>;
414				#pwm-cells = <3>;
415			};
416
417			pwm22: pwm@d4000 {
418				compatible = "nordic,nrf-pwm";
419				status = "disabled";
420				reg = <0xd4000 0x1000>;
421				interrupts = <212 NRF_DEFAULT_IRQ_PRIORITY>;
422				#pwm-cells = <3>;
423			};
424
425			adc: adc@d5000 {
426				compatible = "nordic,nrf-saadc";
427				reg = <0xd5000 0x1000>;
428				interrupts = <213 NRF_DEFAULT_IRQ_PRIORITY>;
429				status = "disabled";
430				#io-channel-cells = <1>;
431			};
432
433			nfct: nfct@d6000 {
434				compatible = "nordic,nrf-nfct";
435				reg = <0xd6000 0x1000>;
436				interrupts = <214 NRF_DEFAULT_IRQ_PRIORITY>;
437				status = "disabled";
438			};
439
440			temp: temp@d7000 {
441				compatible = "nordic,nrf-temp";
442				reg = <0xd7000 0x1000>;
443				interrupts = <215 NRF_DEFAULT_IRQ_PRIORITY>;
444				status = "disabled";
445			};
446
447			gpio1: gpio@d8200 {
448				compatible = "nordic,nrf-gpio";
449				gpio-controller;
450				reg = <0xd8200 0x300>;
451				#gpio-cells = <2>;
452				ngpios = <16>;
453				status = "disabled";
454				port = <1>;
455				gpiote-instance = <&gpiote20>;
456			};
457
458			gpiote20: gpiote@da000 {
459				compatible = "nordic,nrf-gpiote";
460				reg = <0xda000 0x1000>;
461				status = "disabled";
462				instance = <20>;
463			};
464
465			i2s20: i2s@dd000 {
466				compatible = "nordic,nrf-i2s";
467				#address-cells = <1>;
468				#size-cells = <0>;
469				reg = <0xdd000 0x1000>;
470				interrupts = <221 NRF_DEFAULT_IRQ_PRIORITY>;
471				status = "disabled";
472			};
473
474			qdec20: qdec@e0000 {
475				compatible = "nordic,nrf-qdec";
476				reg = <0xe0000 0x1000>;
477				interrupts = <224 NRF_DEFAULT_IRQ_PRIORITY>;
478				status = "disabled";
479			};
480
481			qdec21: qdec@e1000 {
482				compatible = "nordic,nrf-qdec";
483				reg = <0xe1000 0x1000>;
484				interrupts = <225 NRF_DEFAULT_IRQ_PRIORITY>;
485				status = "disabled";
486			};
487
488			grtc: grtc@e2000 {
489				compatible = "nordic,nrf-grtc";
490				reg = <0xe2000 0x1000>;
491				cc-num = <12>;
492				status = "disabled";
493			};
494
495			dppic30: dppic@102000 {
496				compatible = "nordic,nrf-dppic";
497				reg = <0x102000 0x808>;
498				status = "disabled";
499			};
500
501			i2c30: i2c@104000 {
502				compatible = "nordic,nrf-twim";
503				#address-cells = <1>;
504				#size-cells = <0>;
505				reg = <0x104000 0x1000>;
506				clock-frequency = <I2C_BITRATE_STANDARD>;
507				interrupts = <260 NRF_DEFAULT_IRQ_PRIORITY>;
508				easydma-maxcnt-bits = <16>;
509				status = "disabled";
510			};
511
512			spi30: spi@104000 {
513				/*
514				 * This spi node can be either SPIM or SPIS,
515				 * for the user to pick:
516				 * compatible = "nordic,nrf-spim" or
517				 *              "nordic,nrf-spis".
518				 */
519				compatible = "nordic,nrf-spim";
520				#address-cells = <1>;
521				#size-cells = <0>;
522				reg = <0x104000 0x1000>;
523				interrupts = <260 NRF_DEFAULT_IRQ_PRIORITY>;
524				max-frequency = <DT_FREQ_M(8)>;
525				easydma-maxcnt-bits = <16>;
526				rx-delay-supported;
527				rx-delay = <1>;
528				status = "disabled";
529			};
530
531			uart30: uart@104000 {
532				compatible = "nordic,nrf-uarte";
533				reg = <0x104000 0x1000>;
534				interrupts = <260 NRF_DEFAULT_IRQ_PRIORITY>;
535				status = "disabled";
536			};
537
538#ifdef USE_NON_SECURE_ADDRESS_MAP
539			/* intentionally empty because WDT30 is hardware fixed to Secure */
540#else
541			wdt30: watchdog@108000 {
542				compatible = "nordic,nrf-wdt";
543				reg = <0x108000 0x620>;
544				interrupts = <264 NRF_DEFAULT_IRQ_PRIORITY>;
545				status = "disabled";
546			};
547#endif
548
549			wdt31: watchdog@109000 {
550				compatible = "nordic,nrf-wdt";
551				reg = <0x109000 0x620>;
552				interrupts = <265 NRF_DEFAULT_IRQ_PRIORITY>;
553				status = "disabled";
554			};
555
556			gpio0: gpio@10a000 {
557				compatible = "nordic,nrf-gpio";
558				gpio-controller;
559				reg = <0x10a000 0x300>;
560				#gpio-cells = <2>;
561				ngpios = <5>;
562				status = "disabled";
563				port = <0>;
564				gpiote-instance = <&gpiote30>;
565			};
566
567			gpiote30: gpiote@10c000 {
568				compatible = "nordic,nrf-gpiote";
569				reg = <0x10c000 0x1000>;
570				status = "disabled";
571				instance = <30>;
572			};
573
574			clock: clock@10e000 {
575				compatible = "nordic,nrf-clock";
576				reg = <0x10e000 0x1000>;
577				interrupts = <270 NRF_DEFAULT_IRQ_PRIORITY>;
578				status = "disabled";
579			};
580		};
581
582		rram_controller: rram-controller@5004b000 {
583			compatible = "nordic,rram-controller";
584			reg = <0x5004b000 0x1000>;
585			#address-cells = <1>;
586			#size-cells = <1>;
587			interrupts = <75 NRF_DEFAULT_IRQ_PRIORITY>;
588
589			cpuapp_rram: rram@0 {
590				compatible = "soc-nv-flash";
591				reg = <0x0 DT_SIZE_K(1428)>;
592				erase-block-size = <4096>;
593				write-block-size = <16>;
594			};
595			cpuflpr_rram: rram@165000 {
596				compatible = "soc-nv-flash";
597				reg = <0x165000 DT_SIZE_K(96)>;
598				erase-block-size = <4096>;
599				write-block-size = <16>;
600			};
601		};
602
603		cpuapp_ppb: cpuapp-ppb-bus {
604			#address-cells = <1>;
605			#size-cells = <1>;
606
607			cpuapp_nvic: interrupt-controller@e000e100  {
608				#address-cells = <1>;
609				compatible = "arm,v8m-nvic";
610				reg = <0xe000e100 0xc00>;
611				arm,num-irq-priority-bits = <3>;
612				interrupt-controller;
613				#interrupt-cells = <2>;
614			};
615
616			cpuapp_systick: timer@e000e010 {
617				compatible = "arm,armv8m-systick";
618				reg = <0xe000e010 0x10>;
619				status = "disabled";
620			};
621		};
622	};
623};
624