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

/ {
	model = "Sparkfun nRF9160 Thing Plus";
	compatible = "sparkfun,thing-plus-nrf9160";

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

	leds {
		compatible = "gpio-leds";
		blue_led: led_0 {
			gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
			label = "Blue LED (D7)";
		};
	};

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

	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			gpios = <&gpio0 12 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Switch 1";
		};
	};

	/* These aliases are provided for compatibility with samples */
	aliases {
		led0 = &blue_led;
		bootloader-led0 = &blue_led;
		pwm-led0 = &pwm_led0;
		sw0 = &button0;
	};

	/* Used for accessing other pins */
	feather_header: feather_connector {
		compatible = "adafruit-feather-header";
		#gpio-cells = <2>;
		gpio-map-mask = <0xffffffff 0xffffffc0>;
		gpio-map-pass-thru = <0 0x3f>;
		gpio-map = <12 0 &gpio0 26 0>,  /* SDA */
		<13 0 &gpio0 27 0>,  /* SCL */
		<14 0 &gpio0 29 0>,  /* PWM3 */
		<15 0 &gpio0 30 0>,  /* PWM3 */
		<16 0 &gpio0 0 0>,   /* PWM1 */
		<17 0 &gpio0 1 0>,   /* PWM1 */
		<18 0 &gpio0 2 0>,   /* PWM1 */
		<19 0 &gpio0 3 0>,   /* PWM0 */
		<20 0 &gpio0 4 0>,   /* PWM1 */
		/* 11 not connected */
		<10 0 &gpio0 24 0>,  /* TX */
		<9 0 &gpio0 23 0>,   /* RX */
		<8 0 &gpio0 22 0>,   /* MISO */
		<7 0 &gpio0 21 0>,   /* MOSI */
		<6 0 &gpio0 19 0>,   /* SCK */
		<5 0 &gpio0 18 0>,   /* SS */
		<4 0 &gpio0 17 0>,   /* ADC4 = AIN6 */
		<3 0 &gpio0 16 0>,   /* ADC3 = AIN5 */
		<2 0 &gpio0 15 0>,   /* ADC2 = AIN4 */
		<1 0 &gpio0 14 0>,   /* ADC1 = AIN2 */
		<0 0 &gpio0 13 0>;   /* ADC0 = AIN1 */
	};
};

&adc {
	status = "okay";
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&uart0 {
	status = "okay";
	current-speed = <115200>;
	tx-pin = <6>;
	rx-pin = <5>;
};

&uart1 {
	current-speed = <115200>;
	tx-pin = <0>;
	rx-pin = <1>;
};

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

&i2c1 {
	compatible = "nordic,nrf-twim";
	status = "okay";
	sda-pin = <26>;
	scl-pin = <27>;

	pcf85063a@51 {
		compatible = "nxp,pcf85063a";
		label = "PCF85063A";
		reg = <0x51>;
	};

	lis2dh@18 {
		compatible = "st,lis2dh";
		label = "LIS2DH";
		reg = <0x18>;
		irq-gpios = <&gpio0 29 0>;
	};

};

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

&spi3 {
	compatible = "nordic,nrf-spim";
	status = "okay";
	sck-pin = <11>;
	mosi-pin = <9>;
	miso-pin = <28>;
	cs-gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
	w25q32jv: w25q32jv@0 {
		compatible = "jedec,spi-nor";
		label = "W25Q32JV";
		reg = <0>;
		spi-max-frequency = <40000000>;
		wp-gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
		hold-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
		size = <0x2000000>;
		has-dpd;
		t-enter-dpd = <3000>;
		t-exit-dpd = <30000>;
		jedec-id = [ ef 40 16 ];
	};
};

&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@40000 {
			label = "image-0-nonsecure";
		};
		slot1_partition: partition@80000 {
			label = "image-1";
		};
		slot1_ns_partition: partition@b0000 {
			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_bsd: image_bsd@20010000 {
			/* BSD (shared) memory */
		};

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

/ {
	vbatt {
		compatible = "voltage-divider";
		io-channels = <&adc 7>;
		output-ohms = <100000>;
		full-ohms = <(100000 + 100000)>;
		power-gpios = <&gpio0 25 0>;
	};
};

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