1/* SPDX-License-Identifier: Apache-2.0 */
2
3#include <arm/armv6-m.dtsi>
4#include <nordic/nrf_common.dtsi>
5#include <zephyr/dt-bindings/adc/nrf-adc.h>
6
7/ {
8	chosen {
9		zephyr,bt-hci = &bt_hci_controller;
10		zephyr,entropy = &rng;
11		zephyr,flash-controller = &flash_controller;
12	};
13
14	cpus {
15		#address-cells = <1>;
16		#size-cells = <0>;
17
18		cpu@0 {
19			device_type = "cpu";
20			compatible = "arm,cortex-m0";
21			reg = <0>;
22		};
23	};
24
25	soc {
26		ficr: ficr@10000000 {
27			compatible = "nordic,nrf-ficr";
28			reg = <0x10000000 0x1000>;
29			#nordic,ficr-cells = <1>;
30			status = "okay";
31		};
32
33		uicr: uicr@10001000 {
34			compatible = "nordic,nrf-uicr";
35			reg = <0x10001000 0x1000>;
36			status = "okay";
37		};
38
39		sram0: memory@20000000 {
40			compatible = "mmio-sram";
41		};
42
43		power: power@40000000 {
44			compatible = "nordic,nrf-power";
45			reg = <0x40000000 0x1000>;
46			interrupts = <0 NRF_DEFAULT_IRQ_PRIORITY>;
47			status = "okay";
48			#address-cells = <1>;
49			#size-cells = <1>;
50
51			gpregret1: gpregret1@4000051c {
52				#address-cells = <1>;
53				#size-cells = <1>;
54				compatible = "nordic,nrf-gpregret";
55				reg = <0x4000051c 0x1>;
56				status = "okay";
57			};
58		};
59
60		clock: clock@40000000 {
61			compatible = "nordic,nrf-clock";
62			reg = <0x40000000 0x1000>;
63			interrupts = <0 NRF_DEFAULT_IRQ_PRIORITY>;
64			status = "okay";
65		};
66
67		nrf_mpu: nrf-mpu@40000000 {
68			compatible = "nordic,nrf-mpu";
69			reg = <0x40000000 0x1000>;
70			status = "okay";
71		};
72
73		radio: radio@40001000 {
74			compatible = "nordic,nrf-radio";
75			reg = <0x40001000 0x1000>;
76			interrupts = <1 NRF_DEFAULT_IRQ_PRIORITY>;
77			status = "okay";
78
79			bt_hci_controller: bt_hci_controller {
80				compatible = "zephyr,bt-hci-ll-sw-split";
81				status = "okay";
82			};
83		};
84
85		uart0: uart@40002000 {
86			compatible = "nordic,nrf-uart";
87			reg = <0x40002000 0x1000>;
88			interrupts = <2 NRF_DEFAULT_IRQ_PRIORITY>;
89			status = "disabled";
90		};
91
92		spi0: spi@40003000 {
93			compatible = "nordic,nrf-spi";
94			#address-cells = <1>;
95			#size-cells = <0>;
96			reg = <0x40003000 0x1000>;
97			interrupts = <3 NRF_DEFAULT_IRQ_PRIORITY>;
98			max-frequency = <DT_FREQ_M(8)>;
99			easydma-maxcnt-bits = <8>;
100			status = "disabled";
101		};
102
103		i2c0: i2c@40003000 {
104			compatible = "nordic,nrf-twi";
105			#address-cells = <1>;
106			#size-cells = <0>;
107			reg = <0x40003000 0x1000>;
108			interrupts = <3 NRF_DEFAULT_IRQ_PRIORITY>;
109			easydma-maxcnt-bits = <8>;
110			status = "disabled";
111		};
112
113		spi1: spi@40004000 {
114			/*
115			 * This spi node can be either SPI or SPIS,
116			 * for the user to pick:
117			 * compatible = "nordic,nrf-spi" or
118			 *              "nordic,nrf-spis".
119			 */
120			compatible = "nordic,nrf-spi";
121			#address-cells = <1>;
122			#size-cells = <0>;
123			reg = <0x40004000 0x1000>;
124			interrupts = <4 NRF_DEFAULT_IRQ_PRIORITY>;
125			max-frequency = <DT_FREQ_M(8)>;
126			easydma-maxcnt-bits = <8>;
127			status = "disabled";
128		};
129
130		i2c1: i2c@40004000 {
131			compatible = "nordic,nrf-twi";
132			#address-cells = <1>;
133			#size-cells = <0>;
134			reg = <0x40004000 0x1000>;
135			interrupts = <4 NRF_DEFAULT_IRQ_PRIORITY>;
136			easydma-maxcnt-bits = <8>;
137			status = "disabled";
138		};
139
140		gpiote: gpiote0: gpiote@40006000 {
141			compatible = "nordic,nrf-gpiote";
142			reg = <0x40006000 0x1000>;
143			interrupts = <6 NRF_DEFAULT_IRQ_PRIORITY>;
144			status = "disabled";
145			instance = <0>;
146		};
147
148		adc: adc@40007000 {
149			compatible = "nordic,nrf-adc";
150			reg = <0x40007000 0x1000>;
151			interrupts = <7 NRF_DEFAULT_IRQ_PRIORITY>;
152			status = "disabled";
153			#io-channel-cells = <1>;
154		};
155
156		timer0: timer@40008000 {
157			compatible = "nordic,nrf-timer";
158			status = "disabled";
159			reg = <0x40008000 0x1000>;
160			cc-num = <4>;
161			max-bit-width = <32>;
162			interrupts = <8 NRF_DEFAULT_IRQ_PRIORITY>;
163			prescaler = <0>;
164		};
165
166		timer1: timer@40009000 {
167			compatible = "nordic,nrf-timer";
168			status = "disabled";
169			reg = <0x40009000 0x1000>;
170			cc-num = <4>;
171			max-bit-width = <16>;
172			interrupts = <9 NRF_DEFAULT_IRQ_PRIORITY>;
173			prescaler = <0>;
174		};
175
176		timer2: timer@4000a000 {
177			compatible = "nordic,nrf-timer";
178			status = "disabled";
179			reg = <0x4000a000 0x1000>;
180			cc-num = <4>;
181			max-bit-width = <16>;
182			interrupts = <10 NRF_DEFAULT_IRQ_PRIORITY>;
183			prescaler = <0>;
184		};
185
186		rtc0: rtc@4000b000 {
187			compatible = "nordic,nrf-rtc";
188			reg = <0x4000b000 0x1000>;
189			cc-num = <3>;
190			interrupts = <11 NRF_DEFAULT_IRQ_PRIORITY>;
191			status = "disabled";
192			clock-frequency = <32768>;
193			prescaler = <1>;
194		};
195
196		temp: temp@4000c000 {
197			compatible = "nordic,nrf-temp";
198			reg = <0x4000c000 0x1000>;
199			interrupts = <12 NRF_DEFAULT_IRQ_PRIORITY>;
200			status = "okay";
201		};
202
203		rng: random@4000d000 {
204			compatible = "nordic,nrf-rng";
205			reg = <0x4000d000 0x1000>;
206			interrupts = <13 NRF_DEFAULT_IRQ_PRIORITY>;
207			status = "okay";
208		};
209
210		ecb: ecb@4000e000 {
211			compatible = "nordic,nrf-ecb";
212			reg = <0x4000e000 0x1000>;
213			interrupts = <14 NRF_DEFAULT_IRQ_PRIORITY>;
214			status = "okay";
215		};
216
217		ccm: ccm@4000f000 {
218			compatible = "nordic,nrf-ccm";
219			reg = <0x4000f000 0x1000>;
220			interrupts = <15 NRF_DEFAULT_IRQ_PRIORITY>;
221			status = "okay";
222		};
223
224		wdt: wdt0: watchdog@40010000 {
225			compatible = "nordic,nrf-wdt";
226			reg = <0x40010000 0x1000>;
227			interrupts = <16 NRF_DEFAULT_IRQ_PRIORITY>;
228			status = "okay";
229		};
230
231		rtc1: rtc@40011000 {
232			compatible = "nordic,nrf-rtc";
233			reg = <0x40011000 0x1000>;
234			cc-num = <4>;
235			interrupts = <17 NRF_DEFAULT_IRQ_PRIORITY>;
236			status = "disabled";
237			clock-frequency = <32768>;
238			prescaler = <1>;
239		};
240
241		qdec: qdec0: qdec@40012000 {
242			compatible = "nordic,nrf-qdec";
243			reg = <0x40012000 0x1000>;
244			interrupts = <18 NRF_DEFAULT_IRQ_PRIORITY>;
245			status = "disabled";
246		};
247
248		comp: comparator@40013000 {
249			compatible = "nordic,nrf-lpcomp";
250			reg = <0x40013000 0x1000>;
251			interrupts = <19 NRF_DEFAULT_IRQ_PRIORITY>;
252			status = "disabled";
253			#io-channel-cells = <1>;
254		};
255
256		swi0: swi@40014000 {
257			compatible = "nordic,nrf-swi";
258			reg = <0x40014000 0x1000>;
259			interrupts = <20 NRF_DEFAULT_IRQ_PRIORITY>;
260			status = "okay";
261		};
262
263		swi1: swi@40015000 {
264			compatible = "nordic,nrf-swi";
265			reg = <0x40015000 0x1000>;
266			interrupts = <21 NRF_DEFAULT_IRQ_PRIORITY>;
267			status = "okay";
268		};
269
270		swi2: swi@40016000 {
271			compatible = "nordic,nrf-swi";
272			reg = <0x40016000 0x1000>;
273			interrupts = <22 NRF_DEFAULT_IRQ_PRIORITY>;
274			status = "okay";
275		};
276
277		swi3: swi@40017000 {
278			compatible = "nordic,nrf-swi";
279			reg = <0x40017000 0x1000>;
280			interrupts = <23 NRF_DEFAULT_IRQ_PRIORITY>;
281			status = "okay";
282		};
283
284		swi4: swi@40018000 {
285			compatible = "nordic,nrf-swi";
286			reg = <0x40018000 0x1000>;
287			interrupts = <24 NRF_DEFAULT_IRQ_PRIORITY>;
288			status = "okay";
289		};
290
291		swi5: swi@40019000 {
292			compatible = "nordic,nrf-swi";
293			reg = <0x40019000 0x1000>;
294			interrupts = <25 NRF_DEFAULT_IRQ_PRIORITY>;
295			status = "okay";
296		};
297
298		flash_controller: flash-controller@4001e000 {
299			compatible = "nordic,nrf51-flash-controller";
300			reg = <0x4001e000 0x1000>;
301
302			#address-cells = <1>;
303			#size-cells = <1>;
304
305
306			flash0: flash@0 {
307				compatible = "soc-nv-flash";
308				erase-block-size = <1024>;
309				write-block-size = <4>;
310			};
311		};
312
313		ppi: ppi@4001f000 {
314			compatible = "nordic,nrf-ppi";
315			reg = <0x4001f000 0x1000>;
316			status = "okay";
317		};
318
319		gpio0: gpio@50000000 {
320			compatible = "nordic,nrf-gpio";
321			gpio-controller;
322			reg = <0x50000000 0x1000>;
323			#gpio-cells = <2>;
324			status = "disabled";
325			port = <0>;
326			gpiote-instance = <&gpiote>;
327		};
328	};
329};
330
331&nvic {
332	arm,num-irq-priority-bits = <2>;
333};
334
335/delete-node/ &systick;
336