/*
 * 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;
		zephyr,code-partition = &slot0_partition;
	};

	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";
		};
	};

	aliases {
		watchdog0 = &wdt0;
	};
};

&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>;
		};
	};
};
