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

#include <arm/armv7-m.dtsi>
#include <zephyr/dt-bindings/gpio/gpio.h>
#include <zephyr/dt-bindings/i2c/i2c.h>
#include "gpio_gecko.h"

/ {
	chosen {
		zephyr,entropy = &trng0;
		zephyr,flash-controller = &msc;
	};

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		cpu0: cpu@0 {
			compatible = "arm,cortex-m4f";
			reg = <0>;
		};
	};

	sram0: memory@20000000 {
	       compatible = "mmio-sram";
	};

	soc {
		msc: flash-controller@40000000 {
			compatible = "silabs,gecko-flash-controller";
			label = "FLASH_CTRL";
			reg = <0x40000000 0x110>;
			interrupts = <33 0>;

			#address-cells = <1>;
			#size-cells = <1>;

			flash0: flash@0 {
				compatible = "soc-nv-flash";
				label = "FLASH_0";
				write-block-size = <4>;
				erase-block-size = <4096>;
			};
		};

		rtcc0: rtcc@40062000 { /* RTCC0 */
			compatible = "silabs,gecko-rtcc";
			reg = <0x40062000 0x184>;
			interrupts = <31 0>;
			clock-frequency = <32768>;
			prescaler = <1>;
			status = "disabled";
			label = "RTCC_0";
		};

		uart0: uart@40014000 { /* UART0 */
			compatible = "silabs,gecko-uart";
			reg = <0x40014000 0x400>;
			interrupts = <21 0 22 0>;
			interrupt-names = "rx", "tx";
			peripheral-id = <0>;
			status = "disabled";
			label = "UART_0";
		};

		uart1: uart@40014400 { /* UART1 */
			compatible = "silabs,gecko-uart";
			reg = <0x40014400 0x400>;
			interrupts = <23 0 24 0>;
			interrupt-names = "rx", "tx";
			peripheral-id = <1>;
			status = "disabled";
			label = "UART_1";
		};

		usart0: usart@40010000 { /* USART0 */
			compatible = "silabs,gecko-usart";
			reg = <0x40010000 0x400>;
			interrupts = <6 0 7 0>;
			interrupt-names = "rx", "tx";
			peripheral-id = <0>;
			status = "disabled";
			label = "USART_0";
		};

		usart1: usart@40010400 { /* USART1 */
			compatible = "silabs,gecko-usart";
			reg = <0x40010400 0x400>;
			interrupts = <17 0 18 0>;
			interrupt-names = "rx", "tx";
			peripheral-id = <1>;
			status = "disabled";
			label = "USART_1";
		};

		usart2: usart@40010800 { /* USART2 */
			compatible = "silabs,gecko-usart";
			reg = <0x40010800 0x400>;
			interrupts = <19 0 20 0>;
			interrupt-names = "rx", "tx";
			peripheral-id = <2>;
			status = "disabled";
			label = "USART_2";
		};

		usart3: usart@40010c00 { /* USART3 */
			compatible = "silabs,gecko-usart";
			reg = <0x40010c00 0x400>;
			interrupts = <37 0 38 0>;
			interrupt-names = "rx", "tx";
			peripheral-id = <3>;
			status = "disabled";
			label = "USART_3";
		};

		usart4: usart@40011000 { /* USART4 */
			compatible = "silabs,gecko-usart";
			reg = <0x40011000 0x400>;
			interrupts = <39 0 40 0>;
			interrupt-names = "rx", "tx";
			peripheral-id = <4>;
			status = "disabled";
			label = "USART_4";
		};

		usart5: usart@40011400 { /* USART5 */
			compatible = "silabs,gecko-usart";
			reg = <0x40011400 0x400>;
			interrupts = <50 0 51 0>;
			interrupt-names = "rx", "tx";
			peripheral-id = <5>;
			status = "disabled";
			label = "USART_5";
		};

		leuart0: leuart@4006a000 { /* LEUART0 */
			compatible = "silabs,gecko-leuart";
			reg = <0x4006a000 0x400>;
			interrupts = <25 0>;
			peripheral-id = <0>;
			status = "disabled";
			label = "LEUART_0";
		};

		leuart1: leuart@4006a400 { /* LEUART1 */
			compatible = "silabs,gecko-leuart";
			reg = <0x4006a400 0x400>;
			interrupts = <26 0>;
			peripheral-id = <1>;
			status = "disabled";
			label = "LEUART_1";
		};

		i2c0: i2c@40089000 {
			compatible = "silabs,gecko-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x40089000 0x400>;
			interrupts = <11 0>;
			label = "I2C_0";
			status = "disabled";
		};

		i2c1: i2c@40089400 {
			compatible = "silabs,gecko-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x40089400 0x400>;
			interrupts = <12 0>;
			label = "I2C_1";
			status = "disabled";
		};

		i2c2: i2c@40089800 {
			compatible = "silabs,gecko-i2c";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x40089800 0x400>;
			interrupts = <45 0>;
			label = "I2C_2";
			status = "disabled";
		};

		gpio: gpio@40088400 {
			compatible = "silabs,gecko-gpio";
			reg = <0x40088400 0xc00>;
			interrupts = <3 2 13 2>;
			interrupt-names = "GPIO_EVEN", "GPIO_ODD";
			label = "GPIO";

			ranges;
			#address-cells = <1>;
			#size-cells = <1>;

			gpioa: gpio@40088000 {
				compatible = "silabs,gecko-gpio-port";
				reg = <0x40088000 0x30>;
				peripheral-id = <0>;
				label = "GPIO_A";
				gpio-controller;
				#gpio-cells = <2>;
				status = "disabled";
			};

			gpiob: gpio@40088030 {
				compatible = "silabs,gecko-gpio-port";
				reg = <0x40088030 0x30>;
				peripheral-id = <1>;
				label = "GPIO_B";
				gpio-controller;
				#gpio-cells = <2>;
				status = "disabled";
			};

			gpioc: gpio@40088060 {
				compatible = "silabs,gecko-gpio-port";
				reg = <0x40088060 0x30>;
				peripheral-id = <2>;
				label = "GPIO_C";
				gpio-controller;
				#gpio-cells = <2>;
				status = "disabled";
			};

			gpiod: gpio@40088090 {
				compatible = "silabs,gecko-gpio-port";
				reg = <0x40088090 0x30>;
				peripheral-id = <3>;
				label = "GPIO_D";
				gpio-controller;
				#gpio-cells = <2>;
				status = "disabled";
			};

			gpioe: gpio@400880c0 {
				compatible = "silabs,gecko-gpio-port";
				reg = <0x400880c0 0x30>;
				peripheral-id = <4>;
				label = "GPIO_E";
				gpio-controller;
				#gpio-cells = <2>;
				status = "disabled";
			};

			gpiof: gpio@400880f0 {
				compatible = "silabs,gecko-gpio-port";
				reg = <0x400880f0 0x30>;
				peripheral-id = <5>;
				label = "GPIO_F";
				gpio-controller;
				#gpio-cells = <2>;
				status = "disabled";
			};

			gpiog: gpio@40088120 {
				compatible = "silabs,gecko-gpio-port";
				reg = <0x40088120 0x30>;
				peripheral-id = <6>;
				label = "GPIO_G";
				gpio-controller;
				#gpio-cells = <2>;
				status = "disabled";
			};

			gpioh: gpio@40088150 {
				compatible = "silabs,gecko-gpio-port";
				reg = <0x40088150 0x30>;
				peripheral-id = <7>;
				label = "GPIO_H";
				gpio-controller;
				#gpio-cells = <2>;
				status = "disabled";
			};

			gpioi: gpio@40088180 {
				compatible = "silabs,gecko-gpio-port";
				reg = <0x40088180 0x30>;
				peripheral-id = <8>;
				label = "GPIO_I";
				gpio-controller;
				#gpio-cells = <2>;
				status = "disabled";
			};
		};

		trng0: trng@4001d000 {
			compatible = "silabs,gecko-trng";
			reg = <0x4001d000 0x400>;
			interrupts = <66 0>;
			label = "TRNG0";
			status = "disabled";
		};

		wdog0: wdog@40052000 {
			compatible = "silabs,gecko-wdog";
			reg = <0x40052000 0x2C>;
			peripheral-id = <0>;
			label = "WDOG0";
			interrupts = <1 0>;
			status = "disabled";
		};

		wdog1: wdog@40052400 {
			compatible = "silabs,gecko-wdog";
			reg = <0x40052400 0x2C>;
			peripheral-id = <1>;
			label = "WDOG1";
			interrupts = <64 0>;
			status = "disabled";
		};
	};
};

&nvic {
	arm,num-irq-priority-bits = <3>;
};
