Skip to content

Commit 47dfd85

Browse files
cyliangtwfabiobaltieri
authored andcommitted
soc: nuvoton: numaker: add support for m55m1x series
Add initial support for nuvoton numaker m55m1x SoC series including basic init and device tree source include. Signed-off-by: cyliang tw <cyliang@nuvoton.com>
1 parent 588baa4 commit 47dfd85

File tree

15 files changed

+1329
-0
lines changed

15 files changed

+1329
-0
lines changed

dts/arm/nuvoton/m55m1h2l.dtsi

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* Copyright (c) 2025 Nuvoton Technology Corporation.
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include <mem.h>
8+
#include <nuvoton/m55m1x.dtsi>
9+
10+
/ {
11+
sram0: memory@20100000 {
12+
compatible = "mmio-sram";
13+
reg = <0x20100000 DT_SIZE_K(1344)>;
14+
};
15+
16+
dtcm: memory@20000000 {
17+
compatible = "zephyr,memory-region", "arm,dtcm";
18+
reg = <0x20000000 DT_SIZE_K(128)>;
19+
zephyr,memory-region = "DTCM";
20+
};
21+
22+
itcm: memory@0 {
23+
compatible = "zephyr,memory-region", "arm,itcm";
24+
reg = <0x00000000 DT_SIZE_K(64)>;
25+
zephyr,memory-region = "ITCM";
26+
};
27+
28+
soc {
29+
fmc: flash-controller@40044000 {
30+
flash0: flash@100000 {
31+
reg = <0x100000 DT_SIZE_K(2048)>;
32+
};
33+
};
34+
};
35+
};

dts/arm/nuvoton/m55m1x.dtsi

Lines changed: 299 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,299 @@
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+
};

0 commit comments

Comments
 (0)