/*
 * 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;
		pwm-0 = &pwm0;
		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";
};

&pwm0 {
	status = "okay";

	pinctrl-0 = <&pwm0_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>;
	};
};
