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

/dts-v1/;

#include <atmel/sam4s16c.dtsi>
#include "sam4s_xplained-pinctrl.dtsi"

/ {
	model = "Atmel SAM4S Xplained Board with an Atmel SAM4S16C SoC";
	compatible = "atmel,sam4s_xplained", "atmel,sam4s16c", "atmel,sam4s";

	aliases {
		i2c-0 = &twi0;
		i2c-1 = &twi1;
		led0 = &yellow_led_1;
		led1 = &yellow_led_2;
		sw0 = &user_button;
		watchdog0 = &wdt;
	};

	chosen {
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
	};

	sram1: sram@60000000 {
		compatible = "zephyr,memory-region", "mmio-sram";
		device_type = "memory";
		reg = <0x60000000 DT_SIZE_K(512)>;
		zephyr,memory-region = "SRAM1";
	};

	sram2: sram@61000000 {
		compatible = "zephyr,memory-region", "mmio-sram";
		device_type = "memory";
		reg = <0x61000000 DT_SIZE_K(512)>;
		zephyr,memory-region = "SRAM2";
	};

	leds {
		compatible = "gpio-leds";
		yellow_led_1: led_1 {
			gpios = <&pioc 10 GPIO_ACTIVE_LOW>;
			label = "LED 1";
		};
		yellow_led_2: led_2 {
			gpios = <&pioc 17 GPIO_ACTIVE_LOW>;
			label = "LED 2";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button_1 {
			label = "User Button";
			gpios = <&pioa 5 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
		};
	};

	xplained1_header: xplained-connector1 {
		compatible = "atmel-xplained-header";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;		/*           Shared */
		gpio-map =	<0 0 &pioa  3 0>,	/* TWD0           y */
				<1 0 &pioa  4 0>,	/* TWCK0          y */
				<2 0 &piob  2 0>,	/* URXD1            */
				<3 0 &piob  3 0>,	/* UTXD1            */
				<4 0 &pioa 31 0>,	/* SPI(CS)          */
				<5 0 &pioa 13 0>,	/* SPI(MOSI)      y */
				<6 0 &pioa 12 0>,	/* SPI(MISO)      y */
				<7 0 &pioa 14 0>;	/* SPI(SCK)       y */
							/* GND              */
							/* +3.3V            */
	};

	xplained2_header: xplained-connector2 {
		compatible = "atmel-xplained-header";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;		/*           Shared */
		gpio-map =	<0 0 &pioa 22 0>,	/* GPIO             */
				<1 0 &pioc 12 0>,	/* GPIO             */
				<2 0 &piob  0 0>,	/* GPIO             */
				<3 0 &piob  1 0>,	/* GPIO             */
				<4 0 &pioa 17 0>,	/* GPIO             */
				<5 0 &pioa 21 0>,	/* GPIO             */
				<6 0 &pioc 13 0>,	/* GPIO             */
				<7 0 &pioc 15 0>;	/* GPIO             */
							/* GND              */
							/* +3.3V            */
	};

	xplained3_header: xplained-connector3 {
		compatible = "atmel-xplained-header";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;		/*           Shared */
		gpio-map =	<0 0 &pioa 20 0>,	/* GPIO             */
				<1 0 &pioa 11 0>,	/* GPIO             */
				<2 0 &pioa 23 0>,	/* GPIO             */
				<3 0 &pioa 18 0>,	/* GPIO             */
				<4 0 &pioa 15 0>,	/* GPIO             */
				<5 0 &pioa 16 0>,	/* GPIO             */
				<6 0 &pioa  2 0>,	/* GPIO             */
				<7 0 &pioc  2 0>;	/* GPIO             */
							/* GND              */
							/* +3.3V            */
	};

	xplained4_header: xplained-connector4 {
		compatible = "atmel-xplained-header";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;		/*           Shared */
		gpio-map =	<0 0 &pioa  3 0>,	/* TWD0           y */
				<1 0 &pioa  4 0>,	/* TWCK0          y */
				<2 0 &piob  2 0>,	/* URXD1            */
				<3 0 &piob  3 0>,	/* UTXD1            */
				<4 0 &pioa 30 0>,	/* SPI(CS)          */
				<5 0 &pioa 13 0>,	/* SPI(MOSI)      y */
				<6 0 &pioa 12 0>,	/* SPI(MISO)      y */
				<7 0 &pioa 14 0>;	/* SPI(SCK)       y */
							/* GND              */
							/* +3.3V            */
	};
};

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

&twi0 {
	status = "okay";

	pinctrl-0 = <&twi0_default>;
	pinctrl-names = "default";
};

&spi0 {
	status = "okay";

	pinctrl-0 = <&spi0_default>;
	pinctrl-names = "default";

	cs-gpios = <&pioa 31 GPIO_ACTIVE_LOW>,
		   <&pioa 30 GPIO_ACTIVE_LOW>;
};

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

	pinctrl-0 = <&uart0_default>;
	pinctrl-names = "default";
};

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

	pinctrl-0 = <&uart1_default>;
	pinctrl-names = "default";
};

&wdt {
	status = "okay";
};

xplained1_i2c: &twi0 {
};

xplained1_spi: &spi0 {
};

xplained1_serial: &uart1 {
};

xplained4_i2c: &twi0 {
};

xplained4_spi: &spi0 {
};

xplained4_serial: &uart1 {
};

&smc {
	status = "okay";
	pinctrl-0 = <&smc_default>;
	pinctrl-names = "default";

	is66wv51216dbll@0 {
		reg = <0>;

		atmel,smc-write-mode = "nwe";
		atmel,smc-read-mode = "nrd";
		atmel,smc-setup-timing = <1 1 1 1>;
		atmel,smc-pulse-timing = <6 6 6 6>;
		atmel,smc-cycle-timing = <7 7>;
	};

	is66wv51216dbll@1 {
		reg = <1>;

		atmel,smc-write-mode = "nwe";
		atmel,smc-read-mode = "nrd";
		atmel,smc-setup-timing = <1 1 1 1>;
		atmel,smc-pulse-timing = <6 6 6 6>;
		atmel,smc-cycle-timing = <7 7>;
	};
};
