/*
 * Copyright (c) 2021 Argentum Systems Ltd.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

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

/ {
	aliases {
		watchdog0 = &wdog;
	};

	chosen {
		zephyr,flash-controller = &nvmctrl;
		zephyr,entropy = &trng;
	};

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

		cpu0: cpu@0 {
			device_type = "cpu";
			compatible = "arm,cortex-m0+";
			reg = <0>;
		};
	};

	sram0: memory@20000000 {
		compatible = "mmio-sram";
		reg = <0x20000000 0x8000>;
	};

	id: device_id@80a00c {
		compatible = "atmel,sam0-id";
		reg =	<0x0080A00C 0x4>,
			<0x0080A040 0x4>,
			<0x0080A044 0x4>,
			<0x0080A048 0x4>;
	};

	soc {
		nvmctrl: nvmctrl@41004000  {
			compatible = "atmel,sam0-nvmctrl";
			reg = <0x41004000 0x22>;
			interrupts = <4 0>;
			lock-regions = <16>;

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

			flash0: flash@0 {
				compatible = "soc-nv-flash";
				reg = <0 0x40000>;
				write-block-size = <4>;
			};
		};

		pm: pm@40000400 {
			compatible = "atmel,saml2x-pm";
			reg = <0x40000400 0x400>;
			interrupts = <0 0>;
			#clock-cells = <2>;
		};

		mclk: mclk@40000400 {
			compatible = "atmel,saml2x-mclk";
			reg = <0x40000400 0x400>;
			#clock-cells = <2>;
		};

		gclk: gclk@40001800 {
			compatible = "atmel,saml2x-gclk";
			reg = <0x40001800 0x400>;
			#clock-cells = <1>;
		};

		dmac: dmac@44000400 {
			compatible = "atmel,sam0-dmac";
			reg = <0x44000400 0x400>;
			interrupts = <5 0>;
			#dma-cells = <2>;
		};

		eic: eic@40002400 {
			compatible = "atmel,sam0-eic";
			reg = <0x40002400 0x24>;
			interrupts = <3 0>;
		};

		wdog: watchdog@40001c00 {
			compatible = "atmel,sam0-watchdog";
			reg = <0x40001c00 0x0c>;
			interrupts = <1 0>;
		};

		sercom0: sercom@42000000 {
			compatible = "atmel,sam0-sercom";
			reg = <0x42000000 0x40>;
			status = "disabled";
		};

		sercom1: sercom@42000400 {
			compatible = "atmel,sam0-sercom";
			reg = <0x42000400 0x40>;
			status = "disabled";
		};

		sercom2: sercom@42000800 {
			compatible = "atmel,sam0-sercom";
			reg = <0x42000800 0x40>;
			status = "disabled";
		};

		sercom3: sercom@42000c00 {
			compatible = "atmel,sam0-sercom";
			reg = <0x42000C00 0x40>;
			status = "disabled";
		};

		sercom4: sercom@42001000 {
			compatible = "atmel,sam0-sercom";
			reg = <0x42001000 0x40>;
			status = "disabled";
		};

		sercom5: sercom@43000400 {
			compatible = "atmel,sam0-sercom";
			reg = <0x43000400 0x40>;
			status = "disabled";
		};

		tc4: tc@43000800 {
			compatible = "atmel,sam0-tc32";
			reg = <0x43000800 0x34>;
		};

		pinctrl: pinctrl@40002800 {
			compatible = "atmel,sam0-pinctrl";
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0x40002800 0x40002800 0x100>;

			porta: gpio@40002800 {
				compatible = "atmel,sam0-gpio";
				reg = <0x40002800 0x80>;
				gpio-controller;
				#gpio-cells = <2>;
				#atmel,pin-cells = <2>;

			};

			portb: gpio@40002880 {
				compatible = "atmel,sam0-gpio";
				reg = <0x40002880 0x80>;
				gpio-controller;
				#gpio-cells = <2>;
				#atmel,pin-cells = <2>;
			};
		};

		rtc: rtc@40002000 {
			compatible = "atmel,sam0-rtc";
			reg = <0x40002000 0x1c>;
			interrupts = <2 0>;
			clock-generator = <0>;
			status = "disabled";
		};

		adc: adc@43000c00 {
			compatible = "atmel,sam0-adc";
			reg = <0x43000c00 0x30>;

			/*
			 * 16 MHz max, so clock it with the
			 * 48 MHz DFLL / 2 / 2 = 12 MHz
			 */
			gclk = <3>;
			prescaler = <2>;
			#io-channel-cells = <1>;
		};

		dac: dac@42003000 {
			compatible = "atmel,sam0-dac";
			status = "disabled";
			reg = <0x42003000 0x1a>;
			#io-channel-cells = <0>;
		};

		trng: random@42003800 {
			compatible = "atmel,sam-trng";
			reg = <0x42003800 0x24>;
			peripheral-id = <0>;
			interrupts = <27 0>;
		};
	};
};

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