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

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

/ {
	model = "Nordic PCA20020 Dev Kit";
	compatible = "nordic,pca20020-dk", "nordic,nrf52832-qfaa",
		"nordic,nrf52832";

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

	/* These aliases are provided for compatibility with samples */
	aliases {
		led0 = &led0;
		sw0 = &button0;
	};

	leds {
		compatible = "gpio-leds";
		/* Lightwell RGB */
		led0: led_0 {
			gpios = <&sx1509b 5 0>;
			label = "Green LED";
		};
		led1: led_1 {
			gpios = <&sx1509b 6 0>;
			label = "Blue LED";
		};
		led2: led_2 {
			gpios = <&sx1509b 7 0>;
			label = "Red LED";
		};
	};

	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			/* gpio flags need validation */
			gpios = <&gpio0 11 GPIO_INT_ACTIVE_LOW>;
			label = "Button";
		};
	};
};

&adc {
	status = "okay";
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

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

&i2c0 {
	compatible = "nordic,nrf-twim";
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
	sda-pin = <7>;
	scl-pin = <8>;

	sx1509b: sx1509b@3e {
		compatible = "semtech,sx1509b";
		reg = <0x3e>;
		label = "GPIO_P0";
		gpio-controller;
		#gpio-cells = <2>;
	};

	lps22hb_press: lps22hb_press@5c {
		compatible = "st,lps22hb-press";
		reg = <0x5c>;
		label = "LPS22HB";
	};

	hts221: hts221@5f {
		compatible = "st,hts221";
		reg = <0x5f>;
		label = "HTS221";
		drdy-gpios = <&gpio0 24 GPIO_INT_ACTIVE_HIGH>;
	};

	ccs811: ccs811@5a {
		compatible = "ams,ccs811";
		reg = <0x5a>;
		label = "CCS811";
	};
};

&i2c1 {
	compatible = "nordic,nrf-twim";
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
	sda-pin = <14>;
	scl-pin = <15>;
};

&flash0 {
	/*
	 * If chosen's zephyr,code-partition
	 * is unset, the image will be linked
	 * into the entire flash device.  If
	 * it points to an individual
	 * partition, the code will be linked
	 * to, and restricted to that
	 * partition.
	 */
	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 0x32000>;
		};
		slot1_partition: partition@3e000 {
			label = "image-1";
			reg = <0x0003E000 0x32000>;
		};
		scratch_partition: partition@70000 {
			label = "image-scratch";
			reg = <0x00070000 0xa000>;
		};

		/*
		 * The flash starting at 0x0007a000 and ending at
		 * 0x0007ffff (sectors 122-127) is reserved for use
		 * by the application. If enabled, partition for NFFS
		 * will be created in this area.
		 */
		storage_partition: partition@7a000 {
			label = "storage";
			reg = <0x0007a000 0x00006000>;
		};
	};
};
