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