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

#include <zephyr/dt-bindings/input/input-event-codes.h>
#include <silabs/gpio_gecko.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";
};
