/*
 * Copyright (c) 2018 Nordic Semiconductor ASA
 * Copyright (c) 2017 Shawn Nock <shawn@monadnock.ca>
 * Copyright (c) 2017 Linaro Limited
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <nordic/nrf52810_qfaa.dtsi>

/ {
	model = "Nordic PCA10040 Dev Kit";
	compatible = "nordic,pca10040-dk", "nordic,nrf52810-qfaa",
		     "nordic,nrf52810";

	chosen {
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,uart-mcumgr = &uart0;
		zephyr,bt-mon-uart = &uart0;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpio0 17 GPIO_INT_ACTIVE_LOW>;
			label = "Green LED 0";
		};
		led1: led_1 {
			gpios = <&gpio0 18 GPIO_INT_ACTIVE_LOW>;
			label = "Green LED 1";
		};
		led2: led_2 {
			gpios = <&gpio0 19 GPIO_INT_ACTIVE_LOW>;
			label = "Green LED 2";
		};
		led3: led_3 {
			gpios = <&gpio0 20 GPIO_INT_ACTIVE_LOW>;
			label = "Green LED 3";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		button0: button_0 {
			label = "Push button switch 0";
			gpios = <&gpio0 13 GPIO_PUD_PULL_UP>;
		};
		button1: button_1 {
			label = "Push button switch 1";
			gpios = <&gpio0 14 GPIO_PUD_PULL_UP>;
		};
		button2: button_2 {
			label = "Push button switch 2";
			gpios = <&gpio0 15 GPIO_PUD_PULL_UP>;
		};
		button3: button_3 {
			label = "Push button switch 3";
			gpios = <&gpio0 16 GPIO_PUD_PULL_UP>;
		};
	};

	/* These aliases are provided for compatibility with samples */
	aliases {
		led0 = &led0;
		led1 = &led1;
		led2 = &led2;
		led3 = &led3;
		sw0 = &button0;
		sw1 = &button1;
		sw2 = &button2;
		sw3 = &button3;
	};
};

&adc {
	status = "ok";
};

&gpiote {
	status ="ok";
};

&gpio0 {
	status ="ok";
};

&uart0 {
	compatible = "nordic,nrf-uarte";
	status = "ok";
	current-speed = <115200>;
	tx-pin = <6>;
	rx-pin = <8>;
	rts-pin = <5>;
	cts-pin = <7>;
};

&i2c0 {
	status = "ok";
	sda-pin = <26>;
	scl-pin = <27>;
};

&spi0 {
	status = "ok";
	sck-pin = <29>;
	mosi-pin = <31>;
	miso-pin = <30>;
};

&flash0 {
	/*
	 * For more information, see:
	 * http://docs.zephyrproject.org/latest/guides/dts/index.html#flash-partitions
	 */
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0xc000>;
		};
		slot0_partition: partition@c000 {
			label = "image-0";
			reg = <0x0000C000 0xd000>;
		};
		slot1_partition: partition@19000 {
			label = "image-1";
			reg = <0x00019000 0xd000>;
		};
		scratch_partition: partition@26000 {
			label = "image-scratch";
			reg = <0x00026000 0x3000>;
		};
		storage_partition: partition@29000 {
			label = "storage";
			reg = <0x00029000 0x00007000>;
		};
	};
};
