/*
 * Copyright (c) 2019 Interay Solutions B.V.
 * Copyright (c) 2019 Oane Kingma
 * Copyright (c) 2020 Thorvald Natvig
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <silabs/efm32gg11b820f2048gl192.dtsi>
#include <zephyr/dt-bindings/input/input-event-codes.h>
#include "efm32gg_slwstk6121a-pinctrl.dtsi"

/ {
	model = "Silicon Labs EFM32GG SLWSTK6121A board";
	compatible = "silabs,efm32gg_slwstk6121a", "silabs,efm32gg11b";

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

	/* These aliases are provided for compatibility with samples */
	aliases {
		led0 = &led0;
		led1 = &led1;
		sw0 = &button0;
		sw1 = &button1;
		watchdog0 = &wdog0;
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpioa 4 0>;
			label = "LED 0";
		};
		led1: led_1 {
			gpios = <&gpioa 5 0>;
			label = "LED 1";
		};
	};

	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			/* gpio flags need validation */
			gpios = <&gpiod 6 GPIO_ACTIVE_LOW>;
			label = "User Push Button 0";
			zephyr,code = <INPUT_KEY_0>;
		};
		button1: button_1 {
			/* gpio flags need validation */
			gpios = <&gpiod 8 GPIO_ACTIVE_LOW>;
			label = "User Push Button 1";
			zephyr,code = <INPUT_KEY_1>;
		};
	};
};

/* Connected to the WSTK VCOM */
&usart0 {
	current-speed = <115200>;
	pinctrl-0 = <&usart0_default>;
	pinctrl-names = "default";
	status = "okay";
};

/* i2c unit 0 is not used on the board, but must be defined for i2c unit 1
 * to work properly.
 */
&i2c0 {
	location-sda = <GECKO_LOCATION(4) GECKO_PORT_A GECKO_PIN(0)>;
	location-scl = <GECKO_LOCATION(4) GECKO_PORT_A GECKO_PIN(1)>;
	status = "okay";
};

/* Connected to Si7021 sensor on WSTK */
&i2c1 {
	location-sda = <GECKO_LOCATION(1) GECKO_PORT_B GECKO_PIN(11)>;
	location-scl = <GECKO_LOCATION(1) GECKO_PORT_B GECKO_PIN(12)>;
	status = "okay";
};

&rtcc0 {
	prescaler = <1>;
	status = "okay";
};

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

&gpioa {
	status = "okay";
};

&gpiob {
	status = "okay";
};

&gpioc {
	status = "okay";
};

&gpiod {
	status = "okay";
};

&gpioe {
	status = "okay";
};

&gpiof {
	status = "okay";
};

&eth0 {
	/* PHY address = 0 */
	phy-address = <0>;

	/* PHY management pins */
	location-mdio        = <GECKO_LOCATION(3)>;
	location-phy_mdc     = <GECKO_LOCATION(3) GECKO_PORT_A GECKO_PIN(6)>;
	location-phy_mdio    = <GECKO_LOCATION(3) GECKO_PORT_A GECKO_PIN(15)>;

	/* RMII interface pins */
	location-rmii        = <GECKO_LOCATION(0)>;
	location-rmii_refclk = <GECKO_LOCATION(0) GECKO_PORT_A GECKO_PIN(3)>;
	location-rmii_crs_dv = <GECKO_LOCATION(0) GECKO_PORT_A GECKO_PIN(4)>;
	location-rmii_txd0   = <GECKO_LOCATION(0) GECKO_PORT_E GECKO_PIN(15)>;
	location-rmii_txd1   = <GECKO_LOCATION(0) GECKO_PORT_E GECKO_PIN(14)>;
	location-rmii_tx_en  = <GECKO_LOCATION(0) GECKO_PORT_A GECKO_PIN(0)>;
	location-rmii_rxd0   = <GECKO_LOCATION(0) GECKO_PORT_A GECKO_PIN(2)>;
	location-rmii_rxd1   = <GECKO_LOCATION(0) GECKO_PORT_A GECKO_PIN(1)>;
	location-rmii_rx_er  = <GECKO_LOCATION(0) GECKO_PORT_A GECKO_PIN(5)>;

	status = "okay";
};

&flash0 {

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

		/* Set 12Kb of storage at the end of the 2048Kb of flash */
		storage_partition: partition@1fd000 {
			label = "storage";
			reg = <0x001fd000 0x00003000>;
		};
	};
};

&wdog0 {
	status = "okay";
};

&trng0 {
	status = "okay";
};

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