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

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

/ {
	model = "Silicon Labs EFM32GG STK3701A board";
	compatible = "silabs,efm32gg_stk3701a", "silabs,efm32gg11b";

	chosen {
		zephyr,console = &usart4;
		zephyr,shell-uart = &usart4;
		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 = <&gpioh 10 0>;
			label = "LED 0";
		};
		led1: led_1 {
			gpios = <&gpioh 13 0>;
			label = "LED 1";
		};
	};

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

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

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

&leuart0 {
	current-speed = <9600>;
	location-rx = <GECKO_LOCATION(18) GECKO_PORT_D GECKO_PIN(11)>;
	location-tx = <GECKO_LOCATION(18) GECKO_PORT_D GECKO_PIN(10)>;
	status = "okay";
};

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

&i2c1 {
	location-sda = <GECKO_LOCATION(0) GECKO_PORT_C GECKO_PIN(4)>;
	location-scl = <GECKO_LOCATION(0) GECKO_PORT_C GECKO_PIN(5)>;
	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";

	board-controller-enable {
		gpio-hog;
		gpios = <1 GPIO_ACTIVE_HIGH>;
		output-high;
	};
};

&gpiof {
	status = "okay";
};

&gpiog {
	status = "okay";
};

&gpioh {
	status = "okay";
};

&gpioi {
	status = "okay";
};

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

	/* PHY management pins */
	location-mdio        = <GECKO_LOCATION(1)>;
	location-phy_mdc     = <GECKO_LOCATION(1) GECKO_PORT_D GECKO_PIN(14)>;
	location-phy_mdio    = <GECKO_LOCATION(1) GECKO_PORT_D GECKO_PIN(13)>;

	/* RMII interface pins */
	location-rmii        = <GECKO_LOCATION(1)>;
	location-rmii_refclk = <GECKO_LOCATION(5) GECKO_PORT_D GECKO_PIN(10)>;
	location-rmii_crs_dv = <GECKO_LOCATION(1) GECKO_PORT_D GECKO_PIN(11)>;
	location-rmii_txd0   = <GECKO_LOCATION(1) GECKO_PORT_F GECKO_PIN(7)>;
	location-rmii_txd1   = <GECKO_LOCATION(1) GECKO_PORT_F GECKO_PIN(6)>;
	location-rmii_tx_en  = <GECKO_LOCATION(1) GECKO_PORT_F GECKO_PIN(8)>;
	location-rmii_rxd0   = <GECKO_LOCATION(1) GECKO_PORT_D GECKO_PIN(9)>;
	location-rmii_rxd1   = <GECKO_LOCATION(1) GECKO_PORT_F GECKO_PIN(9)>;
	location-rmii_rx_er  = <GECKO_LOCATION(1) GECKO_PORT_D GECKO_PIN(12)>;

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