/*
 * Copyright (c) 2017 Google LLC.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <mem.h>
#include <arm/armv6-m.dtsi>
#include <zephyr/dt-bindings/adc/adc.h>
#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;
	};

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

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

	aliases {
		port-a = &porta;
		port-b = &portb;
		adc-0 = &adc;

		sercom-0 = &sercom0;
		sercom-1 = &sercom1;
		sercom-2 = &sercom2;
		sercom-3 = &sercom3;
		sercom-4 = &sercom4;
		sercom-5 = &sercom5;

		tc-4 = &tc4;
	};

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

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

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

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

		gclk: gclk@40000c00 {
			compatible = "atmel,samd2x-gclk";
			reg = <0x40000c00 0x400>;
			#clock-cells = <1>;
		};

		eic: eic@40001800 {
			compatible = "atmel,sam0-eic";
			reg = <0x40001800 0x1C>;
			interrupts = <4 0>;
		};

		pinmux_a: pinmux@41004400 {
			compatible = "atmel,sam0-pinmux";
			reg = <0x41004400 0x80>;
		};

		pinmux_b: pinmux@41004480 {
			compatible = "atmel,sam0-pinmux";
			reg = <0x41004480 0x80>;
		};

		wdog: watchdog@40001000 {
			compatible = "atmel,sam0-watchdog";
			reg = <0x40001000 9>;
			interrupts = <2 0>;
		};

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

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

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

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

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

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

		tc4: tc@42003000 {
			compatible = "atmel,sam0-tc32";
			reg = <0x42003000 0x20>;
		};

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

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

			};

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

		rtc: rtc@40001400 {
			compatible = "atmel,sam0-rtc";
			reg = <0x40001400 0x1C>;
			interrupts = <3 0>;
			clock-generator = <0>;
			status = "disabled";
		};

		adc: adc@42004000 {
			compatible = "atmel,sam0-adc";
			reg = <0x42004000 0x2B>;

			/*
			 * 2.1 MHz max, so clock it with the
			 * 8 MHz GCLK / 4 = 2 MHz
			 */
			gclk = <3>;
			prescaler = <4>;
			#io-channel-cells = <1>;
		};

		dac0: dac@42004800 {
			compatible = "atmel,sam0-dac";
			status = "disabled";
			reg = <0x42004800 0x10>;
			#io-channel-cells = <0>;
		};
	};
};

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