/*
 * 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";
			reg = <0x400e0a00 0x200>;
			peripheral-id = <6>;

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

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

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

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

		twi0: i2c@400a8000 {
			compatible = "atmel,sam-i2c-twi";
			clock-frequency = <I2C_BITRATE_STANDARD>;
			reg = <0x400a8000 0x4000>;
			interrupts = <17 0>;
			peripheral-id = <17>;
			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>;
			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>;
			status = "disabled";
		};

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

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

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

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

		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";
			status = "disabled";

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

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

			pioa: gpio@400e0e00 {
				compatible = "atmel,sam-gpio";
				reg = <0x400e0e00 0x200>;
				interrupts = <9 1>;
				peripheral-id = <9>;
				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>;
				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>;
				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>;
				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>;
				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";
		};

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

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

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