/*
 * 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 nRF52840 Dongle NRF52840";
	compatible = "nordic,nrf52840-dongle-nrf52840";

	chosen {
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,uart-mcumgr = &uart0;
		zephyr,bt-mon-uart = &uart0;
		zephyr,bt-c2h-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_ACTIVE_LOW>;
			label = "Green LED 0";
		};
		led1_red: led_1 {
			gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
			label = "Red LED 1";
		};
		led1_green: led_2 {
			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
			label = "Green LED 1";
		};
		led1_blue: led_3 {
			gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
			label = "Blue LED 1";
		};
	};

	pwmleds {
		compatible = "pwm-leds";
		red_pwm_led: pwm_led_0 {
			pwms = <&pwm0 8>;
		};
		green_pwm_led: pwm_led_1 {
			pwms = <&pwm0 41>;
		};
		blue_pwm_led: pwm_led_2 {
			pwms = <&pwm0 12>;
		};
	};

	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			gpios = <&gpio1 6 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			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;
		pwm-led0 = &red_pwm_led;
		pwm-led1 = &green_pwm_led;
		pwm-led2 = &blue_pwm_led;
		red-pwm-led = &red_pwm_led;
		green-pwm-led = &green_pwm_led;
		blue-pwm-led = &blue_pwm_led;
	};
};

&adc {
	status = "okay";
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

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

&i2c0 {
	compatible = "nordic,nrf-twi";
	status = "okay";
	sda-pin = <26>;
	scl-pin = <27>;
};

&i2c1 {
	compatible = "nordic,nrf-twi";
	/* Cannot be used together with spi1. */
	/* status = "okay"; */
	sda-pin = <30>;
	scl-pin = <31>;
};

&pwm0 {
	status = "okay";
	ch0-pin = <8>;
	ch0-inverted;
	ch1-pin = <41>;
	ch1-inverted;
	ch2-pin = <12>;
	ch2-inverted;
};

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

&spi1 {
	compatible = "nordic,nrf-spi";
	status = "okay";
	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"

zephyr_udc0: &usbd {
	compatible = "nordic,nrf-usbd";
	status = "okay";
};
