/*
 * Copyright (c) 2017 Piotr Mienkowski
 * Copyright (c) 2017 Justin Watson
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <atmel/same70q21.dtsi>

/ {
	model = "Atmel SAM E70 Xplained board";
	compatible = "atmel,sam_e70_xplained", "atmel,same70q21", "atmel,same70";

	aliases {
		i2c-0 = &i2c0;
		i2c-1 = &i2c1;
		i2c-2 = &i2c2;
		led0 = &green_led;
		sw0 = &sw0_user_button;
		wdog = &wdog;
	};

	chosen {
		zephyr,console = &usart1;
		zephyr,shell-uart = &usart1;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
	};

	leds {
		compatible = "gpio-leds";
		green_led: led_0 {
			gpios = <&portc 8 0>;
			label = "User LED";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";

		/* The switch is labeled SW300 in the schematic, and labeled
		 * SW0 on the board, and labeld SW1 User Button on docs
		 */
		sw0_user_button: button_1 {
			label = "User Button";
			gpios = <&porta 11 (GPIO_PUD_PULL_UP |
					    GPIO_INT_ACTIVE_LOW)>;
		};
	};
};

&cpu0 {
	clock-frequency = <300000000>;
};

&adc0 {
	status = "okay";
};

&adc1 {
	status = "okay";
};

&i2c0 {
	status = "okay";
};

&i2c2 {
	status = "okay";
};

&spi0 {
	status = "okay";
};

&usart1 {
	current-speed = <115200>;
	status = "okay";
};

&wdog {
	status = "okay";
};

&usbhs {
	status = "okay";
};

&pwm0 {
	status = "okay";
};

&flash0 {
	/*
	 * If chosen's zephyr,code-partition
	 * is unset, the image will be linked
	 * into the entire flash device.  If
	 * it points to an individual
	 * partition, the code will be linked
	 * to, and restricted to that
	 * partition.
	 */
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		/*
		 * The first half of sector 0 (64 kbytes)
		 * is reserved for the bootloader
		 */
		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x0 0x00010000>;
			read-only;
		};

		/* From sector 1 to sector 7 (included): slot0 (896 kbytes) */
		slot0_partition: partition@20000 {
			label = "image-0";
			reg = <0x0020000 0x000e0000>;
		};

		/* From sector 8 to sector 14 (included): slot1 (896 kbytes) */
		slot1_partition: partition@100000 {
			label = "image-1";
			reg = <0x00100000 0x000e0000>;
		};

		/* Sector 15: scratch (128 kbytes) */
		scratch_partition: partition@1e0000 {
			label = "image-scratch";
			reg = <0x001e0000 0x00020000>;
		};
	};
};
