/*
 * Copyright (c) 2022 Kamil Serwus
 *
 * 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;
		port-c = &portc;

		sercom-0 = &sercom0;
		sercom-1 = &sercom1;
		sercom-2 = &sercom2;
		sercom-3 = &sercom3;

		tcc-0 = &tcc0;
		tcc-1 = &tcc1;
		tcc-2 = &tcc2;
	};

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

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

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

		mclk: mclk@40000800 {
			compatible = "atmel,samc2x-mclk";
			reg = <0x40000800 0x400>;
			#clock-cells = <2>;
		};

		gclk: gclk@40001c00 {
			compatible = "atmel,samc2x-gclk";
			reg = <0x40001c00 0x400>;
			#clock-cells = <1>;
		};

		eic: eic@40002800 {
			compatible = "atmel,sam0-eic";
			reg = <0x40002800 0x1C>;
			interrupts = <3 0>;
		};

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

		wdog: watchdog@40002000 {
			compatible = "atmel,sam0-watchdog";
			reg = <0x40002000 9>;
			interrupts = <1 0>;
		};

		dmac: dmac@41006000 {
			compatible = "atmel,sam0-dmac";
			reg = <0x41006000 0x50>;
			interrupts = <7 0>;
			#dma-cells = <2>;
		};

		adc0: adc@42004400 {
			compatible = "atmel,sam0-adc";
			status = "disabled";
			reg = <0x42004400 0x30>;
			interrupts = <25 0>;
			interrupt-names = "resrdy";
			clocks = <&gclk 33>, <&mclk 0x1c 17>;
			clock-names = "GCLK", "MCLK";
			gclk = <0>;
			prescaler = <4>;
			#io-channel-cells = <1>;
		};

		sercom0: sercom@42000400 {
			compatible = "atmel,sam0-sercom";
			reg = <0x42000400 0x40>;
			interrupts = <9 0>;
			clocks = <&gclk 19>, <&mclk 0x1c 1>;
			clock-names = "GCLK", "MCLK";
			status = "disabled";
		};

		sercom1: sercom@42000800 {
			compatible = "atmel,sam0-sercom";
			reg = <0x42000800 0x40>;
			interrupts = <10 0>;
			clocks = <&gclk 20>, <&mclk 0x1c 2>;
			clock-names = "GCLK", "MCLK";
			status = "disabled";
		};

		sercom2: sercom@42000c00 {
			compatible = "atmel,sam0-sercom";
			reg = <0x42000c00 0x40>;
			interrupts = <11 0>;
			clocks = <&gclk 21>, <&mclk 0x1c 3>;
			clock-names = "GCLK", "MCLK";
			status = "disabled";
		};

		sercom3: sercom@42001000 {
			compatible = "atmel,sam0-sercom";
			reg = <0x42001000 0x40>;
			interrupts = <12 0>;
			clocks = <&gclk 22>, <&mclk 0x1c 4>;
			clock-names = "GCLK", "MCLK";
			status = "disabled";
		};

		tcc0: tcc@42002400 {
			compatible = "atmel,sam0-tcc";
			reg = <0x42002400 0x80>;
			interrupts = <17 0>;
			clocks = <&gclk 28>, <&mclk 0x1c 9>;
			clock-names = "GCLK", "MCLK";

			channels = <4>;
			counter-size = <24>;
		};

		tcc1: tcc@42002800 {
			compatible = "atmel,sam0-tcc";
			reg = <0x42002800 0x80>;
			interrupts = <18 0>;
			clocks = <&gclk 28>, <&mclk 0x1c 10>;
			clock-names = "GCLK", "MCLK";

			channels = <4>;
			counter-size = <24>;
		};

		tcc2: tcc@42002c00 {
			compatible = "atmel,sam0-tcc";
			reg = <0x42002c00 0x80>;
			interrupts = <19 0>;
			clocks = <&gclk 29>, <&mclk 0x1c 11>;
			clock-names = "GCLK", "MCLK";

			channels = <2>;
			counter-size = <16>;
		};

		pinctrl: pinctrl@41000000 {
			compatible = "atmel,sam0-pinctrl";
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0x41000000 0x41000000 0x180>;

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

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

			portc: gpio@41000100 {
				compatible = "atmel,sam0-gpio";
				reg = <0x41000100 0x80>;
				gpio-controller;
				#gpio-cells = <2>;
				#atmel,pin-cells = <2>;
			};
		};

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

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