/*
 * Copyright (c) 2019 Gerson Fernando Budke
 *
 * SPDX-License-Identifier: Apache-2.0
 */

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

/ {
	aliases {
		watchdog0 = &wdt;
	};

	chosen {
		zephyr,flash-controller = &eefc;
	};

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

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

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

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

		/* Only used for HWINFO device ID */
		eefc: flash-controller@400e0a00 {
			compatible = "atmel,sam-flash-controller";
			label = "FLASH_CTRL";
			reg = <0x400e0a00 0x200>;
			peripheral-id = <6>;

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

			flash0: flash@400000 {
				compatible = "soc-nv-flash";
				label = "FLASH_0";

				write-block-size = <16>;
			};
		};

		wdt: watchdog@400e1850 {
			compatible = "atmel,sam-watchdog";
			reg = <0x400e1850 0x10>;
			interrupts = <4 0>;
			peripheral-id = <4>;
			label = "WATCHDOG_0";
			status = "disabled";
		};

		twi0: i2c@400a8000 {
			compatible = "atmel,sam-i2c-twi";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			reg = <0x400a8000 0x4000>;
			interrupts = <17 0>;
			peripheral-id = <17>;
			label = "I2C_0";
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

		twi1: i2c@400ac000 {
			compatible = "atmel,sam-i2c-twi";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			reg = <0x400ac000 0x4000>;
			interrupts = <18 0>;
			peripheral-id = <18>;
			label = "I2C_1";
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

		spi0: spi@40088000 {
			compatible = "atmel,sam-spi";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x40088000 0x4000>;
			interrupts = <19 0>;
			peripheral-id = <19>;
			label = "SPI_0";
			status = "disabled";
		};

		uart0: uart@400e0600 {
			compatible = "atmel,sam-uart";
			reg = <0x400e0600 0x140>;
			interrupts = <7 1>;
			peripheral-id = <7>;
			status = "disabled";
			label = "UART_0";
		};

		uart1: uart@40060600 {
			compatible = "atmel,sam-uart";
			reg = <0x40060600 0x200>;
			interrupts = <45 1>;
			peripheral-id = <45>;
			status = "disabled";
			label = "UART_1";
		};

		usart0: usart@400a0000 {
			compatible = "atmel,sam-usart";
			reg = <0x400a0000 0x4000>;
			interrupts = <14 1>;
			peripheral-id = <14>;
			status = "disabled";
			label = "USART_0";
		};

		usart1: usart@400a4000 {
			compatible = "atmel,sam-usart";
			reg = <0x400a4000 0x4000>;
			interrupts = <15 1>;
			peripheral-id = <15>;
			status = "disabled";
			label = "USART_1";
		};

		gmac: ethernet@40034000 {
			compatible = "atmel,sam-gmac";
			reg = <0x40034000 0x4000>;
			peripheral-id = <44>;
			interrupts = <44 0>;
			interrupt-names = "gmac";
			num-queues = <1>;
			phy-connection-type = "mii";
			label = "GMAC";
			status = "disabled";

			mdio: mdio {
				compatible = "atmel,sam-mdio";
				label = "MDIO";
				status = "disabled";
			};
		};

		pinctrl: pinctrl@400e0e00 {
			compatible = "atmel,sam-pinctrl";
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0x400e0e00 0x400e0e00 0xa00>;
			status = "okay";
			label = "PINCTRL";

			pioa: gpio@400e0e00 {
				compatible = "atmel,sam-gpio";
				reg = <0x400e0e00 0x200>;
				interrupts = <9 1>;
				peripheral-id = <9>;
				label = "PORTA";
				gpio-controller;
				#gpio-cells = <2>;
				#atmel,pin-cells = <2>;
			};

			piob: gpio@400e1000 {
				compatible = "atmel,sam-gpio";
				reg = <0x400e1000 0x200>;
				interrupts = <10 1>;
				peripheral-id = <10>;
				label = "PORTB";
				gpio-controller;
				#gpio-cells = <2>;
				#atmel,pin-cells = <2>;
			};

			pioc: gpio@400e1200 {
				compatible = "atmel,sam-gpio";
				reg = <0x400e1200 0x200>;
				interrupts = <11 1>;
				peripheral-id = <11>;
				label = "PORTC";
				gpio-controller;
				#gpio-cells = <2>;
				#atmel,pin-cells = <2>;
			};

			piod: gpio@400e1400 {
				compatible = "atmel,sam-gpio";
				reg = <0x400e1400 0x200>;
				interrupts = <12 1>;
				peripheral-id = <12>;
				label = "PORTD";
				gpio-controller;
				#gpio-cells = <2>;
				#atmel,pin-cells = <2>;
			};

			pioe: gpio@400e1600 {
				compatible = "atmel,sam-gpio";
				reg = <0x400e1600 0x200>;
				interrupts = <13 1>;
				peripheral-id = <13>;
				label = "PORTE";
				gpio-controller;
				#gpio-cells = <2>;
				#atmel,pin-cells = <2>;
			};
		};

		tc0: tc@40090000 {
			compatible = "atmel,sam-tc";
			reg = <0x40090000 0x100>;
			interrupts = <21 0
				      22 0
				      23 0>;
			peripheral-id = <21 22 23>;
			status = "disabled";
			label = "TC0";
		};

		tc1: tc@40094000 {
			compatible = "atmel,sam-tc";
			reg = <0x40094000 0x100>;
			interrupts = <24 0
				      25 0
				      26 0>;
			peripheral-id = <24 25 26>;
			status = "disabled";
			label = "TC1";
		};

		tc2: tc@40098000 {
			compatible = "atmel,sam-tc";
			reg = <0x40098000 0x100>;
			interrupts = <27 0
				      28 0
				      29 0>;
			peripheral-id = <27 28 29>;
			status = "disabled";
			label = "TC2";
		};
	};
};

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