1/* 2 * Copyright (c) 2021, Kwon Tae-young 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7#include <arm/armv7-m.dtsi> 8#include <zephyr/dt-bindings/clock/imx_ccm.h> 9#include <zephyr/dt-bindings/rdc/imx_rdc.h> 10#include <zephyr/dt-bindings/gpio/gpio.h> 11#include <mem.h> 12 13/ { 14 cpus { 15 #address-cells = <1>; 16 #size-cells = <0>; 17 18 cpu@0 { 19 device_type = "cpu"; 20 compatible = "arm,cortex-m4"; 21 reg = <0>; 22 }; 23 }; 24 25 soc { 26 tcml_code: code@1ffe0000 { 27 compatible = "nxp,imx-itcm"; 28 reg = <0x1ffe0000 DT_SIZE_K(128)>; 29 }; 30 31 tcmu_sys: memory@20000000 { 32 compatible = "nxp,imx-dtcm"; 33 reg = <0x20000000 DT_SIZE_K(128)>; 34 }; 35 36 ocram_code: code@900000 { 37 compatible = "nxp,imx-code-bus"; 38 reg = <0x00900000 DT_SIZE_K(256)>; 39 }; 40 41 ocram_sys: memory@20200000 { 42 device_type = "memory"; 43 compatible = "nxp,imx-sys-bus"; 44 reg = <0x20200000 DT_SIZE_K(256)>; 45 }; 46 47 ocram_s_code: code@180000 { 48 compatible = "nxp,imx-code-bus"; 49 reg = <0x00180000 DT_SIZE_K(32)>; 50 }; 51 52 ocram_s_sys: memory@20180000 { 53 device_type = "memory"; 54 compatible = "nxp,imx-sys-bus"; 55 reg = <0x20180000 DT_SIZE_K(32)>; 56 }; 57 58 gpio1: gpio@30200000 { 59 compatible = "nxp,imx-gpio"; 60 reg = <0x30200000 DT_SIZE_K(64)>; 61 interrupts = <64 0>, <65 0>; 62 rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\ 63 RDC_DOMAIN_PERM_RW)|\ 64 RDC_DOMAIN_PERM(M4_DOMAIN_ID,\ 65 RDC_DOMAIN_PERM_RW))>; 66 gpio-controller; 67 #gpio-cells = <2>; 68 status = "disabled"; 69 }; 70 71 gpio2: gpio@30210000 { 72 compatible = "nxp,imx-gpio"; 73 reg = <0x30210000 DT_SIZE_K(64)>; 74 interrupts = <66 0>, <67 0>; 75 rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\ 76 RDC_DOMAIN_PERM_RW)|\ 77 RDC_DOMAIN_PERM(M4_DOMAIN_ID,\ 78 RDC_DOMAIN_PERM_RW))>; 79 gpio-controller; 80 #gpio-cells = <2>; 81 status = "disabled"; 82 }; 83 84 gpio3: gpio@30220000 { 85 compatible = "nxp,imx-gpio"; 86 reg = <0x30220000 DT_SIZE_K(64)>; 87 interrupts = <68 0>, <69 0>; 88 rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\ 89 RDC_DOMAIN_PERM_RW)|\ 90 RDC_DOMAIN_PERM(M4_DOMAIN_ID,\ 91 RDC_DOMAIN_PERM_RW))>; 92 gpio-controller; 93 #gpio-cells = <2>; 94 status = "disabled"; 95 }; 96 97 gpio4: gpio@30230000 { 98 compatible = "nxp,imx-gpio"; 99 reg = <0x30230000 DT_SIZE_K(64)>; 100 interrupts = <70 0>, <71 0>; 101 rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\ 102 RDC_DOMAIN_PERM_RW)|\ 103 RDC_DOMAIN_PERM(M4_DOMAIN_ID,\ 104 RDC_DOMAIN_PERM_RW))>; 105 gpio-controller; 106 #gpio-cells = <2>; 107 status = "disabled"; 108 }; 109 110 gpio5: gpio@30240000 { 111 compatible = "nxp,imx-gpio"; 112 reg = <0x30240000 DT_SIZE_K(64)>; 113 interrupts = <72 0>, <73 0>; 114 rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\ 115 RDC_DOMAIN_PERM_RW)|\ 116 RDC_DOMAIN_PERM(M4_DOMAIN_ID,\ 117 RDC_DOMAIN_PERM_RW))>; 118 gpio-controller; 119 #gpio-cells = <2>; 120 status = "disabled"; 121 }; 122 123 iomuxc: iomuxc@30330000 { 124 compatible = "nxp,imx-iomuxc"; 125 reg = <0x30330000 DT_SIZE_K(64)>; 126 status = "okay"; 127 pinctrl: pinctrl { 128 status = "okay"; 129 compatible = "nxp,imx8m-pinctrl"; 130 }; 131 }; 132 133 ccm: ccm@30380000 { 134 compatible = "nxp,imx-ccm"; 135 reg = <0x30380000 DT_SIZE_K(64)>; 136 #clock-cells = <3>; 137 }; 138 139 ecspi1: spi@30820000 { 140 compatible = "nxp,imx-ecspi"; 141 reg = <0x30820000 DT_SIZE_K(64)>; 142 #address-cells = <1>; 143 #size-cells = <0>; 144 interrupts = <31 3>; 145 clocks = <&ccm IMX_CCM_ECSPI1_CLK 0 0>; 146 status = "disabled"; 147 }; 148 149 ecspi2: spi@30830000 { 150 compatible = "nxp,imx-ecspi"; 151 reg = <0x30830000 DT_SIZE_K(64)>; 152 #address-cells = <1>; 153 #size-cells = <0>; 154 interrupts = <32 3>; 155 clocks = <&ccm IMX_CCM_ECSPI2_CLK 0 0>; 156 status = "disabled"; 157 }; 158 159 ecspi3: spi@30840000 { 160 compatible = "nxp,imx-ecspi"; 161 reg = <0x30840000 DT_SIZE_K(64)>; 162 #address-cells = <1>; 163 #size-cells = <0>; 164 interrupts = <33 3>; 165 clocks = <&ccm IMX_CCM_ECSPI3_CLK 0 0>; 166 status = "disabled"; 167 }; 168 169 uart1: uart@30860000 { 170 compatible = "nxp,imx-iuart"; 171 reg = <0x30860000 0x10000>; 172 interrupts = <26 3>; 173 clocks = <&ccm IMX_CCM_UART1_CLK 0x7c 24>; 174 status = "disabled"; 175 }; 176 177 uart2: uart@30890000 { 178 compatible = "nxp,imx-iuart"; 179 reg = <0x30890000 0x10000>; 180 interrupts = <27 3>; 181 clocks = <&ccm IMX_CCM_UART2_CLK 0x68 28>; 182 status = "disabled"; 183 }; 184 185 uart3: uart@30880000 { 186 compatible = "nxp,imx-iuart"; 187 reg = <0x30880000 0x10000>; 188 interrupts = <28 3>; 189 clocks = <&ccm IMX_CCM_UART3_CLK 0x68 12>; 190 status = "disabled"; 191 }; 192 193 uart4: uart@30a60000 { 194 compatible = "nxp,imx-iuart"; 195 reg = <0x30a60000 0x10000>; 196 interrupts = <29 3>; 197 clocks = <&ccm IMX_CCM_UART4_CLK 0x6c 24>; 198 status = "disabled"; 199 }; 200 201 mailbox0: mailbox@30ab0000 { 202 compatible = "nxp,imx-mu"; 203 reg = <0x30ab0000 DT_SIZE_K(64)>; 204 interrupts = <97 0>; 205 rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\ 206 RDC_DOMAIN_PERM_RW)|\ 207 RDC_DOMAIN_PERM(M4_DOMAIN_ID,\ 208 RDC_DOMAIN_PERM_RW))>; 209 status = "disabled"; 210 }; 211 }; 212}; 213 214&nvic { 215 arm,num-irq-priority-bits = <4>; 216}; 217 218 219/* 220 * GPIO pinmux options. These options define the pinmux settings 221 * for GPIO ports on the package, so that the GPIO driver can 222 * select GPIO mux options during GPIO configuration. 223 */ 224 225&gpio1{ 226 pinmux = <&iomuxc_gpio1_io00_gpio_io_gpio1_io00>, 227 <&iomuxc_gpio1_io01_gpio_io_gpio1_io01>, 228 <&iomuxc_gpio1_io02_gpio_io_gpio1_io02>, 229 <&iomuxc_gpio1_io03_gpio_io_gpio1_io03>, 230 <&iomuxc_gpio1_io04_gpio_io_gpio1_io04>, 231 <&iomuxc_gpio1_io05_gpio_io_gpio1_io05>, 232 <&iomuxc_gpio1_io06_gpio_io_gpio1_io06>, 233 <&iomuxc_gpio1_io07_gpio_io_gpio1_io07>, 234 <&iomuxc_gpio1_io08_gpio_io_gpio1_io08>, 235 <&iomuxc_gpio1_io09_gpio_io_gpio1_io09>, 236 <&iomuxc_gpio1_io10_gpio_io_gpio1_io10>, 237 <&iomuxc_gpio1_io11_gpio_io_gpio1_io11>, 238 <&iomuxc_gpio1_io12_gpio_io_gpio1_io12>, 239 <&iomuxc_gpio1_io13_gpio_io_gpio1_io13>, 240 <&iomuxc_gpio1_io14_gpio_io_gpio1_io14>, 241 <&iomuxc_gpio1_io15_gpio_io_gpio1_io15>, 242 <&iomuxc_enet_mdc_gpio_io_gpio1_io16>, 243 <&iomuxc_enet_mdio_gpio_io_gpio1_io17>, 244 <&iomuxc_enet_td3_gpio_io_gpio1_io18>, 245 <&iomuxc_enet_td2_gpio_io_gpio1_io19>, 246 <&iomuxc_enet_td1_gpio_io_gpio1_io20>, 247 <&iomuxc_enet_td0_gpio_io_gpio1_io21>, 248 <&iomuxc_enet_tx_ctl_gpio_io_gpio1_io22>, 249 <&iomuxc_enet_txc_gpio_io_gpio1_io23>, 250 <&iomuxc_enet_rx_ctl_gpio_io_gpio1_io24>, 251 <&iomuxc_enet_rxc_gpio_io_gpio1_io25>, 252 <&iomuxc_enet_rd0_gpio_io_gpio1_io26>, 253 <&iomuxc_enet_rd1_gpio_io_gpio1_io27>, 254 <&iomuxc_enet_rd2_gpio_io_gpio1_io28>, 255 <&iomuxc_enet_rd3_gpio_io_gpio1_io29>; 256}; 257 258&gpio2{ 259 pinmux = <&iomuxc_sd1_clk_gpio_io_gpio2_io00>, 260 <&iomuxc_sd1_cmd_gpio_io_gpio2_io01>, 261 <&iomuxc_sd1_data0_gpio_io_gpio2_io02>, 262 <&iomuxc_sd1_data1_gpio_io_gpio2_io03>, 263 <&iomuxc_sd1_data2_gpio_io_gpio2_io04>, 264 <&iomuxc_sd1_data3_gpio_io_gpio2_io05>, 265 <&iomuxc_sd1_data4_gpio_io_gpio2_io06>, 266 <&iomuxc_sd1_data5_gpio_io_gpio2_io07>, 267 <&iomuxc_sd1_data6_gpio_io_gpio2_io08>, 268 <&iomuxc_sd1_data7_gpio_io_gpio2_io09>, 269 <&iomuxc_sd1_reset_b_gpio_io_gpio2_io10>, 270 <&iomuxc_sd1_strobe_gpio_io_gpio2_io11>, 271 <&iomuxc_sd2_cd_b_gpio_io_gpio2_io12>, 272 <&iomuxc_sd2_clk_gpio_io_gpio2_io13>, 273 <&iomuxc_sd2_cmd_gpio_io_gpio2_io14>, 274 <&iomuxc_sd2_data0_gpio_io_gpio2_io15>, 275 <&iomuxc_sd2_data1_gpio_io_gpio2_io16>, 276 <&iomuxc_sd2_data2_gpio_io_gpio2_io17>, 277 <&iomuxc_sd2_data3_gpio_io_gpio2_io18>, 278 <&iomuxc_sd2_reset_b_gpio_io_gpio2_io19>, 279 <&iomuxc_sd2_wp_gpio_io_gpio2_io20>; 280}; 281 282&gpio3{ 283 pinmux = <&iomuxc_nand_ale_gpio_io_gpio3_io00>, 284 <&iomuxc_nand_ce0_b_gpio_io_gpio3_io01>, 285 <&iomuxc_nand_ce1_b_gpio_io_gpio3_io02>, 286 <&iomuxc_nand_ce2_b_gpio_io_gpio3_io03>, 287 <&iomuxc_nand_ce3_b_gpio_io_gpio3_io04>, 288 <&iomuxc_nand_cle_gpio_io_gpio3_io05>, 289 <&iomuxc_nand_data00_gpio_io_gpio3_io06>, 290 <&iomuxc_nand_data01_gpio_io_gpio3_io07>, 291 <&iomuxc_nand_data02_gpio_io_gpio3_io08>, 292 <&iomuxc_nand_data03_gpio_io_gpio3_io09>, 293 <&iomuxc_nand_data04_gpio_io_gpio3_io10>, 294 <&iomuxc_nand_data05_gpio_io_gpio3_io11>, 295 <&iomuxc_nand_data06_gpio_io_gpio3_io12>, 296 <&iomuxc_nand_data07_gpio_io_gpio3_io13>, 297 <&iomuxc_nand_dqs_gpio_io_gpio3_io14>, 298 <&iomuxc_nand_re_b_gpio_io_gpio3_io15>, 299 <&iomuxc_nand_ready_b_gpio_io_gpio3_io16>, 300 <&iomuxc_nand_we_b_gpio_io_gpio3_io17>, 301 <&iomuxc_nand_wp_b_gpio_io_gpio3_io18>, 302 <&iomuxc_sai5_rxfs_gpio_io_gpio3_io19>, 303 <&iomuxc_sai5_rxc_gpio_io_gpio3_io20>, 304 <&iomuxc_sai5_rxd0_gpio_io_gpio3_io21>, 305 <&iomuxc_sai5_rxd1_gpio_io_gpio3_io22>, 306 <&iomuxc_sai5_rxd2_gpio_io_gpio3_io23>, 307 <&iomuxc_sai5_rxd3_gpio_io_gpio3_io24>, 308 <&iomuxc_sai5_mclk_gpio_io_gpio3_io25>; 309}; 310 311&gpio4{ 312 pinmux = <&iomuxc_sai1_rxfs_gpio_io_gpio4_io00>, 313 <&iomuxc_sai1_rxc_gpio_io_gpio4_io01>, 314 <&iomuxc_sai1_rxd0_gpio_io_gpio4_io02>, 315 <&iomuxc_sai1_rxd1_gpio_io_gpio4_io03>, 316 <&iomuxc_sai1_rxd2_gpio_io_gpio4_io04>, 317 <&iomuxc_sai1_rxd3_gpio_io_gpio4_io05>, 318 <&iomuxc_sai1_rxd4_gpio_io_gpio4_io06>, 319 <&iomuxc_sai1_rxd5_gpio_io_gpio4_io07>, 320 <&iomuxc_sai1_rxd6_gpio_io_gpio4_io08>, 321 <&iomuxc_sai1_rxd7_gpio_io_gpio4_io09>, 322 <&iomuxc_sai1_txfs_gpio_io_gpio4_io10>, 323 <&iomuxc_sai1_txc_gpio_io_gpio4_io11>, 324 <&iomuxc_sai1_txd0_gpio_io_gpio4_io12>, 325 <&iomuxc_sai1_txd1_gpio_io_gpio4_io13>, 326 <&iomuxc_sai1_txd2_gpio_io_gpio4_io14>, 327 <&iomuxc_sai1_txd3_gpio_io_gpio4_io15>, 328 <&iomuxc_sai1_txd4_gpio_io_gpio4_io16>, 329 <&iomuxc_sai1_txd5_gpio_io_gpio4_io17>, 330 <&iomuxc_sai1_txd6_gpio_io_gpio4_io18>, 331 <&iomuxc_sai1_txd7_gpio_io_gpio4_io19>, 332 <&iomuxc_sai1_mclk_gpio_io_gpio4_io20>, 333 <&iomuxc_sai2_rxfs_gpio_io_gpio4_io21>, 334 <&iomuxc_sai2_rxc_gpio_io_gpio4_io22>, 335 <&iomuxc_sai2_rxd0_gpio_io_gpio4_io23>, 336 <&iomuxc_sai2_txfs_gpio_io_gpio4_io24>, 337 <&iomuxc_sai2_txc_gpio_io_gpio4_io25>, 338 <&iomuxc_sai2_txd0_gpio_io_gpio4_io26>, 339 <&iomuxc_sai2_mclk_gpio_io_gpio4_io27>, 340 <&iomuxc_sai3_rxfs_gpio_io_gpio4_io28>, 341 <&iomuxc_sai3_rxc_gpio_io_gpio4_io29>, 342 <&iomuxc_sai3_rxd_gpio_io_gpio4_io30>, 343 <&iomuxc_sai3_txfs_gpio_io_gpio4_io31>; 344}; 345 346&gpio5{ 347 pinmux = <&iomuxc_sai3_txc_gpio_io_gpio5_io00>, 348 <&iomuxc_sai3_txd_gpio_io_gpio5_io01>, 349 <&iomuxc_sai3_mclk_gpio_io_gpio5_io02>, 350 <&iomuxc_spdif_tx_gpio_io_gpio5_io03>, 351 <&iomuxc_spdif_rx_gpio_io_gpio5_io04>, 352 <&iomuxc_spdif_ext_clk_gpio_io_gpio5_io05>, 353 <&iomuxc_ecspi1_sclk_gpio_io_gpio5_io06>, 354 <&iomuxc_ecspi1_mosi_gpio_io_gpio5_io07>, 355 <&iomuxc_ecspi1_miso_gpio_io_gpio5_io08>, 356 <&iomuxc_ecspi1_ss0_gpio_io_gpio5_io09>, 357 <&iomuxc_ecspi2_sclk_gpio_io_gpio5_io10>, 358 <&iomuxc_ecspi2_mosi_gpio_io_gpio5_io11>, 359 <&iomuxc_ecspi2_miso_gpio_io_gpio5_io12>, 360 <&iomuxc_ecspi2_ss0_gpio_io_gpio5_io13>, 361 <&iomuxc_i2c1_scl_gpio_io_gpio5_io14>, 362 <&iomuxc_i2c1_sda_gpio_io_gpio5_io15>, 363 <&iomuxc_i2c2_scl_gpio_io_gpio5_io16>, 364 <&iomuxc_i2c2_sda_gpio_io_gpio5_io17>, 365 <&iomuxc_i2c3_scl_gpio_io_gpio5_io18>, 366 <&iomuxc_i2c3_sda_gpio_io_gpio5_io19>, 367 <&iomuxc_i2c4_scl_gpio_io_gpio5_io20>, 368 <&iomuxc_i2c4_sda_gpio_io_gpio5_io21>, 369 <&iomuxc_uart1_rxd_gpio_io_gpio5_io22>, 370 <&iomuxc_uart1_txd_gpio_io_gpio5_io23>, 371 <&iomuxc_uart2_rxd_gpio_io_gpio5_io24>, 372 <&iomuxc_uart2_txd_gpio_io_gpio5_io25>, 373 <&iomuxc_uart3_rxd_gpio_io_gpio5_io26>, 374 <&iomuxc_uart3_txd_gpio_io_gpio5_io27>, 375 <&iomuxc_uart4_rxd_gpio_io_gpio5_io28>, 376 <&iomuxc_uart4_txd_gpio_io_gpio5_io29>; 377}; 378