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

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

	chosen {
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,uart-mcumgr = &uart0;
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpio0 2 0>;
			label = "Green LED 1";
		};
		led1: led_1 {
			gpios = <&gpio0 3 0>;
			label = "Green LED 2";
		};
		led2: led_2 {
			gpios = <&gpio0 4 0>;
			label = "Green LED 3";
		};
		led3: led_3 {
			gpios = <&gpio0 5 0>;
			label = "Green LED 4";
		};
	};

	pwmleds {
		compatible = "pwm-leds";
		pwm_led0: pwm_led_0 {
			pwms = <&pwm0 2>;
		};
	};

	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			gpios = <&gpio0 8 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Switch 1";
		};
		button1: button_1 {
			gpios = <&gpio0 9 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Switch 2";
		};
		button2: button_2 {
			gpios = <&gpio0 6 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push button 1";
		};
		button3: button_3 {
			gpios = <&gpio0 7 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push button 2";
		};
	};

	interface_to_nrf52840: 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 18 0>,
			   <2 0 &gpio0 19 0>,
			   <3 0 &gpio0 21 0>,
			   <4 0 &gpio0 22 0>,
			   <5 0 &gpio0 23 0>;
			   /* 6: COEX0 */
			   /* 7: COEX1 */
			   /* 8: COEX2 */
	};

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

	arduino_header: connector {
		compatible = "arduino-header-r3";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map = <0 0 &gpio0 14 0>,	/* A0 */
			   <1 0 &gpio0 15 0>,	/* A1 */
			   <2 0 &gpio0 16 0>,	/* A2 */
			   <3 0 &gpio0 17 0>,	/* A3 */
			   <4 0 &gpio0 18 0>,	/* A4 */
			   <5 0 &gpio0 19 0>,	/* A5 */
			   <6 0 &gpio0 0 0>,	/* D0 */
			   <7 0 &gpio0 1 0>,	/* D1 */
			   <8 0 &gpio0 2 0>,	/* D2 */
			   <9 0 &gpio0 3 0>,	/* D3 */
			   <10 0 &gpio0 4 0>,	/* D4 */
			   <11 0 &gpio0 5 0>,	/* D5 */
			   <12 0 &gpio0 6 0>,	/* D6 */
			   <13 0 &gpio0 7 0>,	/* D7 */
			   <14 0 &gpio0 8 0>,	/* D8 */
			   <15 0 &gpio0 9 0>,	/* D9 */
			   <16 0 &gpio0 10 0>,	/* D10 */
			   <17 0 &gpio0 11 0>,	/* D11 */
			   <18 0 &gpio0 12 0>,	/* D12 */
			   <19 0 &gpio0 13 0>,	/* D13 */
			   <20 0 &gpio0 30 0>,	/* D14 */
			   <21 0 &gpio0 31 0>;	/* D15 */
	};

	arduino_adc: analog-connector {
		compatible = "arduino,uno-adc";
		#io-channel-cells = <1>;
		io-channel-map = <0 &adc 1>,	/* A0 = P0.14 = AIN1 */
				 <1 &adc 2>,	/* A1 = P0.15 = AIN2 */
				 <2 &adc 3>,	/* A2 = P0.16 = AIN3 */
				 <3 &adc 4>,	/* A3 = P0.17 = AIN4 */
				 <4 &adc 5>,	/* A4 = P0.18 = AIN5 */
				 <5 &adc 6>;	/* A5 = P0.19 = AIN6 */
	};

	/* These aliases are provided for compatibility with samples */
	aliases {
		led0 = &led0;
		led1 = &led1;
		led2 = &led2;
		led3 = &led3;
		pwm-led0 = &pwm_led0;
		sw0 = &button2;
		sw1 = &button3;
		sw2 = &button0;
		sw3 = &button1;
		bootloader-led0 = &led0;
	};
};

&adc {
	status = "okay";
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&uart0 {
	status = "okay";
	current-speed = <115200>;
	tx-pin = <29>;
	rx-pin = <28>;
	rx-pull-up;
	rts-pin = <27>;
	cts-pin = <26>;
	cts-pull-up;
};

arduino_serial: &uart1 {
	status = "okay";
	current-speed = <115200>;
	tx-pin = <1>;
	rx-pin = <0>;
	rx-pull-up;
	rts-pin = <14>;
	cts-pin = <15>;
	cts-pull-up;
};

&uart2 {
	tx-pin = <24>;
	rx-pin = <23>;
};

arduino_i2c: &i2c2 {
	compatible = "nordic,nrf-twim";
	status = "okay";
	sda-pin = <30>;
	scl-pin = <31>;
};

&pwm0 {
	status = "okay";
	ch0-pin = <2>;
};

&spi3 {
	compatible = "nordic,nrf-spim";
	status = "okay";
	sck-pin = <19>;
	mosi-pin = <18>;
	miso-pin = <17>;
};

&timer0 {
	status = "okay";
};

&timer1 {
	status = "okay";
};

&timer2 {
	status = "okay";
};

&flash0 {

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

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0x10000>;
		};
		slot0_partition: partition@10000 {
			label = "image-0";
		};
		slot0_ns_partition: partition@50000 {
			label = "image-0-nonsecure";
		};
		slot1_partition: partition@80000 {
			label = "image-1";
		};
		slot1_ns_partition: partition@c0000 {
			label = "image-1-nonsecure";
		};
		scratch_partition: partition@f0000 {
			label = "image-scratch";
			reg = <0x000f0000 0xa000>;
		};
		storage_partition: partition@fa000 {
			label = "storage";
			reg = <0x000fa000 0x00006000>;
		};
	};
};

/ {

	reserved-memory {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		sram0_s: image_s@20000000 {
			/* Secure image memory */
		};

		sram0_modem: image_modem@20016000 {
			/* Modem (shared) memory */
		};

		sram0_ns: image_ns@20020000 {
			/* Non-Secure image memory */
		};
	};
};

/* Include partition configuration file */
#include "nrf9160dk_nrf9160_partition_conf.dts"
