1/*
2 * Copyright (c) 2020 TriaGnoSys GmbH
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7/dts-v1/;
8#include <silabs/efr32mg24b310f1536im48.dtsi>
9#include <zephyr/dt-bindings/input/input-event-codes.h>
10#include <zephyr/dt-bindings/regulator/silabs_dcdc.h>
11#include "xg24_dk2601b-pinctrl.dtsi"
12
13/ {
14	model = "Silicon Labs BRD2601B (xG24 Dev Kit)";
15	compatible = "silabs,xg24_brd2601b", "silabs,efr32mg24";
16
17	chosen {
18		zephyr,console = &usart0;
19		zephyr,shell-uart = &usart0;
20		zephyr,uart-pipe = &usart0;
21		zephyr,sram = &sram0;
22		zephyr,flash = &flash0;
23		zephyr,code-partition = &slot0_partition;
24		zephyr,bt-hci = &bt_hci_silabs;
25	};
26
27	aliases {
28		led0 = &red_led;
29		led1 = &green_led;
30		led2 = &blue_led;
31		sw0 = &button0;
32		sw1 = &button1;
33		watchdog0 = &wdog0;
34	};
35
36	leds {
37		compatible = "gpio-leds";
38		red_led: led_2 {
39			gpios = <&gpiod 2 GPIO_ACTIVE_LOW>;
40		};
41		green_led: led_0 {
42			gpios = <&gpioa 4 GPIO_ACTIVE_LOW>;
43		};
44		blue_led: led_1 {
45			gpios = <&gpiob 0 GPIO_ACTIVE_LOW>;
46		};
47	};
48
49	buttons {
50		compatible = "gpio-keys";
51		button0: button_0 {
52			gpios = <&gpiob 2 GPIO_ACTIVE_LOW>;
53			zephyr,code = <INPUT_KEY_0>;
54		};
55		button1: button_1 {
56			gpios = <&gpiob 3 GPIO_ACTIVE_LOW>;
57			zephyr,code = <INPUT_KEY_1>;
58		};
59	};
60
61	wake_up_trigger: gpio-wake-up  {
62		compatible = "silabs,gecko-wake-up-trigger";
63		gpios = <&gpioa 5 GPIO_ACTIVE_LOW>;
64	};
65
66	sensor_enable: gpio_switch_0 {
67		compatible = "regulator-fixed";
68		regulator-name = "sensor_enable";
69		enable-gpios = <&gpioc 9 GPIO_ACTIVE_HIGH>;
70		regulator-boot-on;
71	};
72};
73
74&cpu0 {
75	clock-frequency = <78000000>;
76};
77
78&hfxo {
79	status = "okay";
80	ctune = <140>;
81	precision = <50>;
82};
83
84&lfxo {
85	status = "okay";
86	ctune = <63>;
87	precision = <50>;
88};
89
90&hfrcodpll {
91	clock-frequency = <DT_FREQ_M(78)>;
92	clocks = <&hfxo>;
93	dpll-n = <3839>;
94	dpll-m = <1919>;
95	dpll-edge = "fall";
96	dpll-lock = "phase";
97	dpll-autorecover;
98};
99
100&em23grpaclk {
101	clocks = <&lfxo>;
102};
103
104&em4grpaclk {
105	clocks = <&lfxo>;
106};
107
108&sysrtcclk {
109	clocks = <&lfxo>;
110};
111
112&wdog0clk {
113	clocks = <&lfxo>;
114};
115
116&wdog1clk {
117	clocks = <&lfxo>;
118};
119
120&usart0 {
121	current-speed = <115200>;
122	pinctrl-0 = <&usart0_default>;
123	pinctrl-names = "default";
124	status = "okay";
125};
126
127&eusart1 {
128	compatible = "silabs,eusart-spi";
129	pinctrl-0 = <&eusart1_default>;
130	pinctrl-names = "default";
131	cs-gpios = <&gpioc 0 GPIO_ACTIVE_LOW>;
132	clock-frequency = <4000000>;
133	#address-cells = <1>;
134	#size-cells = <0>;
135	status = "okay";
136
137	mx25r32: mx25r3235f@0 {
138		compatible = "jedec,spi-nor";
139		reg = <0>;
140		spi-max-frequency = <80000000>;
141		size = <0x2000000>;
142		jedec-id = [c2 28 16];
143		has-dpd;
144		dpd-wakeup-sequence = <30000 20 35000>;
145		mxicy,mx25r-power-mode = "low-power";
146		zephyr,pm-device-runtime-auto;
147	};
148};
149
150&i2c0 {
151	pinctrl-0 = <&i2c0_default>;
152	pinctrl-names = "default";
153	status = "okay";
154
155	veml6035: veml6035@29 {
156		compatible = "vishay,veml7700";
157		reg = <0x29>;
158		status = "okay";
159	};
160
161	si7210: si7210@30 {
162		compatible = "silabs,si7210";
163		reg = <0x30>;
164		status = "okay";
165	};
166
167	si7021: si7021@40 {
168		compatible = "silabs,si7006";
169		reg = <0x40>;
170		status = "okay";
171	};
172};
173
174&gpio {
175	status = "okay";
176};
177
178&gpioa {
179	status = "okay";
180};
181
182&gpiob {
183	status = "okay";
184};
185
186&gpioc {
187	status = "okay";
188};
189
190&gpiod {
191	status = "okay";
192};
193
194&wdog0 {
195	status = "okay";
196};
197
198&se {
199	status = "okay";
200};
201
202&dcdc {
203	status = "okay";
204	regulator-boot-on;
205	regulator-initial-mode = <SILABS_DCDC_MODE_BUCK>;
206	silabs,pfmx-peak-current-milliamp = <120>;
207};
208
209&flash0 {
210	partitions {
211		compatible = "fixed-partitions";
212		#address-cells = <1>;
213		#size-cells = <1>;
214
215		/* Reserve 48 kB for the bootloader */
216		boot_partition: partition@0 {
217			label = "mcuboot";
218			reg = <0x0 0x0000c000>;
219			read-only;
220		};
221
222		/* Reserve 464 kB for the application in slot 0 */
223		slot0_partition: partition@c000 {
224			label = "image-0";
225			reg = <0x0000c000 0x00074000>;
226		};
227
228		/* Reserve 464 kB for the application in slot 1 */
229		slot1_partition: partition@80000 {
230			label = "image-1";
231			reg = <0x00080000 0x00074000>;
232		};
233
234		/* Reserve 32 kB for the scratch partition */
235		scratch_partition: partition@f4000 {
236			label = "image-scratch";
237			reg = <0x000f4000 0x00008000>;
238		};
239
240		/* Set 528Kb of storage at the end of the 1024Kb of flash */
241		storage_partition: partition@fc000 {
242			label = "storage";
243			reg = <0x000fc000 0x00084000>;
244		};
245	};
246};
247
248&adc0 {
249	status = "okay";
250};
251
252&sysrtc0 {
253	status = "okay";
254};
255
256&radio {
257	pa-voltage-mv = <1800>;
258};
259
260&bt_hci_silabs {
261	status = "okay";
262};
263