1724ba675SRob Herring// SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2724ba675SRob Herring// Copyright 2021 Jonathan Neuschäfer
3724ba675SRob Herring
4724ba675SRob Herring#include <dt-bindings/interrupt-controller/irq.h>
5724ba675SRob Herring
6724ba675SRob Herring/ {
7724ba675SRob Herring	compatible = "nuvoton,wpcm450";
8724ba675SRob Herring	#address-cells = <1>;
9724ba675SRob Herring	#size-cells = <1>;
10724ba675SRob Herring
11724ba675SRob Herring	aliases {
12724ba675SRob Herring		gpio0 = &gpio0;
13724ba675SRob Herring		gpio1 = &gpio1;
14724ba675SRob Herring		gpio2 = &gpio2;
15724ba675SRob Herring		gpio3 = &gpio3;
16724ba675SRob Herring		gpio4 = &gpio4;
17724ba675SRob Herring		gpio5 = &gpio5;
18724ba675SRob Herring		gpio6 = &gpio6;
19724ba675SRob Herring		gpio7 = &gpio7;
20724ba675SRob Herring	};
21724ba675SRob Herring
22724ba675SRob Herring	cpus {
23724ba675SRob Herring		#address-cells = <1>;
24724ba675SRob Herring		#size-cells = <0>;
25724ba675SRob Herring
26724ba675SRob Herring		cpu@0 {
27724ba675SRob Herring			compatible = "arm,arm926ej-s";
28724ba675SRob Herring			device_type = "cpu";
29724ba675SRob Herring			reg = <0>;
30724ba675SRob Herring		};
31724ba675SRob Herring	};
32724ba675SRob Herring
33724ba675SRob Herring	clk24m: clock-24mhz {
34724ba675SRob Herring		/* 24 MHz dummy clock */
35724ba675SRob Herring		compatible = "fixed-clock";
36724ba675SRob Herring		clock-frequency = <24000000>;
37724ba675SRob Herring		#clock-cells = <0>;
38724ba675SRob Herring	};
39724ba675SRob Herring
40724ba675SRob Herring	refclk: clock-48mhz {
41724ba675SRob Herring		/* 48 MHz reference oscillator */
42724ba675SRob Herring		compatible = "fixed-clock";
43724ba675SRob Herring		clock-output-names = "ref";
44724ba675SRob Herring		clock-frequency = <48000000>;
45724ba675SRob Herring		#clock-cells = <0>;
46724ba675SRob Herring	};
47724ba675SRob Herring
48724ba675SRob Herring	soc {
49724ba675SRob Herring		compatible = "simple-bus";
50724ba675SRob Herring		#address-cells = <1>;
51724ba675SRob Herring		#size-cells = <1>;
52724ba675SRob Herring		interrupt-parent = <&aic>;
53724ba675SRob Herring		ranges;
54724ba675SRob Herring
55724ba675SRob Herring		gcr: syscon@b0000000 {
56724ba675SRob Herring			compatible = "nuvoton,wpcm450-gcr", "syscon", "simple-mfd";
57724ba675SRob Herring			reg = <0xb0000000 0x200>;
58724ba675SRob Herring		};
59724ba675SRob Herring
60724ba675SRob Herring		clk: clock-controller@b0000200 {
61724ba675SRob Herring			compatible = "nuvoton,wpcm450-clk";
62724ba675SRob Herring			reg = <0xb0000200 0x100>;
63724ba675SRob Herring			clocks = <&refclk>;
64724ba675SRob Herring			clock-names = "ref";
65724ba675SRob Herring			#clock-cells = <1>;
66724ba675SRob Herring			#reset-cells = <1>;
67724ba675SRob Herring		};
68724ba675SRob Herring
69724ba675SRob Herring		serial0: serial@b8000000 {
70724ba675SRob Herring			compatible = "nuvoton,wpcm450-uart";
71724ba675SRob Herring			reg = <0xb8000000 0x20>;
72724ba675SRob Herring			reg-shift = <2>;
73724ba675SRob Herring			interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
74724ba675SRob Herring			clocks = <&clk24m>;
75724ba675SRob Herring			pinctrl-names = "default";
76724ba675SRob Herring			pinctrl-0 = <&bsp_pins>;
77724ba675SRob Herring			status = "disabled";
78724ba675SRob Herring		};
79724ba675SRob Herring
80724ba675SRob Herring		serial1: serial@b8000100 {
81724ba675SRob Herring			compatible = "nuvoton,wpcm450-uart";
82724ba675SRob Herring			reg = <0xb8000100 0x20>;
83724ba675SRob Herring			reg-shift = <2>;
84724ba675SRob Herring			interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
85724ba675SRob Herring			clocks = <&clk24m>;
86724ba675SRob Herring			status = "disabled";
87724ba675SRob Herring		};
88724ba675SRob Herring
89724ba675SRob Herring		timer0: timer@b8001000 {
90724ba675SRob Herring			compatible = "nuvoton,wpcm450-timer";
91724ba675SRob Herring			interrupts = <12 IRQ_TYPE_LEVEL_HIGH>;
92724ba675SRob Herring			reg = <0xb8001000 0x1c>;
93724ba675SRob Herring			clocks = <&clk24m>;
94724ba675SRob Herring		};
95724ba675SRob Herring
96724ba675SRob Herring		watchdog0: watchdog@b800101c {
97724ba675SRob Herring			compatible = "nuvoton,wpcm450-wdt";
98724ba675SRob Herring			interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
99724ba675SRob Herring			reg = <0xb800101c 0x4>;
100724ba675SRob Herring			clocks = <&clk24m>;
101724ba675SRob Herring		};
102724ba675SRob Herring
103724ba675SRob Herring		aic: interrupt-controller@b8002000 {
104724ba675SRob Herring			compatible = "nuvoton,wpcm450-aic";
105724ba675SRob Herring			reg = <0xb8002000 0x1000>;
106724ba675SRob Herring			interrupt-controller;
107724ba675SRob Herring			#interrupt-cells = <2>;
108724ba675SRob Herring		};
109724ba675SRob Herring
110724ba675SRob Herring		pinctrl: pinctrl@b8003000 {
111724ba675SRob Herring			compatible = "nuvoton,wpcm450-pinctrl";
112724ba675SRob Herring			reg = <0xb8003000 0x1000>;
113724ba675SRob Herring			#address-cells = <1>;
114724ba675SRob Herring			#size-cells = <0>;
115724ba675SRob Herring
116724ba675SRob Herring			gpio0: gpio@0 {
117724ba675SRob Herring				reg = <0>;
118724ba675SRob Herring				gpio-controller;
119724ba675SRob Herring				#gpio-cells = <2>;
120724ba675SRob Herring				interrupts = <2 IRQ_TYPE_LEVEL_HIGH>,
121724ba675SRob Herring					     <3 IRQ_TYPE_LEVEL_HIGH>,
122724ba675SRob Herring					     <4 IRQ_TYPE_LEVEL_HIGH>;
123*ab7e3fe1SRob Herring				#interrupt-cells = <2>;
124724ba675SRob Herring				interrupt-controller;
125724ba675SRob Herring			};
126724ba675SRob Herring
127724ba675SRob Herring			gpio1: gpio@1 {
128724ba675SRob Herring				reg = <1>;
129724ba675SRob Herring				gpio-controller;
130724ba675SRob Herring				#gpio-cells = <2>;
131724ba675SRob Herring				interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
132*ab7e3fe1SRob Herring				#interrupt-cells = <2>;
133724ba675SRob Herring				interrupt-controller;
134724ba675SRob Herring			};
135724ba675SRob Herring
136724ba675SRob Herring			gpio2: gpio@2 {
137724ba675SRob Herring				reg = <2>;
138724ba675SRob Herring				gpio-controller;
139724ba675SRob Herring				#gpio-cells = <2>;
140724ba675SRob Herring			};
141724ba675SRob Herring
142724ba675SRob Herring			gpio3: gpio@3 {
143724ba675SRob Herring				reg = <3>;
144724ba675SRob Herring				gpio-controller;
145724ba675SRob Herring				#gpio-cells = <2>;
146724ba675SRob Herring			};
147724ba675SRob Herring
148724ba675SRob Herring			gpio4: gpio@4 {
149724ba675SRob Herring				reg = <4>;
150724ba675SRob Herring				gpio-controller;
151724ba675SRob Herring				#gpio-cells = <2>;
152724ba675SRob Herring			};
153724ba675SRob Herring
154724ba675SRob Herring			gpio5: gpio@5 {
155724ba675SRob Herring				reg = <5>;
156724ba675SRob Herring				gpio-controller;
157724ba675SRob Herring				#gpio-cells = <2>;
158724ba675SRob Herring			};
159724ba675SRob Herring
160724ba675SRob Herring			gpio6: gpio@6 {
161724ba675SRob Herring				reg = <6>;
162724ba675SRob Herring				gpio-controller;
163724ba675SRob Herring				#gpio-cells = <2>;
164724ba675SRob Herring			};
165724ba675SRob Herring
166724ba675SRob Herring			gpio7: gpio@7 {
167724ba675SRob Herring				reg = <7>;
168724ba675SRob Herring				gpio-controller;
169724ba675SRob Herring				#gpio-cells = <2>;
170724ba675SRob Herring			};
171724ba675SRob Herring
172724ba675SRob Herring			smb3_pins: mux-smb3 {
173724ba675SRob Herring				groups = "smb3";
174724ba675SRob Herring				function = "smb3";
175724ba675SRob Herring			};
176724ba675SRob Herring
177724ba675SRob Herring			smb4_pins: mux-smb4 {
178724ba675SRob Herring				groups = "smb4";
179724ba675SRob Herring				function = "smb4";
180724ba675SRob Herring			};
181724ba675SRob Herring
182724ba675SRob Herring			smb5_pins: mux-smb5 {
183724ba675SRob Herring				groups = "smb5";
184724ba675SRob Herring				function = "smb5";
185724ba675SRob Herring			};
186724ba675SRob Herring
187724ba675SRob Herring			scs1_pins: mux-scs1 {
188724ba675SRob Herring				groups = "scs1";
189724ba675SRob Herring				function = "scs1";
190724ba675SRob Herring			};
191724ba675SRob Herring
192724ba675SRob Herring			scs2_pins: mux-scs2 {
193724ba675SRob Herring				groups = "scs2";
194724ba675SRob Herring				function = "scs2";
195724ba675SRob Herring			};
196724ba675SRob Herring
197724ba675SRob Herring			scs3_pins: mux-scs3 {
198724ba675SRob Herring				groups = "scs3";
199724ba675SRob Herring				function = "scs3";
200724ba675SRob Herring			};
201724ba675SRob Herring
202724ba675SRob Herring			smb0_pins: mux-smb0 {
203724ba675SRob Herring				groups = "smb0";
204724ba675SRob Herring				function = "smb0";
205724ba675SRob Herring			};
206724ba675SRob Herring
207724ba675SRob Herring			smb1_pins: mux-smb1 {
208724ba675SRob Herring				groups = "smb1";
209724ba675SRob Herring				function = "smb1";
210724ba675SRob Herring			};
211724ba675SRob Herring
212724ba675SRob Herring			smb2_pins: mux-smb2 {
213724ba675SRob Herring				groups = "smb2";
214724ba675SRob Herring				function = "smb2";
215724ba675SRob Herring			};
216724ba675SRob Herring
217724ba675SRob Herring			bsp_pins: mux-bsp {
218724ba675SRob Herring				groups = "bsp";
219724ba675SRob Herring				function = "bsp";
220724ba675SRob Herring			};
221724ba675SRob Herring
222724ba675SRob Herring			hsp1_pins: mux-hsp1 {
223724ba675SRob Herring				groups = "hsp1";
224724ba675SRob Herring				function = "hsp1";
225724ba675SRob Herring			};
226724ba675SRob Herring
227724ba675SRob Herring			hsp2_pins: mux-hsp2 {
228724ba675SRob Herring				groups = "hsp2";
229724ba675SRob Herring				function = "hsp2";
230724ba675SRob Herring			};
231724ba675SRob Herring
232724ba675SRob Herring			r1err_pins: mux-r1err {
233724ba675SRob Herring				groups = "r1err";
234724ba675SRob Herring				function = "r1err";
235724ba675SRob Herring			};
236724ba675SRob Herring
237724ba675SRob Herring			r1md_pins: mux-r1md {
238724ba675SRob Herring				groups = "r1md";
239724ba675SRob Herring				function = "r1md";
240724ba675SRob Herring			};
241724ba675SRob Herring
242724ba675SRob Herring			rmii2_pins: mux-rmii2 {
243724ba675SRob Herring				groups = "rmii2";
244724ba675SRob Herring				function = "rmii2";
245724ba675SRob Herring			};
246724ba675SRob Herring
247724ba675SRob Herring			r2err_pins: mux-r2err {
248724ba675SRob Herring				groups = "r2err";
249724ba675SRob Herring				function = "r2err";
250724ba675SRob Herring			};
251724ba675SRob Herring
252724ba675SRob Herring			r2md_pins: mux-r2md {
253724ba675SRob Herring				groups = "r2md";
254724ba675SRob Herring				function = "r2md";
255724ba675SRob Herring			};
256724ba675SRob Herring
257724ba675SRob Herring			kbcc_pins: mux-kbcc {
258724ba675SRob Herring				groups = "kbcc";
259724ba675SRob Herring				function = "kbcc";
260724ba675SRob Herring			};
261724ba675SRob Herring
262724ba675SRob Herring			dvo0_pins: mux-dvo0 {
263724ba675SRob Herring				groups = "dvo";
264724ba675SRob Herring				function = "dvo0";
265724ba675SRob Herring			};
266724ba675SRob Herring
267724ba675SRob Herring			dvo3_pins: mux-dvo3 {
268724ba675SRob Herring				groups = "dvo";
269724ba675SRob Herring				function = "dvo3";
270724ba675SRob Herring			};
271724ba675SRob Herring
272724ba675SRob Herring			clko_pins: mux-clko {
273724ba675SRob Herring				groups = "clko";
274724ba675SRob Herring				function = "clko";
275724ba675SRob Herring			};
276724ba675SRob Herring
277724ba675SRob Herring			smi_pins: mux-smi {
278724ba675SRob Herring				groups = "smi";
279724ba675SRob Herring				function = "smi";
280724ba675SRob Herring			};
281724ba675SRob Herring
282724ba675SRob Herring			uinc_pins: mux-uinc {
283724ba675SRob Herring				groups = "uinc";
284724ba675SRob Herring				function = "uinc";
285724ba675SRob Herring			};
286724ba675SRob Herring
287724ba675SRob Herring			gspi_pins: mux-gspi {
288724ba675SRob Herring				groups = "gspi";
289724ba675SRob Herring				function = "gspi";
290724ba675SRob Herring			};
291724ba675SRob Herring
292724ba675SRob Herring			mben_pins: mux-mben {
293724ba675SRob Herring				groups = "mben";
294724ba675SRob Herring				function = "mben";
295724ba675SRob Herring			};
296724ba675SRob Herring
297724ba675SRob Herring			xcs2_pins: mux-xcs2 {
298724ba675SRob Herring				groups = "xcs2";
299724ba675SRob Herring				function = "xcs2";
300724ba675SRob Herring			};
301724ba675SRob Herring
302724ba675SRob Herring			xcs1_pins: mux-xcs1 {
303724ba675SRob Herring				groups = "xcs1";
304724ba675SRob Herring				function = "xcs1";
305724ba675SRob Herring			};
306724ba675SRob Herring
307724ba675SRob Herring			sdio_pins: mux-sdio {
308724ba675SRob Herring				groups = "sdio";
309724ba675SRob Herring				function = "sdio";
310724ba675SRob Herring			};
311724ba675SRob Herring
312724ba675SRob Herring			sspi_pins: mux-sspi {
313724ba675SRob Herring				groups = "sspi";
314724ba675SRob Herring				function = "sspi";
315724ba675SRob Herring			};
316724ba675SRob Herring
317724ba675SRob Herring			fi0_pins: mux-fi0 {
318724ba675SRob Herring				groups = "fi0";
319724ba675SRob Herring				function = "fi0";
320724ba675SRob Herring			};
321724ba675SRob Herring
322724ba675SRob Herring			fi1_pins: mux-fi1 {
323724ba675SRob Herring				groups = "fi1";
324724ba675SRob Herring				function = "fi1";
325724ba675SRob Herring			};
326724ba675SRob Herring
327724ba675SRob Herring			fi2_pins: mux-fi2 {
328724ba675SRob Herring				groups = "fi2";
329724ba675SRob Herring				function = "fi2";
330724ba675SRob Herring			};
331724ba675SRob Herring
332724ba675SRob Herring			fi3_pins: mux-fi3 {
333724ba675SRob Herring				groups = "fi3";
334724ba675SRob Herring				function = "fi3";
335724ba675SRob Herring			};
336724ba675SRob Herring
337724ba675SRob Herring			fi4_pins: mux-fi4 {
338724ba675SRob Herring				groups = "fi4";
339724ba675SRob Herring				function = "fi4";
340724ba675SRob Herring			};
341724ba675SRob Herring
342724ba675SRob Herring			fi5_pins: mux-fi5 {
343724ba675SRob Herring				groups = "fi5";
344724ba675SRob Herring				function = "fi5";
345724ba675SRob Herring			};
346724ba675SRob Herring
347724ba675SRob Herring			fi6_pins: mux-fi6 {
348724ba675SRob Herring				groups = "fi6";
349724ba675SRob Herring				function = "fi6";
350724ba675SRob Herring			};
351724ba675SRob Herring
352724ba675SRob Herring			fi7_pins: mux-fi7 {
353724ba675SRob Herring				groups = "fi7";
354724ba675SRob Herring				function = "fi7";
355724ba675SRob Herring			};
356724ba675SRob Herring
357724ba675SRob Herring			fi8_pins: mux-fi8 {
358724ba675SRob Herring				groups = "fi8";
359724ba675SRob Herring				function = "fi8";
360724ba675SRob Herring			};
361724ba675SRob Herring
362724ba675SRob Herring			fi9_pins: mux-fi9 {
363724ba675SRob Herring				groups = "fi9";
364724ba675SRob Herring				function = "fi9";
365724ba675SRob Herring			};
366724ba675SRob Herring
367724ba675SRob Herring			fi10_pins: mux-fi10 {
368724ba675SRob Herring				groups = "fi10";
369724ba675SRob Herring				function = "fi10";
370724ba675SRob Herring			};
371724ba675SRob Herring
372724ba675SRob Herring			fi11_pins: mux-fi11 {
373724ba675SRob Herring				groups = "fi11";
374724ba675SRob Herring				function = "fi11";
375724ba675SRob Herring			};
376724ba675SRob Herring
377724ba675SRob Herring			fi12_pins: mux-fi12 {
378724ba675SRob Herring				groups = "fi12";
379724ba675SRob Herring				function = "fi12";
380724ba675SRob Herring			};
381724ba675SRob Herring
382724ba675SRob Herring			fi13_pins: mux-fi13 {
383724ba675SRob Herring				groups = "fi13";
384724ba675SRob Herring				function = "fi13";
385724ba675SRob Herring			};
386724ba675SRob Herring
387724ba675SRob Herring			fi14_pins: mux-fi14 {
388724ba675SRob Herring				groups = "fi14";
389724ba675SRob Herring				function = "fi14";
390724ba675SRob Herring			};
391724ba675SRob Herring
392724ba675SRob Herring			fi15_pins: mux-fi15 {
393724ba675SRob Herring				groups = "fi15";
394724ba675SRob Herring				function = "fi15";
395724ba675SRob Herring			};
396724ba675SRob Herring
397724ba675SRob Herring			pwm0_pins: mux-pwm0 {
398724ba675SRob Herring				groups = "pwm0";
399724ba675SRob Herring				function = "pwm0";
400724ba675SRob Herring			};
401724ba675SRob Herring
402724ba675SRob Herring			pwm1_pins: mux-pwm1 {
403724ba675SRob Herring				groups = "pwm1";
404724ba675SRob Herring				function = "pwm1";
405724ba675SRob Herring			};
406724ba675SRob Herring
407724ba675SRob Herring			pwm2_pins: mux-pwm2 {
408724ba675SRob Herring				groups = "pwm2";
409724ba675SRob Herring				function = "pwm2";
410724ba675SRob Herring			};
411724ba675SRob Herring
412724ba675SRob Herring			pwm3_pins: mux-pwm3 {
413724ba675SRob Herring				groups = "pwm3";
414724ba675SRob Herring				function = "pwm3";
415724ba675SRob Herring			};
416724ba675SRob Herring
417724ba675SRob Herring			pwm4_pins: mux-pwm4 {
418724ba675SRob Herring				groups = "pwm4";
419724ba675SRob Herring				function = "pwm4";
420724ba675SRob Herring			};
421724ba675SRob Herring
422724ba675SRob Herring			pwm5_pins: mux-pwm5 {
423724ba675SRob Herring				groups = "pwm5";
424724ba675SRob Herring				function = "pwm5";
425724ba675SRob Herring			};
426724ba675SRob Herring
427724ba675SRob Herring			pwm6_pins: mux-pwm6 {
428724ba675SRob Herring				groups = "pwm6";
429724ba675SRob Herring				function = "pwm6";
430724ba675SRob Herring			};
431724ba675SRob Herring
432724ba675SRob Herring			pwm7_pins: mux-pwm7 {
433724ba675SRob Herring				groups = "pwm7";
434724ba675SRob Herring				function = "pwm7";
435724ba675SRob Herring			};
436724ba675SRob Herring
437724ba675SRob Herring			hg0_pins: mux-hg0 {
438724ba675SRob Herring				groups = "hg0";
439724ba675SRob Herring				function = "hg0";
440724ba675SRob Herring			};
441724ba675SRob Herring
442724ba675SRob Herring			hg1_pins: mux-hg1 {
443724ba675SRob Herring				groups = "hg1";
444724ba675SRob Herring				function = "hg1";
445724ba675SRob Herring			};
446724ba675SRob Herring
447724ba675SRob Herring			hg2_pins: mux-hg2 {
448724ba675SRob Herring				groups = "hg2";
449724ba675SRob Herring				function = "hg2";
450724ba675SRob Herring			};
451724ba675SRob Herring
452724ba675SRob Herring			hg3_pins: mux-hg3 {
453724ba675SRob Herring				groups = "hg3";
454724ba675SRob Herring				function = "hg3";
455724ba675SRob Herring			};
456724ba675SRob Herring
457724ba675SRob Herring			hg4_pins: mux-hg4 {
458724ba675SRob Herring				groups = "hg4";
459724ba675SRob Herring				function = "hg4";
460724ba675SRob Herring			};
461724ba675SRob Herring
462724ba675SRob Herring			hg5_pins: mux-hg5 {
463724ba675SRob Herring				groups = "hg5";
464724ba675SRob Herring				function = "hg5";
465724ba675SRob Herring			};
466724ba675SRob Herring
467724ba675SRob Herring			hg6_pins: mux-hg6 {
468724ba675SRob Herring				groups = "hg6";
469724ba675SRob Herring				function = "hg6";
470724ba675SRob Herring			};
471724ba675SRob Herring
472724ba675SRob Herring			hg7_pins: mux-hg7 {
473724ba675SRob Herring				groups = "hg7";
474724ba675SRob Herring				function = "hg7";
475724ba675SRob Herring			};
476724ba675SRob Herring		};
477724ba675SRob Herring
478724ba675SRob Herring		fiu: spi-controller@c8000000 {
479724ba675SRob Herring			compatible = "nuvoton,wpcm450-fiu";
480724ba675SRob Herring			#address-cells = <1>;
481724ba675SRob Herring			#size-cells = <0>;
482724ba675SRob Herring			reg = <0xc8000000 0x1000>, <0xc0000000 0x4000000>;
483724ba675SRob Herring			reg-names = "control", "memory";
484724ba675SRob Herring			clocks = <&clk 0>;
485724ba675SRob Herring			nuvoton,shm = <&shm>;
486724ba675SRob Herring			status = "disabled";
487724ba675SRob Herring		};
488724ba675SRob Herring
489724ba675SRob Herring		shm: syscon@c8001000 {
490724ba675SRob Herring			compatible = "nuvoton,wpcm450-shm", "syscon";
491724ba675SRob Herring			reg = <0xc8001000 0x1000>;
492724ba675SRob Herring			reg-io-width = <1>;
493724ba675SRob Herring		};
494724ba675SRob Herring	};
495724ba675SRob Herring};
496