/*
 * Copyright (c) 2019 Ajay Meena <intajayk@gmail.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

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

/ {
	model = "Papyr";
	compatible = "nordic,pca10056-dk";

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

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
			label = "Green LED 0";
		};
		led1: led_1 {
			gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
			label = "Blue LED 1";
		};
		led2: led_2 {
			gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
			label = "Red LED 2";
		};
	};

	pwmleds {
		compatible = "pwm-leds";
		pwm_led0: pwm_led_0 {
			pwms = <&pwm0 13>;
			label = "Green PWM LED 0";
		};
		pwm_led1: pwm_led_1 {
			pwms = <&pwm0 15>;
			label = "Blue PWM LED 1";
		};
		pwm_led2: pwm_led_2 {
			pwms = <&pwm0 14>;
			label = "Red PWM LED 2";
		};
	};

	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
			label = "Push button switch 0";
		};
	};

	/* These aliases are provided for compatibility with samples */
	aliases {
		led0 = &led0;
		led1 = &led1;
		led2 = &led2;
		pwm-led0 = &pwm_led0;
		pwm-led1 = &pwm_led1;
		pwm-led2 = &pwm_led2;
		green-pwm-led = &pwm_led0;
		blue-pwm-led = &pwm_led1;
		red-pwm-led = &pwm_led2;
		sw0 = &button0;
	};
};

&adc {
	status = "okay";
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

&uart0 {
	compatible = "nordic,nrf-uart";
	current-speed = <115200>;
	status = "okay";
	tx-pin = <8>;
	rx-pin = <7>;
};

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

&spi1 {
	compatible = "nordic,nrf-spi";
	status = "okay";
	sck-pin = <31>;
	mosi-pin = <29>;
	miso-pin = <33>;
};

&pwm0 {
	status = "okay";
	ch0-pin = <13>;
	ch0-inverted;
	ch1-pin = <14>;
	ch1-inverted;
	ch2-pin = <15>;
	ch2-inverted;
};

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

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x000000000 0x0000C000>;
		};
		slot0_partition: partition@c000 {
			label = "image-0";
			reg = <0x0000C000 0x00067000>;
		};
		slot1_partition: partition@73000 {
			label = "image-1";
			reg = <0x00073000 0x00067000>;
		};
		scratch_partition: partition@da000 {
			label = "image-scratch";
			reg = <0x000da000 0x0001e000>;
		};

		/*
		 * The flash starting at 0x000f8000 and ending at
		 * 0x000fffff is reserved for use by the application.
		 */

		/*
		 * Storage partition will be used by FCB/LittleFS/NVS
		 * if enabled.
		 */
		storage_partition: partition@f8000 {
			label = "storage";
			reg = <0x000f8000 0x00008000>;
		};
	};
};

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