1/* 2 * Copyright 2020-2022,2024 NXP 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7#include <mem.h> 8#include <freq.h> 9#include <arm64/armv8-a.dtsi> 10#include <zephyr/dt-bindings/clock/imx_ccm.h> 11#include <zephyr/dt-bindings/interrupt-controller/arm-gic.h> 12#include <zephyr/dt-bindings/rdc/imx_rdc.h> 13 14/ { 15 #address-cells = <1>; 16 #size-cells = <1>; 17 18 chosen { 19 zephyr,console = &uart2; 20 zephyr,shell-uart = &uart2; 21 }; 22 23 cpus { 24 #address-cells = <1>; 25 #size-cells = <0>; 26 27 cpu@0 { 28 device_type = "cpu"; 29 compatible = "arm,cortex-a53"; 30 reg = <0>; 31 }; 32 33 cpu@1 { 34 device_type = "cpu"; 35 compatible = "arm,cortex-a53"; 36 reg = <1>; 37 }; 38 39 cpu@2 { 40 device_type = "cpu"; 41 compatible = "arm,cortex-a53"; 42 reg = <2>; 43 }; 44 45 cpu@3 { 46 device_type = "cpu"; 47 compatible = "arm,cortex-a53"; 48 reg = <3>; 49 }; 50 51 }; 52 53 arch_timer: timer { 54 compatible = "arm,armv8-timer"; 55 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL 56 IRQ_DEFAULT_PRIORITY>, 57 <GIC_PPI 14 IRQ_TYPE_LEVEL 58 IRQ_DEFAULT_PRIORITY>, 59 <GIC_PPI 11 IRQ_TYPE_LEVEL 60 IRQ_DEFAULT_PRIORITY>, 61 <GIC_PPI 10 IRQ_TYPE_LEVEL 62 IRQ_DEFAULT_PRIORITY>; 63 interrupt-parent = <&gic>; 64 }; 65 66 gic: interrupt-controller@38800000 { 67 compatible = "arm,gic-v3", "arm,gic"; 68 reg = <0x38800000 0x10000>, /* GIC Dist */ 69 <0x38880000 0xc0000>; /* GICR (RD_base + SGI_base) */ 70 interrupt-controller; 71 #interrupt-cells = <4>; 72 status = "okay"; 73 }; 74 75 gpio1: gpio@30200000 { 76 compatible = "nxp,imx-gpio"; 77 reg = <0x30200000 DT_SIZE_K(64)>; 78 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>, 79 <GIC_SPI 65 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; 80 interrupt-names = "irq_0", "irq_1"; 81 interrupt-parent = <&gic>; 82 rdc = <RDC_DOMAIN_PERM(A53_DOMAIN_ID, RDC_DOMAIN_PERM_RW)>; 83 gpio-controller; 84 #gpio-cells = <2>; 85 ngpios = <30>; 86 status = "disabled"; 87 }; 88 89 gpio2: gpio@30210000 { 90 compatible = "nxp,imx-gpio"; 91 reg = <0x30210000 DT_SIZE_K(64)>; 92 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>, 93 <GIC_SPI 67 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; 94 interrupt-names = "irq_0", "irq_1"; 95 interrupt-parent = <&gic>; 96 rdc = <RDC_DOMAIN_PERM(A53_DOMAIN_ID, RDC_DOMAIN_PERM_RW)>; 97 gpio-controller; 98 #gpio-cells = <2>; 99 ngpios = <21>; 100 status = "disabled"; 101 }; 102 103 gpio3: gpio@30220000 { 104 compatible = "nxp,imx-gpio"; 105 reg = <0x30220000 DT_SIZE_K(64)>; 106 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>, 107 <GIC_SPI 69 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; 108 interrupt-names = "irq_0", "irq_1"; 109 interrupt-parent = <&gic>; 110 rdc = <RDC_DOMAIN_PERM(A53_DOMAIN_ID, RDC_DOMAIN_PERM_RW)>; 111 gpio-controller; 112 #gpio-cells = <2>; 113 ngpios = <26>; 114 status = "disabled"; 115 }; 116 117 gpio4: gpio@30230000 { 118 compatible = "nxp,imx-gpio"; 119 reg = <0x30230000 DT_SIZE_K(64)>; 120 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>, 121 <GIC_SPI 71 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; 122 interrupt-names = "irq_0", "irq_1"; 123 interrupt-parent = <&gic>; 124 rdc = <RDC_DOMAIN_PERM(A53_DOMAIN_ID, RDC_DOMAIN_PERM_RW)>; 125 gpio-controller; 126 #gpio-cells = <2>; 127 ngpios = <32>; 128 status = "disabled"; 129 }; 130 131 gpio5: gpio@30240000 { 132 compatible = "nxp,imx-gpio"; 133 reg = <0x30240000 DT_SIZE_K(64)>; 134 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>, 135 <GIC_SPI 73 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; 136 interrupt-names = "irq_0", "irq_1"; 137 interrupt-parent = <&gic>; 138 rdc = <RDC_DOMAIN_PERM(A53_DOMAIN_ID, RDC_DOMAIN_PERM_RW)>; 139 gpio-controller; 140 #gpio-cells = <2>; 141 ngpios = <30>; 142 status = "disabled"; 143 }; 144 145 gpt1: gpt@302d0000 { 146 compatible = "nxp,imx-gpt"; 147 reg = <0x302d0000 DT_SIZE_K(64)>; 148 interrupt-parent = <&gic>; 149 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL 150 IRQ_DEFAULT_PRIORITY>; 151 gptfreq = <24000000>; 152 clocks = <&ccm IMX_CCM_GPT_IPG_CLK 0x6C 20>; 153 status = "disabled"; 154 }; 155 156 gpt2: gpt@302e0000 { 157 compatible = "nxp,imx-gpt"; 158 reg = <0x302e0000 DT_SIZE_K(64)>; 159 interrupt-parent = <&gic>; 160 interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL 161 IRQ_DEFAULT_PRIORITY>; 162 gptfreq = <24000000>; 163 clocks = <&ccm IMX_CCM_GPT_IPG_CLK 0x68 24>; 164 status = "disabled"; 165 }; 166 167 iomuxc: iomuxc@30330000 { 168 compatible = "nxp,imx-iomuxc"; 169 reg = <0x30330000 DT_SIZE_K(64)>; 170 status = "okay"; 171 pinctrl: pinctrl { 172 status = "okay"; 173 compatible = "nxp,imx8mp-pinctrl"; 174 }; 175 }; 176 177 ana_pll: ana_pll@30360000 { 178 compatible = "nxp,imx-ana"; 179 reg = <0x30360000 DT_SIZE_K(64)>; 180 }; 181 182 ccm: ccm@30380000 { 183 compatible = "nxp,imx-ccm"; 184 reg = <0x30380000 DT_SIZE_K(64)>; 185 #clock-cells = <3>; 186 }; 187 188 uart2: serial@30890000 { 189 compatible = "nxp,imx-iuart"; 190 reg = <0x30890000 DT_SIZE_K(64)>; 191 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; 192 interrupt-names = "irq_0"; 193 interrupt-parent = <&gic>; 194 clocks = <&ccm IMX_CCM_UART2_CLK 0x6c 24>; 195 rdc = <(RDC_DOMAIN_PERM(A53_DOMAIN_ID, RDC_DOMAIN_PERM_RW)|\ 196 RDC_DOMAIN_PERM(M4_DOMAIN_ID, RDC_DOMAIN_PERM_RW))>; 197 status = "disabled"; 198 }; 199 200 uart4: serial@30a60000 { 201 compatible = "nxp,imx-iuart"; 202 reg = <0x30a60000 DT_SIZE_K(64)>; 203 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; 204 interrupt-names = "irq_0"; 205 interrupt-parent = <&gic>; 206 clocks = <&ccm IMX_CCM_UART4_CLK 0x6c 24>; 207 rdc = <(RDC_DOMAIN_PERM(A53_DOMAIN_ID, RDC_DOMAIN_PERM_RW)|\ 208 RDC_DOMAIN_PERM(M4_DOMAIN_ID, RDC_DOMAIN_PERM_RW))>; 209 status = "disabled"; 210 }; 211 212 rdc: rdc@303d0000 { 213 compatible = "nxp,rdc"; 214 reg = <0x303d0000 DT_SIZE_K(64)>; 215 }; 216 217 enet: enet@30be0000 { 218 compatible = "nxp,enet1g"; 219 reg = <0x30be0000 DT_SIZE_K(64)>; 220 clocks = <&ccm IMX_CCM_ENET_CLK 0 0>; 221 rdc = <RDC_DOMAIN_PERM(A53_DOMAIN_ID, RDC_DOMAIN_PERM_RW)>; 222 status = "disabled"; 223 224 enet_mac: ethernet { 225 compatible = "nxp,enet-mac"; 226 interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; 227 interrupt-names = "COMMON"; 228 interrupt-parent = <&gic>; 229 nxp,mdio = <&enet_mdio>; 230 nxp,ptp-clock = <&enet_ptp_clock>; 231 status = "disabled"; 232 }; 233 enet_mdio: mdio { 234 compatible = "nxp,enet-mdio"; 235 #address-cells = <1>; 236 #size-cells = <0>; 237 status = "disabled"; 238 }; 239 enet_ptp_clock: ptp_clock { 240 compatible = "nxp,enet-ptp-clock"; 241 interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>; 242 interrupt-parent = <&gic>; 243 clocks = <&ccm IMX_CCM_ENET_PLL 0 0>; 244 status = "disabled"; 245 }; 246 }; 247 248}; 249 250/* 251 * GPIO pinmux options. These options define the pinmux settings 252 * for GPIO ports on the package, so that the GPIO driver can 253 * select GPIO mux options during GPIO configuration. 254 */ 255 256&gpio1{ 257 pinmux = <&iomuxc_gpio1_io00_gpio_io_gpio1_io00>, 258 <&iomuxc_gpio1_io01_gpio_io_gpio1_io01>, 259 <&iomuxc_gpio1_io02_gpio_io_gpio1_io02>, 260 <&iomuxc_gpio1_io03_gpio_io_gpio1_io03>, 261 <&iomuxc_gpio1_io04_gpio_io_gpio1_io04>, 262 <&iomuxc_gpio1_io05_gpio_io_gpio1_io05>, 263 <&iomuxc_gpio1_io06_gpio_io_gpio1_io06>, 264 <&iomuxc_gpio1_io07_gpio_io_gpio1_io07>, 265 <&iomuxc_gpio1_io08_gpio_io_gpio1_io08>, 266 <&iomuxc_gpio1_io09_gpio_io_gpio1_io09>, 267 <&iomuxc_gpio1_io10_gpio_io_gpio1_io10>, 268 <&iomuxc_gpio1_io11_gpio_io_gpio1_io11>, 269 <&iomuxc_gpio1_io12_gpio_io_gpio1_io12>, 270 <&iomuxc_gpio1_io13_gpio_io_gpio1_io13>, 271 <&iomuxc_gpio1_io14_gpio_io_gpio1_io14>, 272 <&iomuxc_gpio1_io15_gpio_io_gpio1_io15>, 273 <&iomuxc_enet_mdc_gpio_io_gpio1_io16>, 274 <&iomuxc_enet_mdio_gpio_io_gpio1_io17>, 275 <&iomuxc_enet_td3_gpio_io_gpio1_io18>, 276 <&iomuxc_enet_td2_gpio_io_gpio1_io19>, 277 <&iomuxc_enet_td1_gpio_io_gpio1_io20>, 278 <&iomuxc_enet_td0_gpio_io_gpio1_io21>, 279 <&iomuxc_enet_tx_ctl_gpio_io_gpio1_io22>, 280 <&iomuxc_enet_txc_gpio_io_gpio1_io23>, 281 <&iomuxc_enet_rx_ctl_gpio_io_gpio1_io24>, 282 <&iomuxc_enet_rxc_gpio_io_gpio1_io25>, 283 <&iomuxc_enet_rd0_gpio_io_gpio1_io26>, 284 <&iomuxc_enet_rd1_gpio_io_gpio1_io27>, 285 <&iomuxc_enet_rd2_gpio_io_gpio1_io28>, 286 <&iomuxc_enet_rd3_gpio_io_gpio1_io29>; 287}; 288 289&gpio2{ 290 pinmux = <&iomuxc_sd1_clk_gpio_io_gpio2_io00>, 291 <&iomuxc_sd1_cmd_gpio_io_gpio2_io01>, 292 <&iomuxc_sd1_data0_gpio_io_gpio2_io02>, 293 <&iomuxc_sd1_data1_gpio_io_gpio2_io03>, 294 <&iomuxc_sd1_data2_gpio_io_gpio2_io04>, 295 <&iomuxc_sd1_data3_gpio_io_gpio2_io05>, 296 <&iomuxc_sd1_data4_gpio_io_gpio2_io06>, 297 <&iomuxc_sd1_data5_gpio_io_gpio2_io07>, 298 <&iomuxc_sd1_data6_gpio_io_gpio2_io08>, 299 <&iomuxc_sd1_data7_gpio_io_gpio2_io09>, 300 <&iomuxc_sd1_reset_b_gpio_io_gpio2_io10>, 301 <&iomuxc_sd1_strobe_gpio_io_gpio2_io11>, 302 <&iomuxc_sd2_cd_b_gpio_io_gpio2_io12>, 303 <&iomuxc_sd2_clk_gpio_io_gpio2_io13>, 304 <&iomuxc_sd2_cmd_gpio_io_gpio2_io14>, 305 <&iomuxc_sd2_data0_gpio_io_gpio2_io15>, 306 <&iomuxc_sd2_data1_gpio_io_gpio2_io16>, 307 <&iomuxc_sd2_data2_gpio_io_gpio2_io17>, 308 <&iomuxc_sd2_data3_gpio_io_gpio2_io18>, 309 <&iomuxc_sd2_reset_b_gpio_io_gpio2_io19>, 310 <&iomuxc_sd2_wp_gpio_io_gpio2_io20>; 311}; 312 313&gpio3{ 314 pinmux = <&iomuxc_nand_ale_gpio_io_gpio3_io00>, 315 <&iomuxc_nand_ce0_b_gpio_io_gpio3_io01>, 316 <&iomuxc_nand_ce1_b_gpio_io_gpio3_io02>, 317 <&iomuxc_nand_ce2_b_gpio_io_gpio3_io03>, 318 <&iomuxc_nand_ce3_b_gpio_io_gpio3_io04>, 319 <&iomuxc_nand_cle_gpio_io_gpio3_io05>, 320 <&iomuxc_nand_data00_gpio_io_gpio3_io06>, 321 <&iomuxc_nand_data01_gpio_io_gpio3_io07>, 322 <&iomuxc_nand_data02_gpio_io_gpio3_io08>, 323 <&iomuxc_nand_data03_gpio_io_gpio3_io09>, 324 <&iomuxc_nand_data04_gpio_io_gpio3_io10>, 325 <&iomuxc_nand_data05_gpio_io_gpio3_io11>, 326 <&iomuxc_nand_data06_gpio_io_gpio3_io12>, 327 <&iomuxc_nand_data07_gpio_io_gpio3_io13>, 328 <&iomuxc_nand_dqs_gpio_io_gpio3_io14>, 329 <&iomuxc_nand_re_b_gpio_io_gpio3_io15>, 330 <&iomuxc_nand_ready_b_gpio_io_gpio3_io16>, 331 <&iomuxc_nand_we_b_gpio_io_gpio3_io17>, 332 <&iomuxc_nand_wp_b_gpio_io_gpio3_io18>, 333 <&iomuxc_sai5_rxfs_gpio_io_gpio3_io19>, 334 <&iomuxc_sai5_rxc_gpio_io_gpio3_io20>, 335 <&iomuxc_sai5_rxd0_gpio_io_gpio3_io21>, 336 <&iomuxc_sai5_rxd1_gpio_io_gpio3_io22>, 337 <&iomuxc_sai5_rxd2_gpio_io_gpio3_io23>, 338 <&iomuxc_sai5_rxd3_gpio_io_gpio3_io24>, 339 <&iomuxc_sai5_mclk_gpio_io_gpio3_io25>; 340}; 341 342&gpio4{ 343 pinmux = <&iomuxc_sai1_rxfs_gpio_io_gpio4_io00>, 344 <&iomuxc_sai1_rxc_gpio_io_gpio4_io01>, 345 <&iomuxc_sai1_rxd0_gpio_io_gpio4_io02>, 346 <&iomuxc_sai1_rxd1_gpio_io_gpio4_io03>, 347 <&iomuxc_sai1_rxd2_gpio_io_gpio4_io04>, 348 <&iomuxc_sai1_rxd3_gpio_io_gpio4_io05>, 349 <&iomuxc_sai1_rxd4_gpio_io_gpio4_io06>, 350 <&iomuxc_sai1_rxd5_gpio_io_gpio4_io07>, 351 <&iomuxc_sai1_rxd6_gpio_io_gpio4_io08>, 352 <&iomuxc_sai1_rxd7_gpio_io_gpio4_io09>, 353 <&iomuxc_sai1_txfs_gpio_io_gpio4_io10>, 354 <&iomuxc_sai1_txc_gpio_io_gpio4_io11>, 355 <&iomuxc_sai1_txd0_gpio_io_gpio4_io12>, 356 <&iomuxc_sai1_txd1_gpio_io_gpio4_io13>, 357 <&iomuxc_sai1_txd2_gpio_io_gpio4_io14>, 358 <&iomuxc_sai1_txd3_gpio_io_gpio4_io15>, 359 <&iomuxc_sai1_txd4_gpio_io_gpio4_io16>, 360 <&iomuxc_sai1_txd5_gpio_io_gpio4_io17>, 361 <&iomuxc_sai1_txd6_gpio_io_gpio4_io18>, 362 <&iomuxc_sai1_txd7_gpio_io_gpio4_io19>, 363 <&iomuxc_sai1_mclk_gpio_io_gpio4_io20>, 364 <&iomuxc_sai2_rxfs_gpio_io_gpio4_io21>, 365 <&iomuxc_sai2_rxc_gpio_io_gpio4_io22>, 366 <&iomuxc_sai2_rxd0_gpio_io_gpio4_io23>, 367 <&iomuxc_sai2_txfs_gpio_io_gpio4_io24>, 368 <&iomuxc_sai2_txc_gpio_io_gpio4_io25>, 369 <&iomuxc_sai2_txd0_gpio_io_gpio4_io26>, 370 <&iomuxc_sai2_mclk_gpio_io_gpio4_io27>, 371 <&iomuxc_sai3_rxfs_gpio_io_gpio4_io28>, 372 <&iomuxc_sai3_rxc_gpio_io_gpio4_io29>, 373 <&iomuxc_sai3_rxd_gpio_io_gpio4_io30>, 374 <&iomuxc_sai3_txfs_gpio_io_gpio4_io31>; 375}; 376 377&gpio5{ 378 pinmux = <&iomuxc_sai3_txc_gpio_io_gpio5_io00>, 379 <&iomuxc_sai3_txd_gpio_io_gpio5_io01>, 380 <&iomuxc_sai3_mclk_gpio_io_gpio5_io02>, 381 <&iomuxc_spdif_tx_gpio_io_gpio5_io03>, 382 <&iomuxc_spdif_rx_gpio_io_gpio5_io04>, 383 <&iomuxc_spdif_ext_clk_gpio_io_gpio5_io05>, 384 <&iomuxc_ecspi1_sclk_gpio_io_gpio5_io06>, 385 <&iomuxc_ecspi1_mosi_gpio_io_gpio5_io07>, 386 <&iomuxc_ecspi1_miso_gpio_io_gpio5_io08>, 387 <&iomuxc_ecspi1_ss0_gpio_io_gpio5_io09>, 388 <&iomuxc_ecspi2_sclk_gpio_io_gpio5_io10>, 389 <&iomuxc_ecspi2_mosi_gpio_io_gpio5_io11>, 390 <&iomuxc_ecspi2_miso_gpio_io_gpio5_io12>, 391 <&iomuxc_ecspi2_ss0_gpio_io_gpio5_io13>, 392 <&iomuxc_i2c1_scl_gpio_io_gpio5_io14>, 393 <&iomuxc_i2c1_sda_gpio_io_gpio5_io15>, 394 <&iomuxc_i2c2_scl_gpio_io_gpio5_io16>, 395 <&iomuxc_i2c2_sda_gpio_io_gpio5_io17>, 396 <&iomuxc_i2c3_scl_gpio_io_gpio5_io18>, 397 <&iomuxc_i2c3_sda_gpio_io_gpio5_io19>, 398 <&iomuxc_i2c4_scl_gpio_io_gpio5_io20>, 399 <&iomuxc_i2c4_sda_gpio_io_gpio5_io21>, 400 <&iomuxc_uart1_rxd_gpio_io_gpio5_io22>, 401 <&iomuxc_uart1_txd_gpio_io_gpio5_io23>, 402 <&iomuxc_uart2_rxd_gpio_io_gpio5_io24>, 403 <&iomuxc_uart2_txd_gpio_io_gpio5_io25>, 404 <&iomuxc_uart3_rxd_gpio_io_gpio5_io26>, 405 <&iomuxc_uart3_txd_gpio_io_gpio5_io27>, 406 <&iomuxc_uart4_rxd_gpio_io_gpio5_io28>, 407 <&iomuxc_uart4_txd_gpio_io_gpio5_io29>; 408}; 409