/*
 * Copyright (c) 2021 Sateesh Kotapati
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <silabs/efr32bg22c224f512im40.dtsi>
#include <silabs/efr32bg22-pinctrl.dtsi>

/ {
	model = "Silicon Labs EFR32BG SLTB010A (aka Thunderboard BG22)";
	compatible = "silabs,efr32bg_sltb010a", "silabs,efr32bg22";

	/* These aliases are provided for compatibility with samples */
	aliases {
		led0 = &led0;
		sw0 = &button0;
		spi-flash0 = &mx25r80;
		spi0 = &usart0;
		watchdog0 = &wdog0;
	};

	chosen {
		zephyr,console = &usart1;
		zephyr,shell-uart = &usart1;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpiob GECKO_PIN(0) GPIO_ACTIVE_HIGH>;
			label = "LED 0";
		};
	};

	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			gpios = <&gpiob GECKO_PIN(1) GPIO_ACTIVE_LOW>;
			label = "User Push Button 0";
		};
	};

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

	spi_enable: peripheral-enable {
		compatible = "regulator-fixed";
		regulator-name = "spi-enable-ctrl";
		enable-gpios = <&gpiob GECKO_PIN(4) GPIO_ACTIVE_HIGH>;
	};

};

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

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

	cs-gpios = <&gpioc 3 GPIO_ACTIVE_LOW>;

	mx25r80: mx25r8035f@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <80000000>;
		size = <0x800000>;
		jedec-id = [c2 28 14];
		sfdp-bfp = [
			 e5 20 f1 ff  ff ff 7f 00  44 eb 08 6b  08 3b 04 bb
			 ee ff ff ff  ff ff 00 ff  ff ff 00 ff  0c 20 0f 52
			 10 d8 00 ff  23 72 f5 00  82 ed 04 b7  44 83 38 44
			 30 b0 30 b0  f7 c4 d5 5c  00 be 29 ff  f0 d0 ff ff
		];
	};
};

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

&wdog0 {
	status = "okay";
};

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

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

		/* Reserve 220 kB for the application in slot 0 */
		slot0_partition: partition@8000 {
			label = "image-0";
			reg = <0x0008000 0x00037000>;
		};

		/* Reserve 220 kB for the application in slot 1 */
		slot1_partition: partition@3f000 {
			label = "image-1";
			reg = <0x0003f000 0x00037000>;
		};

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

		/* Set 8Kb of storage at the end of the 512KB of flash */
		storage_partition: partition@7e000 {
			label = "storage";
			reg = <0x0007e000 0x00002000>;
		};

	};
};

&gpio {
	location-swo = <0>;
	status = "okay";
};

&gpioa {
	status = "okay";
};

&gpiob {
	status = "okay";
};

&gpioc {
	status = "okay";
};

&stimer0 {
	status = "okay";
};

&trng {
	status = "okay";
};

&i2c0 {
	location-sda = <GECKO_LOCATION(3) GECKO_PORT_D GECKO_PIN(2)>;
	location-scl = <GECKO_LOCATION(3) GECKO_PORT_D GECKO_PIN(3)>;
	status = "okay";
};
