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

#include <arm/armv7-m.dtsi>
#include <zephyr/dt-bindings/adc/adc.h>
#include <zephyr/dt-bindings/i2c/i2c.h>
#include <zephyr/dt-bindings/gpio/gpio.h>
#include <zephyr/dt-bindings/clock/atmel_sam_pmc.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>;
			};
		};
	};

	soc {
		pmc: pmc@400e0400 {
			compatible = "atmel,sam-pmc";
			reg = <0x400e0400 0x200>;
			interrupts = <5 0>;
			#clock-cells = <2>;
			status = "okay";
		};

		supc: supc@400e1810 {
			compatible = "atmel,sam-supc";
			reg = <0x400e1810 0x20>;
			#wakeup-source-id-cells = <1>;
			status = "okay";
		};

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

		afec0: adc@400b0000 {
			compatible = "atmel,sam-afec";
			reg = <0x400b0000 0x4000>;
			interrupts = <30 0>;
			clocks = <&pmc PMC_TYPE_PERIPHERAL 30>;
			status = "disabled";
			#io-channel-cells = <1>;
		};

		afec1: adc@400b4000 {
			compatible = "atmel,sam-afec";
			reg = <0x400b4000 0x4000>;
			interrupts = <31 0>;
			clocks = <&pmc PMC_TYPE_PERIPHERAL 31>;
			status = "disabled";
			#io-channel-cells = <1>;
		};

		eefc: flash-controller@400e0a00 {
			compatible = "atmel,sam-flash-controller";
			reg = <0x400e0a00 0x200>;
			interrupts = <6 0>;
			clocks = <&pmc PMC_TYPE_PERIPHERAL 6>;
			status = "okay";

			#address-cells = <1>;
			#size-cells = <1>;
			#erase-block-cells = <2>;

			flash0: flash@400000 {
				compatible = "atmel,sam-flash", "soc-nv-flash";
				write-block-size = <8>;
				erase-block-size = <4096>;
			};
		};

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

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

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

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

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

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

		gmac: ethernet@40034000 {
			compatible = "atmel,sam-gmac";
			reg = <0x40034000 0x4000>;
			clocks = <&pmc PMC_TYPE_PERIPHERAL 44>;
			interrupts = <44 0>;
			interrupt-names = "gmac";
			num-queues = <1>;
			phy-connection-type = "mii";
			status = "disabled";
		};

		mdio: mdio@40034000 {
			compatible = "atmel,sam-mdio";
			reg = <0x40034000 0x4000>;
			clocks = <&pmc PMC_TYPE_PERIPHERAL 44>;
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

		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>;
				clocks = <&pmc PMC_TYPE_PERIPHERAL 9>;
				gpio-controller;
				#gpio-cells = <2>;
				#atmel,pin-cells = <2>;
			};

			piob: gpio@400e1000 {
				compatible = "atmel,sam-gpio";
				reg = <0x400e1000 0x200>;
				interrupts = <10 1>;
				clocks = <&pmc PMC_TYPE_PERIPHERAL 10>;
				gpio-controller;
				#gpio-cells = <2>;
				#atmel,pin-cells = <2>;
			};

			pioc: gpio@400e1200 {
				compatible = "atmel,sam-gpio";
				reg = <0x400e1200 0x200>;
				interrupts = <11 1>;
				clocks = <&pmc PMC_TYPE_PERIPHERAL 11>;
				gpio-controller;
				#gpio-cells = <2>;
				#atmel,pin-cells = <2>;
			};

			piod: gpio@400e1400 {
				compatible = "atmel,sam-gpio";
				reg = <0x400e1400 0x200>;
				interrupts = <12 1>;
				clocks = <&pmc PMC_TYPE_PERIPHERAL 12>;
				gpio-controller;
				#gpio-cells = <2>;
				#atmel,pin-cells = <2>;
			};

			pioe: gpio@400e1600 {
				compatible = "atmel,sam-gpio";
				reg = <0x400e1600 0x200>;
				interrupts = <13 1>;
				clocks = <&pmc PMC_TYPE_PERIPHERAL 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>;
			clocks = <&pmc PMC_TYPE_PERIPHERAL 21>,
				 <&pmc PMC_TYPE_PERIPHERAL 22>,
				 <&pmc PMC_TYPE_PERIPHERAL 23>;
			status = "disabled";
		};

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

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

		pwm0: pwm@40000000 {
			compatible = "atmel,sam-pwm";
			reg = <0x40000000 0x4000>;
			interrupts = <36 1>;
			clocks = <&pmc PMC_TYPE_PERIPHERAL 36>;
			prescaler = <10>;
			divider = <1>;
			#pwm-cells = <3>;
			status = "disabled";
		};

		rstc: rstc@400e1800 {
			compatible = "atmel,sam-rstc";
			reg = <0x400e1800 0x10>;
			clocks = <&pmc PMC_TYPE_PERIPHERAL 1>;
			user-nrst;
		};

		smc: smc@40060000 {
			compatible = "atmel,sam-smc";
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0x40060000 0x200>;
			clocks = <&pmc PMC_TYPE_PERIPHERAL 8>;
			status = "disabled";
		};

		hsmci: hsmci@40080000 {
			compatible = "atmel,sam-hsmci";
			reg = <0x40080000 0x1000>;
			clocks = <&pmc PMC_TYPE_PERIPHERAL 16>;
			status = "disabled";
		};

		rtc: rtc@400e1860 {
			compatible = "atmel,sam-rtc";
			reg = <0x400e1860 0x100>;
			interrupts = <2 0>;
			clocks = <&pmc PMC_TYPE_PERIPHERAL 2>;
			alarms-count = <1>;
			status = "disabled";
		};
	};
};

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