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
8/ {
9	chosen {
10		zephyr,flash-controller = &msc;
11	};
12
13	cpus {
14		#address-cells = <1>;
15		#size-cells = <0>;
16
17		cpu0: cpu@0 {
18			compatible = "arm,cortex-m4f";
19			reg = <0>;
20		};
21	};
22
23	sram0: memory@20000000 {
24		compatible = "mmio-sram";
25	};
26
27	soc {
28		msc: flash-controller@400c0000 {
29			compatible = "silabs,gecko-flash-controller";
30			label = "FLASH_CTRL";
31			reg = <0x400c0000 0x78>;
32			interrupts = <35 0>;
33
34			#address-cells = <1>;
35			#size-cells = <1>;
36
37			flash0: flash@0 {
38				compatible = "soc-nv-flash";
39				label = "FLASH_0";
40				write-block-size = <4>;
41				erase-block-size = <2048>;
42			};
43		};
44
45		usart0: usart@4000c000 { /* USART0 */
46			compatible = "silabs,gecko-usart";
47			reg = <0x4000c000 0x400>;
48			interrupts = <3 0>, <4 0>;
49			interrupt-names = "rx", "tx";
50			peripheral-id = <0>;
51			status = "disabled";
52			label = "UART_0";
53		};
54
55		usart1: usart@4000c400 { /* USART1 */
56			compatible = "silabs,gecko-usart";
57			reg = <0x4000c400 0x400>;
58			interrupts = <15 0>, <16 0>;
59			interrupt-names = "rx", "tx";
60			peripheral-id = <1>;
61			status = "disabled";
62			label = "UART_1";
63		};
64
65		usart2: usart@4000c800 { /* USART2 */
66			compatible = "silabs,gecko-usart";
67			reg = <0x4000c800 0x400>;
68			interrupts = <18 0>, <19 0>;
69			interrupt-names = "rx", "tx";
70			peripheral-id = <2>;
71			status = "disabled";
72			label = "UART_2";
73		};
74
75		uart0: uart@4000e000 { /* UART0 */
76			compatible = "silabs,gecko-uart";
77			reg = <0x4000e000 0x400>;
78			interrupts = <20 0>, <21 0>;
79			interrupt-names = "rx", "tx";
80			peripheral-id = <0>;
81			status = "disabled";
82			label = "UART_3";
83		};
84
85		uart1: uart@4000e400 { /* UART1 */
86			compatible = "silabs,gecko-uart";
87			reg = <0x4000e400 0x400>;
88			interrupts = <22 0>, <23 0>;
89			interrupt-names = "rx", "tx";
90			peripheral-id = <1>;
91			status = "disabled";
92			label = "UART_4";
93		};
94
95		leuart0: leuart@40084000 { /* LEUART0 */
96			compatible = "silabs,gecko-leuart";
97			reg = <0x40084000 0x400>;
98			interrupts = <24 0>;
99			peripheral-id = <0>;
100			status = "disabled";
101			label = "LEUART_0";
102		};
103
104		leuart1: leuart@40084400 { /* LEUART1 */
105			compatible = "silabs,gecko-leuart";
106			reg = <0x40084400 0x400>;
107			interrupts = <25 0>;
108			peripheral-id = <1>;
109			status = "disabled";
110			label = "LEUART_1";
111		};
112
113		i2c0: i2c@4000a000 {
114			compatible = "silabs,gecko-i2c";
115			clock-frequency = <I2C_BITRATE_STANDARD>;
116			#address-cells = <1>;
117			#size-cells = <0>;
118			reg = <0x4000a000 0x400>;
119			interrupts = <9 0>;
120			label = "I2C_0";
121			status = "disabled";
122		};
123
124		i2c1: i2c@4000a400 {
125			compatible = "silabs,gecko-i2c";
126			clock-frequency = <I2C_BITRATE_STANDARD>;
127			#address-cells = <1>;
128			#size-cells = <0>;
129			reg = <0x4000a400 0x400>;
130			interrupts = <10 0>;
131			label = "I2C_1";
132			status = "disabled";
133		};
134
135		gpio@40006100 {
136			compatible = "silabs,gecko-gpio";
137			reg = <0x40006100 0xf00>;
138			interrupts = <1 2 11 2>;
139			interrupt-names = "GPIO_EVEN", "GPIO_ODD";
140			label = "GPIO";
141
142			ranges;
143			#address-cells = <1>;
144			#size-cells = <1>;
145
146			gpioa: gpio@40006000 {
147				compatible = "silabs,gecko-gpio-port";
148				reg = <0x40006000 0x24>;
149				peripheral-id = <0>;
150				label = "GPIO_A";
151				gpio-controller;
152				#gpio-cells = <2>;
153				status = "disabled";
154			};
155
156			gpiob: gpio@40006024 {
157				compatible = "silabs,gecko-gpio-port";
158				reg = <0x40006024 0x24>;
159				peripheral-id = <1>;
160				label = "GPIO_B";
161				gpio-controller;
162				#gpio-cells = <2>;
163				status = "disabled";
164			};
165
166			gpioc: gpio@40006048 {
167				compatible = "silabs,gecko-gpio-port";
168				reg = <0x40006048 0x24>;
169				peripheral-id = <2>;
170				label = "GPIO_C";
171				gpio-controller;
172				#gpio-cells = <2>;
173				status = "disabled";
174			};
175
176			gpiod: gpio@4000606c {
177				compatible = "silabs,gecko-gpio-port";
178				reg = <0x4000606c 0x24>;
179				peripheral-id = <3>;
180				label = "GPIO_D";
181				gpio-controller;
182				#gpio-cells = <2>;
183				status = "disabled";
184			};
185
186			gpioe: gpio@40006090 {
187				compatible = "silabs,gecko-gpio-port";
188				reg = <0x40006090 0x24>;
189				peripheral-id = <4>;
190				label = "GPIO_E";
191				gpio-controller;
192				#gpio-cells = <2>;
193				status = "disabled";
194			};
195
196			gpiof: gpio@400060b4 {
197				compatible = "silabs,gecko-gpio-port";
198				reg = <0x400060b4 0x24>;
199				peripheral-id = <5>;
200				label = "GPIO_F";
201				gpio-controller;
202				#gpio-cells = <2>;
203				status = "disabled";
204			};
205		};
206	};
207};
208
209&nvic {
210	arm,num-irq-priority-bits = <3>;
211};
212