/*
 * Copyright (c) 2017 Shawn Nock <shawn@monadnock.ca>
 * Copyright (c) 2017 Linaro Limited
 * Copyrigtt (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,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 = "ok";
};

&gpiote {
	status = "ok";
};

&gpio0 {
	status = "ok";
};

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

&i2c0 {
	status = "ok";
	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 {
	status = "ok";
	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>;
		};
	};
};
