/*
 * Copyright (c) 2018-2020 Nordic Semiconductor ASA
 * Copyright (c) 2017 Linaro Limited
 *
 * SPDX-License-Identifier: Apache-2.0
 */

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

/ {
	model = "Nordic nRF9160 DK NRF52840";
	compatible = "nordic,nrf9160-dk-nrf52840";

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

	interface_to_nrf9160: gpio-interface {
		compatible = "nordic,nrf9160dk-nrf52840-interface";
		#gpio-cells = <2>;
		gpio-map-mask = <0xf 0>;
		gpio-map-pass-thru = <0 0xffffffff>;
		gpio-map = <0 0 &gpio0 17 0>,
			   <1 0 &gpio0 20 0>,
			   <2 0 &gpio0 15 0>,
			   <3 0 &gpio0 22 0>,
			   <4 0 &gpio1  4 0>,
			   <5 0 &gpio1  2 0>,
			   <6 0 &gpio1 13 0>,
			   <7 0 &gpio1 11 0>,
			   <8 0 &gpio1 15 0>;
	};

	reset_input: gpio-reset {
		compatible = "nordic,nrf9160dk-nrf52840-reset";
		/*
		 * This line is specified as active high for compatibility
		 * with the previously used Kconfig-based configuration.
		 */
		gpios = <&interface_to_nrf9160 5
			(GPIO_PULL_DOWN | GPIO_ACTIVE_HIGH)>;
		status = "disabled";
	};

	board-control {
		vcom0_pins_routing: switch-nrf91-uart1 {
			compatible = "nordic,nrf9160dk-optional-routing";
			control-gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
			status = "okay";
		};

		vcom2_pins_routing: switch-nrf91-uart2 {
			compatible = "nordic,nrf9160dk-optional-routing";
			/*
			 * Two pins (P1.12 and P0.12) need to be driven for
			 * this switch.
			 */
			control-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>,
					<&gpio0 12 GPIO_ACTIVE_HIGH>;
			status = "okay";
		};

		led1_pin_routing: switch-nrf91-led1 {
			compatible = "nordic,nrf9160dk-optional-routing";
			control-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
			status = "okay";
		};

		led2_pin_routing: switch-nrf91-led2 {
			compatible = "nordic,nrf9160dk-optional-routing";
			control-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
			status = "okay";
		};

		led3_pin_routing: switch-nrf91-led3 {
			compatible = "nordic,nrf9160dk-optional-routing";
			control-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
			status = "okay";
		};

		led4_pin_routing: switch-nrf91-led4 {
			compatible = "nordic,nrf9160dk-optional-routing";
			control-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
			status = "okay";
		};

		switch1_pin_routing: switch-nrf91-switch1 {
			compatible = "nordic,nrf9160dk-optional-routing";
			control-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
			status = "okay";
		};

		switch2_pin_routing: switch-nrf91-switch2 {
			compatible = "nordic,nrf9160dk-optional-routing";
			control-gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
			status = "okay";
		};

		button1_pin_routing: switch-nrf91-button1 {
			compatible = "nordic,nrf9160dk-optional-routing";
			control-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
			status = "okay";
		};

		button2_pin_routing: switch-nrf91-button2 {
			compatible = "nordic,nrf9160dk-optional-routing";
			control-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
			status = "okay";
		};

		nrf_interface_pins_0_2_routing: switch-nrf-if0-2-ctrl {
			compatible = "nordic,nrf9160dk-optional-routing";
			control-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
			status = "disabled";
		};

		nrf_interface_pins_3_5_routing: switch-nrf-if3-5-ctrl {
			compatible = "nordic,nrf9160dk-optional-routing";
			control-gpios = <&gpio0 24 GPIO_ACTIVE_HIGH>;
			status = "disabled";
		};

		nrf_interface_pins_6_8_routing: switch-nrf-if6-8-ctrl {
			compatible = "nordic,nrf9160dk-optional-routing";
			control-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
			status = "disabled";
		};
	};
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

/* The nRF52840 SoC does not have any connection to the any of the LEDs,
 * buttons, switches and Arduino pin headers on the nRF9160 DK board.
 */

&uart0 {
	compatible = "nordic,nrf-uarte";
	current-speed = <115200>;
	status = "okay";
	pinctrl-0 = <&uart0_default>;
	pinctrl-1 = <&uart0_sleep>;
	pinctrl-names = "default", "sleep";
};

&flash0 {

	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 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>;
		};
	};
};
