/*
 * Copyright (c) 2018 Phytec Messtechnik GmbH
 * Copyright (c) 2017 Linaro Limited
 *
 * SPDX-License-Identifier: Apache-2.0
 */

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

/ {
	model = "reel board";
	compatible = "phytec,reel_board", "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";
		yellow_led: led_0 {
			gpios = <&gpio0 13 0>;
			label = "User D13";
		};
		red_led: led_1 {
			gpios = <&gpio0 11 0>;
			label = "User D3 red";
		};
		green_led: led_2 {
			gpios = <&gpio0 12 0>;
			label = "User D3 green";
		};
		blue_led: led_3 {
			gpios = <&gpio1 9 0>;
			label = "User D3 blue";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		user_button: button_0 {
			gpios = <&gpio0 7 GPIO_PUD_PULL_UP>;
			label = "User Button";
		};
	};

	aliases {
		led0 = &yellow_led;
		led1 = &red_led;
		led2 = &green_led;
		led3 = &blue_led;
		sw0 = &user_button;
	};
};

&gpiote {
	status ="ok";
};

&gpio0 {
	status ="ok";
};

&gpio1 {
	status ="ok";
};

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

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

	mma8652fc@1d {
		compatible = "nxp,fxos8700","nxp,mma8652fc";
		reg = <0x1d>;
		label = "MMA8652FC";
		int1-gpios = <&gpio0 24 0>;
		int2-gpios = <&gpio0 25 0>;
	};

	hdc1008@43 {
		compatible = "ti,hdc1008","ti,hdc1010";
		reg = <0x43>;
		label = "HDC1010";
		drdy-gpios = <&gpio0 22 GPIO_PUD_PULL_UP>;
	};

	apds9960@39 {
		compatible = "avago,apds9960";
		reg = <0x39>;
		label = "APDS9960";
		int-gpios = <&gpio0 23 0>;
	};
};

&spi3 {
	status = "ok";
	sck-pin = <19>;
	mosi-pin = <20>;
	miso-pin = <21>;
	cs-gpios = <&gpio0 17 0>;

	ssd1673fb@0 {
		compatible = "solomon,ssd1673fb", "gd,gde0213b1";
		label = "SSD1673";
		spi-max-frequency = <4000000>;
		reg = <0>;
		width = <250>;
		height = <120>;
		pp-width-bits = <8>;
		pp-height-bits = <8>;
		reset-gpios = <&gpio0 15 0>;
		dc-gpios = <&gpio0 16 0>;
		busy-gpios = <&gpio0 14 0>;
		gdv-a = <0x10>;
		gdv-b = <0x0a>;
		sdv = <0x19>;
		vcom = <0xa8>;
		border-waveform = <0x71>;
	};
};

&flash0 {
	/*
	 * For more information, see:
	 * http://docs.zephyrproject.org/latest/guides/dts/index.html#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 0x000067000>;
		};
		slot1_partition: partition@73000 {
			label = "image-1";
			reg = <0x00073000 0x000067000>;
		};
		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/NFFS/NVS if enabled. */
		storage_partition: partition@f8000 {
			label = "storage";
			reg = <0x000f8000 0x00008000>;
		};
	};
};

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