/*
 * Copyright (c) 2020 TriaGnoSys GmbH
 * Copyright (c) 2021 Safran Passenger Innovations Germany GmbH
 *
 * SPDX-License-Identifier: Apache-2.0
 */

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

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

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

		cpu0: cpu@0 {
			device_type = "cpu";
			compatible = "arm,cortex-m33f";
			reg = <0>;
			#address-cells = <1>;
			#size-cells = <1>;

			mpu: mpu@e000ed90 {
				compatible = "arm,armv8m-mpu";
				reg = <0xe000ed90 0x40>;
				arm,num-mpu-regions = <16>;
			};
		};
	};

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

	soc {
		msc: flash-controller@40030000 {
			compatible = "silabs,gecko-flash-controller";
			label = "FLASH_CTRL";
			reg = <0x40030000 0x31a4>;
			interrupts = <51 0>;

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

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

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

		usart1: usart@4005c000 { /* USART1 */
			compatible = "silabs,gecko-usart";
			reg = <0x4005c000 0x400>;
			interrupts = <13 0>, <14 0>;
			interrupt-names = "rx", "tx";
			peripheral-id = <1>;
			status = "disabled";
			label = "USART_1";
		};

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

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

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

		rtcc0: rtcc@48000000 {
			compatible = "silabs,gecko-rtcc";
			reg = <0x48000000 0x400>;
			interrupts = <10 0>;
			clock-frequency = <32768>;
			prescaler = <1>;
			status = "disabled";
			label = "RTCC_0";
		};

		gpio: gpio@4003c300 {
			compatible = "silabs,gecko-gpio";
			reg = <0x4003c300 0x3c00>;
			interrupts = <26 2>, <25 2>;
			interrupt-names = "GPIO_EVEN", "GPIO_ODD";
			label = "GPIO";

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

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

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

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

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

		se: semailbox@4c000000 {
			compatible = "silabs,gecko-semailbox";
			reg = <0x4c000000 0x80>;
			interrupts = <0 3>, <1 3>, <2 3>;
			interrupt-names = "SETAMPERHOST", "SEMBRX", "SEMBTX";
			label = "SEMAILBOX";
			status = "okay";
		};

		wdog0: wdog@4a018000 {
			compatible = "silabs,gecko-wdog";
			reg = <0x4a018000 0x2C>;
			peripheral-id = <0>;
			label = "WDOG0";
			interrupts = <43 0>;
			status = "disabled";
		};

		wdog1: wdog@4a01c000 {
			compatible = "silabs,gecko-wdog";
			reg = <0x4a01c000 0x2C>;
			peripheral-id = <1>;
			label = "WDOG1";
			interrupts = <44 0>;
			status = "disabled";
		};
	};
};

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