/*
 * Copyright (c) 2020 TriaGnoSys GmbH
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <silabs/efr32mg24b310f1536im48.dtsi>
#include <silabs/efr32mg24-pinctrl.dtsi>

/ {
	model = "Silicon Labs BRD2601B (Mighty Gecko Radio Board)";
	compatible = "silabs,efr32mg24_brd2601b", "silabs,efr32mg24";

	chosen {
		zephyr,console = &usart0;
		zephyr,shell-uart = &usart0;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
	};

	aliases {
		led0 = &red_led;
		led1 = &green_led;
		led2 = &blue_led;
		sw0 = &button0;
		sw1 = &button1;
	};

	leds {
		compatible = "gpio-leds";
		red_led: led_2 {
			gpios = <&gpiod GECKO_PIN(2) GPIO_ACTIVE_LOW>;
		};
		green_led: led_0 {
			gpios = <&gpioa GECKO_PIN(4) GPIO_ACTIVE_LOW>;
		};
		blue_led: led_1 {
			gpios = <&gpiob GECKO_PIN(0) GPIO_ACTIVE_LOW>;
		};
	};

	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			gpios = <&gpiob GECKO_PIN(2) GPIO_ACTIVE_LOW>;
		};
		button1: button_1 {
			gpios = <&gpiob GECKO_PIN(3) GPIO_ACTIVE_LOW>;
		};
	};

	wake_up_trigger: gpio-wake-up  {
		compatible = "silabs,gecko-wake-up-trigger";
		gpios = <&gpioa GECKO_PIN(5) GPIO_ACTIVE_LOW>;
	};

	sensor_enable: gpio_switch_0 {
		compatible = "regulator-fixed";
		regulator-name = "sensor_enable";
		enable-gpios = <&gpioc GECKO_PIN(9) GPIO_ACTIVE_HIGH>;
		regulator-boot-on;
	};
};

&cpu0 {
	clock-frequency = <78000000>;
};

&usart0 {
	current-speed = <115200>;
	pinctrl-0 = <&usart0_default>;
	pinctrl-names = "default";
	status = "okay";
};

&i2c0 {
	location-sda = <GECKO_LOCATION(5) GECKO_PORT_C GECKO_PIN(5)>;
	location-scl = <GECKO_LOCATION(5) GECKO_PORT_C GECKO_PIN(4)>;
	status = "okay";
};

&gpio {
	status = "okay";
};

&gpioa {
	status = "okay";
};

&gpiob {
	status = "okay";
};

&gpioc {
	status = "okay";
};

&gpiod {
	status = "okay";
};

&wdog0 {
	status = "okay";
};

&se {
	status = "okay";
};

&flash0 {
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		/* Reserve 48 kB for the bootloader */
		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x0 0x0000c000>;
			read-only;
		};

		/* Reserve 464 kB for the application in slot 0 */
		slot0_partition: partition@c000 {
			label = "storage";
			reg = <0x0000c000 0x00074000>;
		};

		/* Reserve 464 kB for the application in slot 1 */
		slot1_partition: partition@80000 {
			label = "image-0";
			reg = <0x00080000 0x00074000>;
		};

		/* Reserve 32 kB for the scratch partition */
		scratch_partition: partition@f4000 {
			label = "image-1";
			reg = <0x000f4000 0x00008000>;
		};

		/* Set 528Kb of storage at the end of the 1024Kb of flash */
		storage_partition: partition@fc000 {
			label = "image-scratch";
			reg = <0x000fc000 0x00084000>;
		};
	};
};

&adc0 {
	status = "okay";
};
