1/* 2 * Copyright (c) 2025 Nuvoton Technology Corporation. 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7#include <arm/armv8.1-m.dtsi> 8#include <mem.h> 9#include <freq.h> 10#include <zephyr/dt-bindings/clock/numaker_m55m1x_clock.h> 11#include <zephyr/dt-bindings/reset/numaker_m55m1x_reset.h> 12#include <zephyr/dt-bindings/gpio/gpio.h> 13 14/ { 15 chosen { 16 zephyr,flash-controller = &fmc; 17 }; 18 19 aliases { 20 rtc = &rtc; 21 }; 22 23 cpus { 24 #address-cells = <1>; 25 #size-cells = <0>; 26 27 cpu@0 { 28 device_type = "cpu"; 29 compatible = "arm,cortex-m55"; 30 reg = <0>; 31 }; 32 }; 33 34 sysclk: system-clock { 35 compatible = "fixed-clock"; 36 clock-frequency = <DT_FREQ_M(220)>; 37 #clock-cells = <0>; 38 }; 39 40 soc { 41 scc: system-clock-controller@40001000 { 42 compatible = "nuvoton,numaker-scc"; 43 reg = <0x40001000 0x100>; 44 #clock-cells = <0>; 45 lxt = "enable"; 46 clk-pclkdiv = <(NUMAKER_CLK_PCLKDIV_PCLK0DIV(2) | 47 NUMAKER_CLK_PCLKDIV_PCLK1DIV(2) | 48 NUMAKER_CLK_PCLKDIV_PCLK2DIV(2) | 49 NUMAKER_CLK_PCLKDIV_PCLK3DIV(2) | 50 NUMAKER_CLK_PCLKDIV_PCLK4DIV(2))>; 51 core-clock = <DT_FREQ_M(220)>; 52 powerdown-mode = <NUMAKER_PMC_SPD0>; 53 54 pcc: peripheral-clock-controller { 55 compatible = "nuvoton,numaker-pcc"; 56 #clock-cells = <3>; 57 }; 58 }; 59 60 rst: reset-controller@40000000 { 61 compatible = "nuvoton,numaker-rst"; 62 reg = <0x40000000 0x2e0>; 63 #reset-cells = <1>; 64 }; 65 66 fmc: flash-controller@40044000 { 67 compatible = "nuvoton,numaker-fmc"; 68 reg = <0x40044000 0x120>; 69 #address-cells = <1>; 70 #size-cells = <1>; 71 72 flash0: flash@100000 { 73 compatible = "soc-nv-flash"; 74 erase-block-size = <8192>; 75 write-block-size = <4>; 76 }; 77 }; 78 79 uart0: serial@4024d000 { 80 compatible = "nuvoton,numaker-uart"; 81 reg = <0x4024d000 0x1000>; 82 interrupts = <75 0>; 83 resets = <&rst NUMAKER_SYS_UART0RST>; 84 clocks = <&pcc NUMAKER_UART0_MODULE NUMAKER_CLK_UARTSEL0_UART0SEL_HIRC 85 NUMAKER_CLK_UARTDIV0_UART0DIV(1)>; 86 status = "disabled"; 87 }; 88 89 uart1: serial@4028d000 { 90 compatible = "nuvoton,numaker-uart"; 91 reg = <0x4028d000 0x1000>; 92 interrupts = <76 0>; 93 resets = <&rst NUMAKER_SYS_UART1RST>; 94 clocks = <&pcc NUMAKER_UART1_MODULE NUMAKER_CLK_UARTSEL0_UART1SEL_HIRC 95 NUMAKER_CLK_UARTDIV0_UART1DIV(1)>; 96 status = "disabled"; 97 }; 98 99 uart2: serial@4024e000 { 100 compatible = "nuvoton,numaker-uart"; 101 reg = <0x4024e000 0x1000>; 102 interrupts = <77 0>; 103 resets = <&rst NUMAKER_SYS_UART2RST>; 104 clocks = <&pcc NUMAKER_UART2_MODULE NUMAKER_CLK_UARTSEL0_UART2SEL_HIRC 105 NUMAKER_CLK_UARTDIV0_UART2DIV(1)>; 106 status = "disabled"; 107 }; 108 109 uart3: serial@4028e000 { 110 compatible = "nuvoton,numaker-uart"; 111 reg = <0x4028e000 0x1000>; 112 interrupts = <78 0>; 113 resets = <&rst NUMAKER_SYS_UART3RST>; 114 clocks = <&pcc NUMAKER_UART3_MODULE NUMAKER_CLK_UARTSEL0_UART3SEL_HIRC 115 NUMAKER_CLK_UARTDIV0_UART3DIV(1)>; 116 status = "disabled"; 117 }; 118 119 uart4: serial@4024f000 { 120 compatible = "nuvoton,numaker-uart"; 121 reg = <0x4024f000 0x1000>; 122 interrupts = <79 0>; 123 resets = <&rst NUMAKER_SYS_UART4RST>; 124 clocks = <&pcc NUMAKER_UART4_MODULE NUMAKER_CLK_UARTSEL0_UART4SEL_HIRC 125 NUMAKER_CLK_UARTDIV0_UART4DIV(1)>; 126 status = "disabled"; 127 }; 128 129 uart5: serial@4028f000 { 130 compatible = "nuvoton,numaker-uart"; 131 reg = <0x4028f000 0x1000>; 132 interrupts = <80 0>; 133 resets = <&rst NUMAKER_SYS_UART5RST>; 134 clocks = <&pcc NUMAKER_UART5_MODULE NUMAKER_CLK_UARTSEL0_UART5SEL_HIRC 135 NUMAKER_CLK_UARTDIV0_UART5DIV(1)>; 136 status = "disabled"; 137 }; 138 139 uart6: serial@40250000 { 140 compatible = "nuvoton,numaker-uart"; 141 reg = <0x40250000 0x1000>; 142 interrupts = <81 0>; 143 resets = <&rst NUMAKER_SYS_UART6RST>; 144 clocks = <&pcc NUMAKER_UART6_MODULE NUMAKER_CLK_UARTSEL0_UART6SEL_HIRC 145 NUMAKER_CLK_UARTDIV0_UART6DIV(1)>; 146 status = "disabled"; 147 }; 148 149 uart7: serial@40290000 { 150 compatible = "nuvoton,numaker-uart"; 151 reg = <0x40290000 0x1000>; 152 interrupts = <82 0>; 153 resets = <&rst NUMAKER_SYS_UART7RST>; 154 clocks = <&pcc NUMAKER_UART7_MODULE NUMAKER_CLK_UARTSEL0_UART7SEL_HIRC 155 NUMAKER_CLK_UARTDIV0_UART7DIV(1)>; 156 status = "disabled"; 157 }; 158 159 uart8: serial@40251000 { 160 compatible = "nuvoton,numaker-uart"; 161 reg = <0x40251000 0x1000>; 162 interrupts = <83 0>; 163 resets = <&rst NUMAKER_SYS_UART8RST>; 164 clocks = <&pcc NUMAKER_UART8_MODULE NUMAKER_CLK_UARTSEL1_UART8SEL_HIRC 165 NUMAKER_CLK_UARTDIV1_UART8DIV(1)>; 166 status = "disabled"; 167 }; 168 169 uart9: serial@40291000 { 170 compatible = "nuvoton,numaker-uart"; 171 reg = <0x40291000 0x1000>; 172 interrupts = <84 0>; 173 resets = <&rst NUMAKER_SYS_UART9RST>; 174 clocks = <&pcc NUMAKER_UART9_MODULE NUMAKER_CLK_UARTSEL1_UART9SEL_HIRC 175 NUMAKER_CLK_UARTDIV1_UART9DIV(1)>; 176 status = "disabled"; 177 }; 178 179 pinctrl: pin-controller@40000080 { 180 compatible = "nuvoton,numaker-pinctrl"; 181 reg = <0x40000080 0x30 182 0x40000300 0x100>; 183 reg-names = "mfos", "mfp"; 184 }; 185 186 gpioa: gpio@40229000 { 187 compatible = "nuvoton,numaker-gpio"; 188 gpio-controller; 189 #gpio-cells = <2>; 190 reg = <0x40229000 0x40>; 191 clocks = <&pcc NUMAKER_GPIOA_MODULE 0 0>; 192 status = "disabled"; 193 interrupts = <20 2>; 194 }; 195 196 gpiob: gpio@40229040 { 197 compatible = "nuvoton,numaker-gpio"; 198 gpio-controller; 199 #gpio-cells = <2>; 200 reg = <0x40229040 0x40>; 201 clocks = <&pcc NUMAKER_GPIOB_MODULE 0 0>; 202 status = "disabled"; 203 interrupts = <21 2>; 204 }; 205 206 gpioc: gpio@40229080 { 207 compatible = "nuvoton,numaker-gpio"; 208 gpio-controller; 209 #gpio-cells = <2>; 210 reg = <0x40229080 0x40>; 211 clocks = <&pcc NUMAKER_GPIOC_MODULE 0 0>; 212 status = "disabled"; 213 interrupts = <22 2>; 214 }; 215 216 gpiod: gpio@402290c0 { 217 compatible = "nuvoton,numaker-gpio"; 218 gpio-controller; 219 #gpio-cells = <2>; 220 reg = <0x402290c0 0x40>; 221 clocks = <&pcc NUMAKER_GPIOD_MODULE 0 0>; 222 status = "disabled"; 223 interrupts = <23 2>; 224 }; 225 226 gpioe: gpio@40229100 { 227 compatible = "nuvoton,numaker-gpio"; 228 gpio-controller; 229 #gpio-cells = <2>; 230 reg = <0x40229100 0x40>; 231 clocks = <&pcc NUMAKER_GPIOE_MODULE 0 0>; 232 status = "disabled"; 233 interrupts = <24 2>; 234 }; 235 236 gpiof: gpio@40229140 { 237 compatible = "nuvoton,numaker-gpio"; 238 gpio-controller; 239 #gpio-cells = <2>; 240 reg = <0x40229140 0x40>; 241 clocks = <&pcc NUMAKER_GPIOF_MODULE 0 0>; 242 status = "disabled"; 243 interrupts = <25 2>; 244 }; 245 246 gpiog: gpio@40229180 { 247 compatible = "nuvoton,numaker-gpio"; 248 gpio-controller; 249 #gpio-cells = <2>; 250 reg = <0x40229180 0x40>; 251 clocks = <&pcc NUMAKER_GPIOG_MODULE 0 0>; 252 status = "disabled"; 253 interrupts = <26 2>; 254 }; 255 256 gpioh: gpio@402291c0 { 257 compatible = "nuvoton,numaker-gpio"; 258 gpio-controller; 259 #gpio-cells = <2>; 260 reg = <0x402291c0 0x40>; 261 clocks = <&pcc NUMAKER_GPIOH_MODULE 0 0>; 262 status = "disabled"; 263 interrupts = <27 2>; 264 }; 265 266 gpioi: gpio@40229200 { 267 compatible = "nuvoton,numaker-gpio"; 268 gpio-controller; 269 #gpio-cells = <2>; 270 reg = <0x40229200 0x40>; 271 clocks = <&pcc NUMAKER_GPIOI_MODULE 0 0>; 272 status = "disabled"; 273 interrupts = <28 2>; 274 }; 275 276 gpioj: gpio@40229240 { 277 compatible = "nuvoton,numaker-gpio"; 278 gpio-controller; 279 #gpio-cells = <2>; 280 reg = <0x40229240 0x40>; 281 clocks = <&pcc NUMAKER_GPIOJ_MODULE 0 0>; 282 status = "disabled"; 283 interrupts = <29 2>; 284 }; 285 286 rtc: rtc@40297000 { 287 compatible = "nuvoton,numaker-rtc"; 288 reg = <0x40297000 0x1000>; 289 interrupts = <6 0>; 290 oscillator = "lxt"; 291 clocks = <&pcc NUMAKER_RTC0_MODULE 0 0>; 292 alarms-count = <1>; 293 }; 294 }; 295}; 296 297&nvic { 298 arm,num-irq-priority-bits = <3>; 299}; 300