1/*
2 * Copyright (c) 2019 Interay Solutions B.V.
3 * Copyright (c) 2019 Oane Kingma
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#include <arm/armv7-m.dtsi>
9#include <dt-bindings/gpio/gpio.h>
10#include <dt-bindings/i2c/i2c.h>
11#include "gpio_gecko.h"
12
13/ {
14	chosen {
15		zephyr,entropy = &trng0;
16		zephyr,flash-controller = &msc;
17	};
18
19	cpus {
20		#address-cells = <1>;
21		#size-cells = <0>;
22
23		cpu0: cpu@0 {
24			compatible = "arm,cortex-m4f";
25			reg = <0>;
26		};
27	};
28
29	sram0: memory@20000000 {
30	       compatible = "mmio-sram";
31	};
32
33	soc {
34		msc: flash-controller@40000000 {
35			compatible = "silabs,gecko-flash-controller";
36			label = "FLASH_CTRL";
37			reg = <0x40000000 0x110>;
38			interrupts = <33 0>;
39
40			#address-cells = <1>;
41			#size-cells = <1>;
42
43			flash0: flash@0 {
44				compatible = "soc-nv-flash";
45				label = "FLASH_0";
46				write-block-size = <4>;
47				erase-block-size = <4096>;
48			};
49		};
50
51		rtcc0: rtcc@40062000 { /* RTCC0 */
52			compatible = "silabs,gecko-rtcc";
53			reg = <0x40062000 0x184>;
54			interrupts = <31 0>;
55			clock-frequency = <32768>;
56			prescaler = <1>;
57			status = "disabled";
58			label = "RTCC_0";
59		};
60
61		uart0: uart@40014000 { /* UART0 */
62			compatible = "silabs,gecko-uart";
63			reg = <0x40014000 0x400>;
64			interrupts = <21 0 22 0>;
65			interrupt-names = "rx", "tx";
66			peripheral-id = <0>;
67			status = "disabled";
68			label = "UART_0";
69		};
70
71		uart1: uart@40014400 { /* UART1 */
72			compatible = "silabs,gecko-uart";
73			reg = <0x40014400 0x400>;
74			interrupts = <23 0 24 0>;
75			interrupt-names = "rx", "tx";
76			peripheral-id = <1>;
77			status = "disabled";
78			label = "UART_1";
79		};
80
81		usart0: usart@40010000 { /* USART0 */
82			compatible = "silabs,gecko-usart";
83			reg = <0x40010000 0x400>;
84			interrupts = <6 0 7 0>;
85			interrupt-names = "rx", "tx";
86			peripheral-id = <0>;
87			status = "disabled";
88			label = "USART_0";
89		};
90
91		usart1: usart@40010400 { /* USART1 */
92			compatible = "silabs,gecko-usart";
93			reg = <0x40010400 0x400>;
94			interrupts = <17 0 18 0>;
95			interrupt-names = "rx", "tx";
96			peripheral-id = <1>;
97			status = "disabled";
98			label = "USART_1";
99		};
100
101		usart2: usart@40010800 { /* USART2 */
102			compatible = "silabs,gecko-usart";
103			reg = <0x40010800 0x400>;
104			interrupts = <19 0 20 0>;
105			interrupt-names = "rx", "tx";
106			peripheral-id = <2>;
107			status = "disabled";
108			label = "USART_2";
109		};
110
111		usart3: usart@40010c00 { /* USART3 */
112			compatible = "silabs,gecko-usart";
113			reg = <0x40010c00 0x400>;
114			interrupts = <37 0 38 0>;
115			interrupt-names = "rx", "tx";
116			peripheral-id = <3>;
117			status = "disabled";
118			label = "USART_3";
119		};
120
121		usart4: usart@40011000 { /* USART4 */
122			compatible = "silabs,gecko-usart";
123			reg = <0x40011000 0x400>;
124			interrupts = <39 0 40 0>;
125			interrupt-names = "rx", "tx";
126			peripheral-id = <4>;
127			status = "disabled";
128			label = "USART_4";
129		};
130
131		usart5: usart@40011400 { /* USART5 */
132			compatible = "silabs,gecko-usart";
133			reg = <0x40011400 0x400>;
134			interrupts = <50 0 51 0>;
135			interrupt-names = "rx", "tx";
136			peripheral-id = <5>;
137			status = "disabled";
138			label = "USART_5";
139		};
140
141		leuart0: leuart@4006a000 { /* LEUART0 */
142			compatible = "silabs,gecko-leuart";
143			reg = <0x4006a000 0x400>;
144			interrupts = <25 0>;
145			peripheral-id = <0>;
146			status = "disabled";
147			label = "LEUART_0";
148		};
149
150		leuart1: leuart@4006a400 { /* LEUART1 */
151			compatible = "silabs,gecko-leuart";
152			reg = <0x4006a400 0x400>;
153			interrupts = <26 0>;
154			peripheral-id = <1>;
155			status = "disabled";
156			label = "LEUART_1";
157		};
158
159		i2c0: i2c@40089000 {
160			compatible = "silabs,gecko-i2c";
161			clock-frequency = <I2C_BITRATE_STANDARD>;
162			#address-cells = <1>;
163			#size-cells = <0>;
164			reg = <0x40089000 0x400>;
165			interrupts = <11 0>;
166			label = "I2C_0";
167			status = "disabled";
168		};
169
170		i2c1: i2c@40089400 {
171			compatible = "silabs,gecko-i2c";
172			clock-frequency = <I2C_BITRATE_STANDARD>;
173			#address-cells = <1>;
174			#size-cells = <0>;
175			reg = <0x40089400 0x400>;
176			interrupts = <12 0>;
177			label = "I2C_1";
178			status = "disabled";
179		};
180
181		i2c2: i2c@40089800 {
182			compatible = "silabs,gecko-i2c";
183			clock-frequency = <I2C_BITRATE_STANDARD>;
184			#address-cells = <1>;
185			#size-cells = <0>;
186			reg = <0x40089800 0x400>;
187			interrupts = <45 0>;
188			label = "I2C_2";
189			status = "disabled";
190		};
191
192		gpio: gpio@40088400 {
193			compatible = "silabs,gecko-gpio";
194			reg = <0x40088400 0xc00>;
195			interrupts = <3 2 13 2>;
196			interrupt-names = "GPIO_EVEN", "GPIO_ODD";
197			label = "GPIO";
198
199			ranges;
200			#address-cells = <1>;
201			#size-cells = <1>;
202
203			gpioa: gpio@40088000 {
204				compatible = "silabs,gecko-gpio-port";
205				reg = <0x40088000 0x30>;
206				peripheral-id = <0>;
207				label = "GPIO_A";
208				gpio-controller;
209				#gpio-cells = <2>;
210				status = "disabled";
211			};
212
213			gpiob: gpio@40088030 {
214				compatible = "silabs,gecko-gpio-port";
215				reg = <0x40088030 0x30>;
216				peripheral-id = <1>;
217				label = "GPIO_B";
218				gpio-controller;
219				#gpio-cells = <2>;
220				status = "disabled";
221			};
222
223			gpioc: gpio@40088060 {
224				compatible = "silabs,gecko-gpio-port";
225				reg = <0x40088060 0x30>;
226				peripheral-id = <2>;
227				label = "GPIO_C";
228				gpio-controller;
229				#gpio-cells = <2>;
230				status = "disabled";
231			};
232
233			gpiod: gpio@40088090 {
234				compatible = "silabs,gecko-gpio-port";
235				reg = <0x40088090 0x30>;
236				peripheral-id = <3>;
237				label = "GPIO_D";
238				gpio-controller;
239				#gpio-cells = <2>;
240				status = "disabled";
241			};
242
243			gpioe: gpio@400880c0 {
244				compatible = "silabs,gecko-gpio-port";
245				reg = <0x400880c0 0x30>;
246				peripheral-id = <4>;
247				label = "GPIO_E";
248				gpio-controller;
249				#gpio-cells = <2>;
250				status = "disabled";
251			};
252
253			gpiof: gpio@400880f0 {
254				compatible = "silabs,gecko-gpio-port";
255				reg = <0x400880f0 0x30>;
256				peripheral-id = <5>;
257				label = "GPIO_F";
258				gpio-controller;
259				#gpio-cells = <2>;
260				status = "disabled";
261			};
262
263			gpiog: gpio@40088120 {
264				compatible = "silabs,gecko-gpio-port";
265				reg = <0x40088120 0x30>;
266				peripheral-id = <6>;
267				label = "GPIO_G";
268				gpio-controller;
269				#gpio-cells = <2>;
270				status = "disabled";
271			};
272
273			gpioh: gpio@40088150 {
274				compatible = "silabs,gecko-gpio-port";
275				reg = <0x40088150 0x30>;
276				peripheral-id = <7>;
277				label = "GPIO_H";
278				gpio-controller;
279				#gpio-cells = <2>;
280				status = "disabled";
281			};
282
283			gpioi: gpio@40088180 {
284				compatible = "silabs,gecko-gpio-port";
285				reg = <0x40088180 0x30>;
286				peripheral-id = <8>;
287				label = "GPIO_I";
288				gpio-controller;
289				#gpio-cells = <2>;
290				status = "disabled";
291			};
292		};
293
294		trng0: trng@4001d000 {
295			compatible = "silabs,gecko-trng";
296			reg = <0x4001d000 0x400>;
297			interrupts = <66 0>;
298			label = "TRNG0";
299			status = "disabled";
300		};
301
302		wdog0: wdog@40052000 {
303			compatible = "silabs,gecko-wdog";
304			reg = <0x40052000 0x2C>;
305			peripheral-id = <0>;
306			label = "WDOG0";
307			interrupts = <1 0>;
308			status = "disabled";
309		};
310
311		wdog1: wdog@40052400 {
312			compatible = "silabs,gecko-wdog";
313			reg = <0x40052400 0x2C>;
314			peripheral-id = <1>;
315			label = "WDOG1";
316			interrupts = <64 0>;
317			status = "disabled";
318		};
319	};
320};
321
322&nvic {
323	arm,num-irq-priority-bits = <3>;
324};
325