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