/*
 * Copyright (c) 2023 Antmicro <www.antmicro.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	chosen {
		zephyr,bt-c2h-uart = &usart1;
		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";
			zephyr,code = <INPUT_KEY_0>;
		};
	};

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

	/* GPIOs that power up different sensors */
	sw_sensor_enable: gpio_switch_0 {
		compatible = "regulator-fixed";
		status = "okay";
		regulator-name = "sw_sensor_enable";
		startup-delay-us = <100000>;
		/* Always on since sensor drivers won't enable it automatically */
		regulator-always-on;
	};

	sw_mic_enable: gpio_switch_1 {
		compatible = "regulator-fixed";
		status = "okay";
		regulator-name = "sw_mic_enable";
		startup-delay-us = <100000>;
	};

	sw_imu_enable: gpio_switch_2 {
		compatible = "regulator-fixed";
		status = "okay";
		regulator-name = "sw_imu_enable";
		startup-delay-us = <100000>;
	};

};

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

&pstate_em3 {
	status = "disabled";
};

&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>;
	};
};

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

&gpioa {
	status = "okay";
};

&gpiob {
	status = "okay";
};

&gpioc {
	status = "okay";
};

&burtc0 {
	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";

	si7210@30 {
		compatible = "silabs,si7210";
		status = "okay";
		reg = <0x30>;
	};
};

&adc0 {
	status = "okay";
};
