1/* 2 * Copyright 2024-2025 NXP 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7#include <mem.h> 8#include <arm/armv8-m.dtsi> 9#include <zephyr/dt-bindings/adc/adc.h> 10#include <zephyr/dt-bindings/clock/mcux_lpc_syscon_clock.h> 11#include <zephyr/dt-bindings/gpio/gpio.h> 12#include <zephyr/dt-bindings/memory-attr/memory-attr-arm.h> 13#include <zephyr/dt-bindings/reset/nxp_syscon_reset_common.h> 14 15/ { 16 cpus { 17 #address-cells = <1>; 18 #size-cells = <0>; 19 20 cpu1: cpu@0 { 21 compatible = "arm,cortex-m33f"; 22 reg = <0>; 23 #address-cells = <1>; 24 #size-cells = <1>; 25 26 mpu: mpu@e000ed90 { 27 compatible = "arm,armv8m-mpu"; 28 reg = <0xe000ed90 0x40>; 29 }; 30 }; 31 }; 32 33 soc { 34 sram: sram@10000000 { 35 ranges = <0x0 0x10000000 0x780000 36 0x20000000 0x30000000 0x780000>; 37 }; 38 39 peripheral: peripheral@50000000 { 40 ranges = <0x0 0x50000000 0x10000000>; 41 }; 42 43 xspi2: spi@50411000 { 44 reg = <0x50411000 0x1000>, <0x70000000 DT_SIZE_M(128)>; 45 }; 46 47 }; 48 49 pinctrl: pinctrl { 50 compatible = "nxp,rt-iocon-pinctrl"; 51 }; 52}; 53 54&sram { 55 #address-cells = <1>; 56 #size-cells = <1>; 57 58 /* RT7XX SRAM partitions are shared between code and data. Boards can 59 * override the reg properties of either sram0 or sram_code nodes to 60 * change the balance of SRAM allocation. 61 * 62 * The SRAM region [0x580000-0x5BFFFF] is reserved for shared memory or application data. 63 * The SRAM region [0x5C0000-0x67FFFF] is reserved for CPU1 application. 64 * The SRAM region [0x680000-0x77FFFF] is reserved for HiFi1 application. 65 */ 66 67 sram_code: memory@600000{ 68 compatible = "mmio-sram"; 69 reg = <0x600000 DT_SIZE_K(512)>; 70 }; 71 72 /* This partition is shared with code in RAM */ 73 sram_shared_code: memory@20058000{ 74 compatible = "mmio-sram"; 75 reg = <0x20058000 DT_SIZE_K(256)>; 76 }; 77 78 sram0: memory@205C0000 { 79 compatible = "mmio-sram"; 80 /* Only use 256K, align with SDK */ 81 reg = <0x205C0000 DT_SIZE_K(256)>; 82 }; 83}; 84 85&peripheral { 86 #address-cells = <1>; 87 #size-cells = <1>; 88 /* 89 * Note that the offsets here are relative to the base address. 90 * The base addresses differ between non-secure (0x40000000) 91 * and secure modes (0x50000000). 92 */ 93 94 lpadc0: adc@20c000 { 95 compatible = "nxp,lpc-lpadc"; 96 reg = <0x20c000 0x304>; 97 interrupts = <15 0>; 98 status = "disabled"; 99 clk-divider = <1>; 100 clk-source = <0>; 101 voltage-ref= <1>; 102 calibration-average = <128>; 103 power-level = <0>; 104 offset-value-a = <10>; 105 offset-value-b = <10>; 106 #io-channel-cells = <1>; 107 clocks = <&clkctl3 MCUX_LPADC1_CLK>; 108 }; 109 110 rstctl1: reset@40000 { 111 compatible = "nxp,rstctl"; 112 reg = <0x40000 0x1000>; 113 #reset-cells = <1>; 114 }; 115 116 rstctl2: reset@67000 { 117 compatible = "nxp,rstctl"; 118 reg = <0x67000 0x1000>; 119 #reset-cells = <1>; 120 }; 121 122 rstctl3: reset@60000 { 123 compatible = "nxp,rstctl"; 124 reg = <0x60000 0x1000>; 125 #reset-cells = <1>; 126 }; 127 128 rstctl4: reset@a0000 { 129 compatible = "nxp,rstctl"; 130 reg = <0xa0000 0x1000>; 131 #reset-cells = <1>; 132 }; 133 134 clkctl1: clkctl@41000 { 135 compatible = "nxp,lpc-syscon"; 136 reg = <0x41000 0x1000>; 137 #clock-cells = <1>; 138 }; 139 140 clkctl2: clkctl@65000 { 141 compatible = "nxp,lpc-syscon"; 142 reg = <0x65000 0x1000>; 143 #clock-cells = <1>; 144 }; 145 146 clkctl3: clkctl@61000 { 147 compatible = "nxp,lpc-syscon"; 148 reg = <0x61000 0x1000>; 149 #clock-cells = <1>; 150 }; 151 152 clkctl4: clkctl@a1000 { 153 compatible = "nxp,lpc-syscon"; 154 reg = <0xa1000 0x1000>; 155 #clock-cells = <1>; 156 }; 157 158 ctimer5: ctimer@48000 { 159 compatible = "nxp,lpc-ctimer"; 160 reg = <0x48000 0x1000>; 161 interrupts = <7 0>; 162 status = "disabled"; 163 clk-source = <1>; 164 clocks = <&clkctl1 MCUX_CTIMER5_CLK>; 165 mode = <0>; 166 input = <0>; 167 prescale = <0>; 168 }; 169 170 ctimer6: ctimer@49000 { 171 compatible = "nxp,lpc-ctimer"; 172 reg = <0x49000 0x1000>; 173 interrupts = <8 0>; 174 status = "disabled"; 175 clk-source = <1>; 176 clocks = <&clkctl1 MCUX_CTIMER6_CLK>; 177 mode = <0>; 178 input = <0>; 179 prescale = <0>; 180 }; 181 182 ctimer7: ctimer@4a000 { 183 compatible = "nxp,lpc-ctimer"; 184 reg = <0x4a000 0x1000>; 185 interrupts = <9 0>; 186 status = "disabled"; 187 clk-source = <1>; 188 clocks = <&clkctl1 MCUX_CTIMER7_CLK>; 189 mode = <0>; 190 input = <0>; 191 prescale = <0>; 192 }; 193 194 syscon1: syscon@42000 { 195 compatible = "nxp,lpc-syscon"; 196 reg = <0x42000 0x1000>; 197 #clock-cells = <1>; 198 }; 199 200 syscon2: syscon@66000 { 201 compatible = "nxp,lpc-syscon"; 202 reg = <0x66000 0x1000>; 203 #clock-cells = <1>; 204 }; 205 206 syscon3: syscon@62000 { 207 compatible = "nxp,lpc-syscon"; 208 reg = <0x62000 0x1000>; 209 #clock-cells = <1>; 210 }; 211 212 syscon4: syscon@a2000 { 213 compatible = "nxp,lpc-syscon"; 214 reg = <0xa2000 0x1000>; 215 #clock-cells = <1>; 216 }; 217 218 iocon1: iocon@64000 { 219 compatible = "nxp,lpc-iocon"; 220 reg = <0x64000 0x1000>; 221 status = "okay"; 222 }; 223 224 iocon2: iocon@a5000 { 225 compatible = "nxp,lpc-iocon"; 226 reg = <0xa5000 0x1000>; 227 status = "okay"; 228 }; 229 230 gpio8: gpio@320000 { 231 compatible = "nxp,kinetis-gpio"; 232 status = "disabled"; 233 reg = <0x320000 0x1000>; 234 interrupts = <61 0>,<62 0>; 235 gpio-controller; 236 #gpio-cells = <2>; 237 nxp,kinetis-port = <&gpio8>; 238 gpio-port-offest = <8>; 239 }; 240 241 gpio9: gpio@322000 { 242 compatible = "nxp,kinetis-gpio"; 243 status = "disabled"; 244 reg = <0x322000 0x1000>; 245 interrupts = <63 0>,<64 0>; 246 gpio-controller; 247 #gpio-cells = <2>; 248 nxp,kinetis-port = <&gpio9>; 249 gpio-port-offest = <8>; 250 }; 251 252 gpio10: gpio@324000 { 253 compatible = "nxp,kinetis-gpio"; 254 status = "disabled"; 255 reg = <0x324000 0x1000>; 256 interrupts = <65 0>,<66 0>; 257 gpio-controller; 258 #gpio-cells = <2>; 259 nxp,kinetis-port = <&gpio10>; 260 gpio-port-offest = <8>; 261 }; 262 263 flexcomm17: flexcomm@326000 { 264 compatible = "nxp,lp-flexcomm"; 265 reg = <0x326000 0x1000>; 266 interrupts = <11 0>; 267 status = "disabled"; 268 269 /* Empty ranges property implies parent and child address space is identical */ 270 ranges = <>; 271 #address-cells = <1>; 272 #size-cells = <1>; 273 274 flexcomm17_lpuart17: uart@326000 { 275 compatible = "nxp,lpuart"; 276 reg = <0x326000 0x1000>; 277 clocks = <&clkctl1 MCUX_FLEXCOMM17_CLK>; 278 status = "disabled"; 279 }; 280 flexcomm17_lpspi17: lpspi@326000 { 281 compatible = "nxp,lpspi"; 282 reg = <0x326000 0x1000>; 283 clocks = <&clkctl1 MCUX_FLEXCOMM17_CLK>; 284 #address-cells = <1>; 285 #size-cells = <0>; 286 tx-fifo-size = <8>; 287 rx-fifo-size = <8>; 288 status = "disabled"; 289 }; 290 flexcomm17_lpi2c17: lpi2c@326800 { 291 compatible = "nxp,lpi2c"; 292 reg = <0x326800 0x1000>; 293 clocks = <&clkctl1 MCUX_FLEXCOMM17_CLK>; 294 #address-cells = <1>; 295 #size-cells = <0>; 296 status = "disabled"; 297 }; 298 }; 299 300 flexcomm18: flexcomm@327000 { 301 compatible = "nxp,lp-flexcomm"; 302 reg = <0x327000 0x1000>; 303 interrupts = <12 0>; 304 status = "disabled"; 305 306 /* Empty ranges property implies parent and child address space is identical */ 307 ranges = <>; 308 #address-cells = <1>; 309 #size-cells = <1>; 310 311 flexcomm18_lpuart18: uart@327000 { 312 compatible = "nxp,lpuart"; 313 reg = <0x327000 0x1000>; 314 clocks = <&clkctl1 MCUX_FLEXCOMM18_CLK>; 315 status = "disabled"; 316 }; 317 flexcomm18_lpspi18: lpspi@327000 { 318 compatible = "nxp,lpspi"; 319 reg = <0x327000 0x1000>; 320 clocks = <&clkctl1 MCUX_FLEXCOMM18_CLK>; 321 #address-cells = <1>; 322 #size-cells = <0>; 323 tx-fifo-size = <8>; 324 rx-fifo-size = <8>; 325 status = "disabled"; 326 }; 327 flexcomm18_lpi2c18: lpi2c@327800 { 328 compatible = "nxp,lpi2c"; 329 reg = <0x327800 0x1000>; 330 clocks = <&clkctl1 MCUX_FLEXCOMM18_CLK>; 331 #address-cells = <1>; 332 #size-cells = <0>; 333 status = "disabled"; 334 }; 335 }; 336 337 flexcomm19: flexcomm@328000 { 338 compatible = "nxp,lp-flexcomm"; 339 reg = <0x328000 0x1000>; 340 interrupts = <13 0>; 341 status = "disabled"; 342 343 /* Empty ranges property implies parent and child address space is identical */ 344 ranges = <>; 345 #address-cells = <1>; 346 #size-cells = <1>; 347 348 flexcomm19_lpuart19: uart@328000 { 349 compatible = "nxp,lpuart"; 350 reg = <0x328000 0x1000>; 351 clocks = <&clkctl1 MCUX_FLEXCOMM19_CLK>; 352 status = "disabled"; 353 }; 354 flexcomm19_lpspi19: lpspi@328000 { 355 compatible = "nxp,lpspi"; 356 reg = <0x328000 0x1000>; 357 clocks = <&clkctl1 MCUX_FLEXCOMM19_CLK>; 358 #address-cells = <1>; 359 #size-cells = <0>; 360 tx-fifo-size = <8>; 361 rx-fifo-size = <8>; 362 status = "disabled"; 363 }; 364 flexcomm19_lpi2c19: lpi2c@328800 { 365 compatible = "nxp,lpi2c"; 366 reg = <0x328800 0x1000>; 367 clocks = <&clkctl1 MCUX_FLEXCOMM19_CLK>; 368 #address-cells = <1>; 369 #size-cells = <0>; 370 status = "disabled"; 371 }; 372 }; 373 374 flexcomm20: flexcomm@329000 { 375 compatible = "nxp,lp-flexcomm"; 376 reg = <0x329000 0x1000>; 377 interrupts = <14 0>; 378 status = "disabled"; 379 380 /* Empty ranges property implies parent and child address space is identical */ 381 ranges = <>; 382 #address-cells = <1>; 383 #size-cells = <1>; 384 385 flexcomm20_lpuart20: uart@329000 { 386 compatible = "nxp,lpuart"; 387 reg = <0x329000 0x1000>; 388 clocks = <&clkctl1 MCUX_FLEXCOMM20_CLK>; 389 status = "disabled"; 390 }; 391 flexcomm20_lpspi20: lpspi@329000 { 392 compatible = "nxp,lpspi"; 393 reg = <0x329000 0x1000>; 394 clocks = <&clkctl1 MCUX_FLEXCOMM20_CLK>; 395 #address-cells = <1>; 396 #size-cells = <0>; 397 tx-fifo-size = <8>; 398 rx-fifo-size = <8>; 399 status = "disabled"; 400 }; 401 flexcomm20_lpi2c20: lpi2c@329800 { 402 compatible = "nxp,lpi2c"; 403 reg = <0x329800 0x1000>; 404 clocks = <&clkctl1 MCUX_FLEXCOMM20_CLK>; 405 #address-cells = <1>; 406 #size-cells = <0>; 407 status = "disabled"; 408 }; 409 }; 410 411 /* LPFlexcomm15 only support LPI2C function. */ 412 lpi2c15: i2c@213000 { 413 compatible = "nxp,lpi2c"; 414 reg = <0x213000 0x1000>; 415 interrupts = <14 0>; 416 #address-cells = <1>; 417 #size-cells = <0>; 418 clocks = <&clkctl4 MCUX_LPI2C15_CLK>; 419 status = "disabled"; 420 }; 421 422 os_timer_cpu1: timers@209000 { 423 compatible = "nxp,os-timer"; 424 reg = <0x209000 0x1000>; 425 interrupts = <30 0>; 426 status = "disabled"; 427 }; 428}; 429 430&nvic { 431 arm,num-irq-priority-bits = <3>; 432}; 433 434&systick { 435 /* 436 * RT700 cm33_cpu1 relies by default on the OS Timer for system 437 * clock implementation, so the SysTick node is not to be enabled. 438 */ 439 status = "disabled"; 440}; 441