1*b69af098SJacky Huang// SPDX-License-Identifier: GPL-2.0
2*b69af098SJacky Huang/*
3*b69af098SJacky Huang * Copyright (C) 2023 Nuvoton Technology Corp.
4*b69af098SJacky Huang * Author: Shan-Chun Hung <schung@nuvoton.com>
5*b69af098SJacky Huang *         Jacky huang <ychuang3@nuvoton.com>
6*b69af098SJacky Huang */
7*b69af098SJacky Huang
8*b69af098SJacky Huang#include <dt-bindings/interrupt-controller/arm-gic.h>
9*b69af098SJacky Huang#include <dt-bindings/input/input.h>
10*b69af098SJacky Huang#include <dt-bindings/gpio/gpio.h>
11*b69af098SJacky Huang#include <dt-bindings/clock/nuvoton,ma35d1-clk.h>
12*b69af098SJacky Huang#include <dt-bindings/reset/nuvoton,ma35d1-reset.h>
13*b69af098SJacky Huang
14*b69af098SJacky Huang/ {
15*b69af098SJacky Huang	compatible = "nuvoton,ma35d1";
16*b69af098SJacky Huang	interrupt-parent = <&gic>;
17*b69af098SJacky Huang	#address-cells = <2>;
18*b69af098SJacky Huang	#size-cells = <2>;
19*b69af098SJacky Huang
20*b69af098SJacky Huang	cpus {
21*b69af098SJacky Huang		#address-cells = <2>;
22*b69af098SJacky Huang		#size-cells = <0>;
23*b69af098SJacky Huang
24*b69af098SJacky Huang		cpu0: cpu@0 {
25*b69af098SJacky Huang			device_type = "cpu";
26*b69af098SJacky Huang			compatible = "arm,cortex-a35";
27*b69af098SJacky Huang			reg = <0x0 0x0>;
28*b69af098SJacky Huang			enable-method = "psci";
29*b69af098SJacky Huang			next-level-cache = <&L2_0>;
30*b69af098SJacky Huang		};
31*b69af098SJacky Huang
32*b69af098SJacky Huang		cpu1: cpu@1 {
33*b69af098SJacky Huang			device_type = "cpu";
34*b69af098SJacky Huang			compatible = "arm,cortex-a35";
35*b69af098SJacky Huang			reg = <0x0 0x1>;
36*b69af098SJacky Huang			enable-method = "psci";
37*b69af098SJacky Huang			next-level-cache = <&L2_0>;
38*b69af098SJacky Huang		};
39*b69af098SJacky Huang
40*b69af098SJacky Huang		L2_0: l2-cache {
41*b69af098SJacky Huang			compatible = "cache";
42*b69af098SJacky Huang			cache-level = <2>;
43*b69af098SJacky Huang			cache-unified;
44*b69af098SJacky Huang			cache-size = <0x80000>;
45*b69af098SJacky Huang		};
46*b69af098SJacky Huang	};
47*b69af098SJacky Huang
48*b69af098SJacky Huang	psci {
49*b69af098SJacky Huang		compatible = "arm,psci-0.2";
50*b69af098SJacky Huang		method = "smc";
51*b69af098SJacky Huang	};
52*b69af098SJacky Huang
53*b69af098SJacky Huang	gic: interrupt-controller@50801000 {
54*b69af098SJacky Huang		compatible = "arm,gic-400";
55*b69af098SJacky Huang		reg = <0x0 0x50801000 0 0x1000>, /* GICD */
56*b69af098SJacky Huang		      <0x0 0x50802000 0 0x2000>, /* GICC */
57*b69af098SJacky Huang		      <0x0 0x50804000 0 0x2000>, /* GICH */
58*b69af098SJacky Huang		      <0x0 0x50806000 0 0x2000>; /* GICV */
59*b69af098SJacky Huang		#interrupt-cells = <3>;
60*b69af098SJacky Huang		interrupt-parent = <&gic>;
61*b69af098SJacky Huang		interrupt-controller;
62*b69af098SJacky Huang		interrupts = <GIC_PPI 9 (GIC_CPU_MASK_RAW(0x13) |
63*b69af098SJacky Huang			      IRQ_TYPE_LEVEL_HIGH)>;
64*b69af098SJacky Huang	};
65*b69af098SJacky Huang
66*b69af098SJacky Huang	timer {
67*b69af098SJacky Huang		compatible = "arm,armv8-timer";
68*b69af098SJacky Huang		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) |
69*b69af098SJacky Huang			      IRQ_TYPE_LEVEL_LOW)>, /* Physical Secure */
70*b69af098SJacky Huang			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) |
71*b69af098SJacky Huang			      IRQ_TYPE_LEVEL_LOW)>, /* Physical Non-Secure */
72*b69af098SJacky Huang			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) |
73*b69af098SJacky Huang			      IRQ_TYPE_LEVEL_LOW)>, /* Virtual */
74*b69af098SJacky Huang			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) |
75*b69af098SJacky Huang			      IRQ_TYPE_LEVEL_LOW)>; /* Hypervisor */
76*b69af098SJacky Huang		interrupt-parent = <&gic>;
77*b69af098SJacky Huang	};
78*b69af098SJacky Huang
79*b69af098SJacky Huang	soc {
80*b69af098SJacky Huang		compatible = "simple-bus";
81*b69af098SJacky Huang		#address-cells = <2>;
82*b69af098SJacky Huang		#size-cells = <2>;
83*b69af098SJacky Huang		ranges;
84*b69af098SJacky Huang
85*b69af098SJacky Huang		sys: system-management@40460000 {
86*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-reset";
87*b69af098SJacky Huang			reg = <0x0 0x40460000 0x0 0x200>;
88*b69af098SJacky Huang			#reset-cells = <1>;
89*b69af098SJacky Huang		};
90*b69af098SJacky Huang
91*b69af098SJacky Huang		clk: clock-controller@40460200 {
92*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-clk";
93*b69af098SJacky Huang			reg = <0x00000000 0x40460200 0x0 0x100>;
94*b69af098SJacky Huang			#clock-cells = <1>;
95*b69af098SJacky Huang			clocks = <&clk_hxt>;
96*b69af098SJacky Huang		};
97*b69af098SJacky Huang
98*b69af098SJacky Huang		uart0: serial@40700000 {
99*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
100*b69af098SJacky Huang			reg = <0x0 0x40700000 0x0 0x100>;
101*b69af098SJacky Huang			interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
102*b69af098SJacky Huang			clocks = <&clk UART0_GATE>;
103*b69af098SJacky Huang			status = "disabled";
104*b69af098SJacky Huang		};
105*b69af098SJacky Huang
106*b69af098SJacky Huang		uart1: serial@40710000 {
107*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
108*b69af098SJacky Huang			reg = <0x0 0x40710000 0x0 0x100>;
109*b69af098SJacky Huang			interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
110*b69af098SJacky Huang			clocks = <&clk UART1_GATE>;
111*b69af098SJacky Huang			status = "disabled";
112*b69af098SJacky Huang		};
113*b69af098SJacky Huang
114*b69af098SJacky Huang		uart2: serial@40720000 {
115*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
116*b69af098SJacky Huang			reg = <0x0 0x40720000 0x0 0x100>;
117*b69af098SJacky Huang			interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
118*b69af098SJacky Huang			clocks = <&clk UART2_GATE>;
119*b69af098SJacky Huang			status = "disabled";
120*b69af098SJacky Huang		};
121*b69af098SJacky Huang
122*b69af098SJacky Huang		uart3: serial@40730000 {
123*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
124*b69af098SJacky Huang			reg = <0x0 0x40730000 0x0 0x100>;
125*b69af098SJacky Huang			interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
126*b69af098SJacky Huang			clocks = <&clk UART3_GATE>;
127*b69af098SJacky Huang			status = "disabled";
128*b69af098SJacky Huang		};
129*b69af098SJacky Huang
130*b69af098SJacky Huang		uart4: serial@40740000 {
131*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
132*b69af098SJacky Huang			reg = <0x0 0x40740000 0x0 0x100>;
133*b69af098SJacky Huang			interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
134*b69af098SJacky Huang			clocks = <&clk UART4_GATE>;
135*b69af098SJacky Huang			status = "disabled";
136*b69af098SJacky Huang		};
137*b69af098SJacky Huang
138*b69af098SJacky Huang		uart5: serial@40750000 {
139*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
140*b69af098SJacky Huang			reg = <0x0 0x40750000 0x0 0x100>;
141*b69af098SJacky Huang			interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
142*b69af098SJacky Huang			clocks = <&clk UART5_GATE>;
143*b69af098SJacky Huang			status = "disabled";
144*b69af098SJacky Huang		};
145*b69af098SJacky Huang
146*b69af098SJacky Huang		uart6: serial@40760000 {
147*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
148*b69af098SJacky Huang			reg = <0x0 0x40760000 0x0 0x100>;
149*b69af098SJacky Huang			interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
150*b69af098SJacky Huang			clocks = <&clk UART6_GATE>;
151*b69af098SJacky Huang			status = "disabled";
152*b69af098SJacky Huang		};
153*b69af098SJacky Huang
154*b69af098SJacky Huang		uart7: serial@40770000 {
155*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
156*b69af098SJacky Huang			reg = <0x0 0x40770000 0x0 0x100>;
157*b69af098SJacky Huang			interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
158*b69af098SJacky Huang			clocks = <&clk UART7_GATE>;
159*b69af098SJacky Huang			status = "disabled";
160*b69af098SJacky Huang		};
161*b69af098SJacky Huang
162*b69af098SJacky Huang		uart8: serial@40780000 {
163*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
164*b69af098SJacky Huang			reg = <0x0 0x40780000 0x0 0x100>;
165*b69af098SJacky Huang			interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
166*b69af098SJacky Huang			clocks = <&clk UART8_GATE>;
167*b69af098SJacky Huang			status = "disabled";
168*b69af098SJacky Huang		};
169*b69af098SJacky Huang
170*b69af098SJacky Huang		uart9: serial@40790000 {
171*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
172*b69af098SJacky Huang			reg = <0x0 0x40790000 0x0 0x100>;
173*b69af098SJacky Huang			interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
174*b69af098SJacky Huang			clocks = <&clk UART9_GATE>;
175*b69af098SJacky Huang			status = "disabled";
176*b69af098SJacky Huang		};
177*b69af098SJacky Huang
178*b69af098SJacky Huang		uart10: serial@407a0000 {
179*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
180*b69af098SJacky Huang			reg = <0x0 0x407a0000 0x0 0x100>;
181*b69af098SJacky Huang			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
182*b69af098SJacky Huang			clocks = <&clk UART10_GATE>;
183*b69af098SJacky Huang			status = "disabled";
184*b69af098SJacky Huang		};
185*b69af098SJacky Huang
186*b69af098SJacky Huang		uart11: serial@407b0000 {
187*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
188*b69af098SJacky Huang			reg = <0x0 0x407b0000 0x0 0x100>;
189*b69af098SJacky Huang			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
190*b69af098SJacky Huang			clocks = <&clk UART11_GATE>;
191*b69af098SJacky Huang			status = "disabled";
192*b69af098SJacky Huang		};
193*b69af098SJacky Huang
194*b69af098SJacky Huang		uart12: serial@407c0000 {
195*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
196*b69af098SJacky Huang			reg = <0x0 0x407c0000 0x0 0x100>;
197*b69af098SJacky Huang			interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
198*b69af098SJacky Huang			clocks = <&clk UART12_GATE>;
199*b69af098SJacky Huang			status = "disabled";
200*b69af098SJacky Huang		};
201*b69af098SJacky Huang
202*b69af098SJacky Huang		uart13: serial@407d0000 {
203*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
204*b69af098SJacky Huang			reg = <0x0 0x407d0000 0x0 0x100>;
205*b69af098SJacky Huang			interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
206*b69af098SJacky Huang			clocks = <&clk UART13_GATE>;
207*b69af098SJacky Huang			status = "disabled";
208*b69af098SJacky Huang		};
209*b69af098SJacky Huang
210*b69af098SJacky Huang		uart14: serial@407e0000 {
211*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
212*b69af098SJacky Huang			reg = <0x0 0x407e0000 0x0 0x100>;
213*b69af098SJacky Huang			interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
214*b69af098SJacky Huang			clocks = <&clk UART14_GATE>;
215*b69af098SJacky Huang			status = "disabled";
216*b69af098SJacky Huang		};
217*b69af098SJacky Huang
218*b69af098SJacky Huang		uart15: serial@407f0000 {
219*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
220*b69af098SJacky Huang			reg = <0x0 0x407f0000 0x0 0x100>;
221*b69af098SJacky Huang			interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
222*b69af098SJacky Huang			clocks = <&clk UART15_GATE>;
223*b69af098SJacky Huang			status = "disabled";
224*b69af098SJacky Huang		};
225*b69af098SJacky Huang
226*b69af098SJacky Huang		uart16: serial@40880000 {
227*b69af098SJacky Huang			compatible = "nuvoton,ma35d1-uart";
228*b69af098SJacky Huang			reg = <0x0 0x40880000 0x0 0x100>;
229*b69af098SJacky Huang			interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
230*b69af098SJacky Huang			clocks = <&clk UART16_GATE>;
231*b69af098SJacky Huang			status = "disabled";
232*b69af098SJacky Huang		};
233*b69af098SJacky Huang	};
234*b69af098SJacky Huang};
235