/*
 * 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";
			reg = <0x40030000 0x31a4>;
			interrupts = <51 0>;

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

			flash0: flash@0 {
				compatible = "soc-nv-flash";
				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";
		};

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

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

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

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

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

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

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

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

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

			gpiod: gpio@4003c090 {
				compatible = "silabs,gecko-gpio-port";
				reg = <0x4003c090 0x30>;
				peripheral-id = <3>;
				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";
			status = "okay";
		};

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

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

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