/*
 * Copyright (c) 2018-2020 Nordic Semiconductor ASA
 * Copyright (c) 2020 Circuit Dojo LLC
 *
 * SPDX-License-Identifier: Apache-2.0
 */
#include "circuitdojo_feather_nrf9160_common-pinctrl.dtsi"

/ {
	model = "Circuit Dojo nRF9160 Feather";
	compatible = "circuitdojo,feather-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 0 PWM_MSEC(20) PWM_POLARITY_INVERTED>;
		};
	};

	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 */
	};

	nrf-ps-en {
		compatible = "regulator-fixed-sync", "regulator-fixed";
		label = "nrf_ps_en";
		regulator-name = "nrf_ps_en";
		enable-gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>;
		regulator-boot-on;
	};
};

&adc {
	status = "okay";
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

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

&uart1 {
	current-speed = <115200>;
	pinctrl-0 = <&uart1_default>;
	pinctrl-1 = <&uart1_sleep>;
	pinctrl-names = "default", "sleep";
};

&uart2 {
	pinctrl-0 = <&uart2_default>;
	pinctrl-1 = <&uart2_sleep>;
	pinctrl-names = "default", "sleep";
};

&i2c1 {
	compatible = "nordic,nrf-twim";
	status = "okay";

	pinctrl-0 = <&i2c1_default>;
	pinctrl-1 = <&i2c1_sleep>;
	pinctrl-names = "default", "sleep";
	pcf85063a@51 {
		compatible = "nxp,pcf85063a";
		label = "PCF85063A";
		reg = <0x51>;
	};

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

};

&pwm0 {
	status = "okay";
	pinctrl-0 = <&pwm0_default>;
	pinctrl-1 = <&pwm0_sleep>;
	pinctrl-names = "default", "sleep";
};

&spi3 {
	compatible = "nordic,nrf-spim";
	status = "okay";
	cs-gpios = < &gpio0 7 GPIO_ACTIVE_LOW >;
	pinctrl-0 = <&spi3_default>;
	pinctrl-1 = <&spi3_sleep>;
	pinctrl-names = "default", "sleep";
	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 GPIO_ACTIVE_HIGH>;
	};
};

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