1/* SPDX-License-Identifier: Apache-2.0 */
2
3#include <arm/armv7-m.dtsi>
4#include <dt-bindings/gpio/gpio.h>
5#include <dt-bindings/i2c/i2c.h>
6#include "gpio_gecko.h"
7#include <dt-bindings/pwm/pwm.h>
8
9/ {
10	chosen {
11		zephyr,entropy = &trng0;
12		zephyr,flash-controller = &msc;
13	};
14
15	cpus {
16		#address-cells = <1>;
17		#size-cells = <0>;
18
19		cpu0: cpu@0 {
20			compatible = "arm,cortex-m4f";
21			reg = <0>;
22		};
23	};
24
25	sram0: memory@20000000 {
26		compatible = "mmio-sram";
27	};
28
29	soc {
30		msc: flash-controller@400e0000 {
31			compatible = "silabs,gecko-flash-controller";
32			label = "FLASH_CTRL";
33			reg = <0x400e0000 0x104>;
34			interrupts = <25 0>;
35
36			#address-cells = <1>;
37			#size-cells = <1>;
38
39			flash0: flash@0 {
40				compatible = "soc-nv-flash";
41				label = "FLASH_0";
42				write-block-size = <4>;
43				erase-block-size = <2048>;
44			};
45		};
46
47		usart0: usart@40010000 { /* USART0 */
48			compatible = "silabs,gecko-usart";
49			reg = <0x40010000 0x400>;
50			interrupts = <12 0>, <13 0>;
51			interrupt-names = "rx", "tx";
52			peripheral-id = <0>;
53			status = "disabled";
54			label = "USART_0";
55		};
56
57		usart1: usart@40010400 { /* USART1 */
58			compatible = "silabs,gecko-usart";
59			reg = <0x40010400 0x400>;
60			interrupts = <20 0>, <21 0>;
61			interrupt-names = "rx", "tx";
62			peripheral-id = <1>;
63			status = "disabled";
64			label = "USART_1";
65		};
66
67		usart2: usart@40010800 { /* USART2 */
68			compatible = "silabs,gecko-usart";
69			reg = <0x40010800 0x400>;
70			interrupts = <40 0>, <41 0>;
71			interrupt-names = "rx", "tx";
72			peripheral-id = <2>;
73			status = "disabled";
74			label = "USART_2";
75		};
76
77		usart3: usart@40010c00 { /* USART3 */
78			compatible = "silabs,gecko-usart";
79			reg = <0x40010c00 0x400>;
80			interrupts = <43 0>, <44 0>;
81			interrupt-names = "rx", "tx";
82			peripheral-id = <3>;
83			status = "disabled";
84			label = "USART_3";
85		};
86
87		leuart0: leuart@4004a000 { /* LEUART0 */
88			compatible = "silabs,gecko-leuart";
89			reg = <0x4004a000 0x400>;
90			interrupts = <22 0>;
91			peripheral-id = <0>;
92			status = "disabled";
93			label = "LEUART_0";
94		};
95
96		i2c0: i2c@4000c000 {
97			compatible = "silabs,gecko-i2c";
98			clock-frequency = <I2C_BITRATE_STANDARD>;
99			#address-cells = <1>;
100			#size-cells = <0>;
101			reg = <0x4000c000 0x400>;
102			interrupts = <17 0>;
103			label = "I2C_0";
104			status = "disabled";
105		};
106
107		i2c1: i2c@4000c400 {
108			compatible = "silabs,gecko-i2c";
109			clock-frequency = <I2C_BITRATE_STANDARD>;
110			#address-cells = <1>;
111			#size-cells = <0>;
112			reg = <0x4000c400 0x400>;
113			interrupts = <42 0>;
114			label = "I2C_1";
115			status = "disabled";
116		};
117
118		rtcc0: rtcc@40042000 {
119			compatible = "silabs,gecko-rtcc";
120			reg = <0x40042000 0x184>;
121			interrupts = <30 0>;
122			clock-frequency = <32768>;
123			prescaler = <1>;
124			status = "disabled";
125			label = "RTCC_0";
126		};
127
128		gpio: gpio@4000a400 {
129			compatible = "silabs,gecko-gpio";
130			reg = <0x4000a400 0xc00>;
131			interrupts = <10 2 18 2>;
132			interrupt-names = "GPIO_EVEN", "GPIO_ODD";
133			label = "GPIO";
134
135			ranges;
136			#address-cells = <1>;
137			#size-cells = <1>;
138
139			gpioa: gpio@4000a000 {
140				compatible = "silabs,gecko-gpio-port";
141				reg = <0x4000a000 0x30>;
142				peripheral-id = <0>;
143				label = "GPIO_A";
144				gpio-controller;
145				#gpio-cells = <2>;
146				status = "disabled";
147			};
148
149			gpiob: gpio@4000a030 {
150				compatible = "silabs,gecko-gpio-port";
151				reg = <0x4000a030 0x30>;
152				peripheral-id = <1>;
153				label = "GPIO_B";
154				gpio-controller;
155				#gpio-cells = <2>;
156				status = "disabled";
157			};
158
159			gpioc: gpio@4000a060 {
160				compatible = "silabs,gecko-gpio-port";
161				reg = <0x4000a060 0x30>;
162				peripheral-id = <2>;
163				label = "GPIO_C";
164				gpio-controller;
165				#gpio-cells = <2>;
166				status = "disabled";
167			};
168
169			gpiod: gpio@4000a090 {
170				compatible = "silabs,gecko-gpio-port";
171				reg = <0x4000a090 0x30>;
172				peripheral-id = <3>;
173				label = "GPIO_D";
174				gpio-controller;
175				#gpio-cells = <2>;
176				status = "disabled";
177			};
178
179			gpiof: gpio@4000a0f0 {
180				compatible = "silabs,gecko-gpio-port";
181				reg = <0x4000a0f0 0x30>;
182				peripheral-id = <5>;
183				label = "GPIO_F";
184				gpio-controller;
185				#gpio-cells = <2>;
186				status = "disabled";
187			};
188
189			gpioi: gpio@4000a180 {
190				compatible = "silabs,gecko-gpio-port";
191				reg = <0x4000a180 0x30>;
192				peripheral-id = <8>;
193				label = "GPIO_I";
194				gpio-controller;
195				#gpio-cells = <2>;
196				status = "disabled";
197			};
198
199			gpioj: gpio@4000a1b0 {
200				compatible = "silabs,gecko-gpio-port";
201				reg = <0x4000a1b0 0x30>;
202				peripheral-id = <9>;
203				label = "GPIO_J";
204				gpio-controller;
205				#gpio-cells = <2>;
206				status = "disabled";
207			};
208
209			gpiok: gpio@4000a1e0 {
210				compatible = "silabs,gecko-gpio-port";
211				reg = <0x4000a1e0 0x30>;
212				peripheral-id = <10>;
213				label = "GPIO_K";
214				gpio-controller;
215				#gpio-cells = <2>;
216				status = "disabled";
217			};
218		};
219
220		wdog0: wdog@40052000 {
221			compatible = "silabs,gecko-wdog";
222			reg = <0x40052000 0x2C>;
223			peripheral-id = <0>;
224			label = "WDOG0";
225			interrupts = <2 0>;
226			status = "disabled";
227		};
228
229		wdog1: wdog@40052400 {
230			compatible = "silabs,gecko-wdog";
231			reg = <0x40052400 0x2C>;
232			peripheral-id = <1>;
233			label = "WDOG1";
234			interrupts = <3 0>;
235			status = "disabled";
236		};
237
238		timer0: timer@40018000 {
239			compatible = "silabs,gecko-timers";
240			reg = <0x40018000 0x400>;
241			status = "disabled";
242			label = "TIMER_0";
243
244			pwm {
245				compatible = "silabs,gecko-pwm";
246				status = "disabled";
247				label = "PWM_0";
248				#pwm-cells = <2>;
249			};
250		};
251
252		trng0: trng@4001d000 {
253			compatible = "silabs,gecko-trng";
254			reg = <0x4001d000 0x400>;
255			interrupts = <49 0>;
256			label = "TRNG0";
257			status = "disabled";
258		};
259	};
260};
261
262&nvic {
263	arm,num-irq-priority-bits = <3>;
264};
265