/*
 * Copyright (c) 2018 Nordic Semiconductor ASA
 * Copyright (c) 2017 Linaro Limited
 *
 * SPDX-License-Identifier: Apache-2.0
 */

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

/ {
	model = "Nordic PCA10059 Dev Kit";
	compatible = "nordic,pca10059-dk", "nordic,nrf52840-qiaa",
		     "nordic,nrf52840";

	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_green: led_0 {
			gpios = <&gpio0 6 GPIO_INT_ACTIVE_LOW>;
			label = "Green LED 0";
		};
		led1_red: led_1 {
			gpios = <&gpio0 8 GPIO_INT_ACTIVE_LOW>;
			label = "Red LED 1";
		};
		led1_green: led_2 {
			gpios = <&gpio1 9 GPIO_INT_ACTIVE_LOW>;
			label = "Green LED 1";
		};
		led1_blue: led_3 {
			gpios = <&gpio0 12 GPIO_INT_ACTIVE_LOW>;
			label = "Blue LED 1";
		};
	};

	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			gpios = <&gpio1 6 GPIO_PUD_PULL_UP>;
			label = "Push button switch 0";
		};
	};

	/* These aliases are provided for compatibility with samples */
	aliases {
		sw0 = &button0;
		led0 = &led0_green;
		led1 = &led1_red;
		led2 = &led1_green;
		led3 = &led1_blue;
		led0-green = &led0_green;
		led1-red   = &led1_red;
		led1-green = &led1_green;
		led1-blue  = &led1_blue;
	};
};

&gpiote {
	status ="ok";
};

&gpio0 {
	status ="ok";
};

&gpio1 {
	status ="ok";
};

&uart0 {
	compatible = "nordic,nrf-uarte";
	current-speed = <115200>;
	status = "ok";
	tx-pin = <20>;
	rx-pin = <24>;
	rts-pin = <17>;
	cts-pin = <22>;
};

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

&i2c1 {
	/* Cannot be used together with spi1. */
	/* status = "ok"; */
	sda-pin = <30>;
	scl-pin = <31>;
};

/*
 * By default, not adding all available SPI instances (spi2, spi3) due to
 * limited GPIOs available on dongle board.
 */
&spi0 {
	/* Cannot be used together with i2c0. */
	/* status = "ok"; */
	sck-pin = <27>;
	mosi-pin = <26>;
	miso-pin = <42>;
};

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

/* Include flash partition table.
 * Two partition tables are available:
 * fstab-stock		-compatible with Nordic nRF5 bootloader, default
 * fstab-debugger	-to use an external debugger, w/o the nRF5 bootloader
 */
#include "fstab-stock.dts"

&usbd {
	compatible = "nordic,nrf-usbd";
	status = "ok";
};
