/*
 * Copyright (c) 2020 Guillaume Paquet <guillaume.paquet@smile.fr>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

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

/ {
	model = "RAKWireless RAK5010 Wistrio Board with a Nordic NRF52840 SoC";
	compatible = "nordic,rak5010_nrf52840";

	chosen {
		zephyr,console = &uart1;
		zephyr,shell-uart = &uart1;
		zephyr,uart-mcumgr = &uart1;
		zephyr,bt-mon-uart = &uart1;
		zephyr,bt-c2h-uart = &uart1;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
			label = "Green LED 0";
		};
	};

	/* Declaration of aliases */
	aliases {
		led0 = &led0;
	};
};

&adc {
	status = "okay";
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

&uart0 {
	compatible = "nordic,nrf-uart";
	status = "okay";
	current-speed = <115200>;

	/* QUECTEL BG9X */
	pinctrl-0 = <&uart0_default>;
	pinctrl-1 = <&uart0_sleep>;
	pinctrl-names = "default", "sleep";
	quectel_bg9x: quectel_bg9x {
		compatible = "quectel,bg9x";
		label = "quectel,bg9x";
		mdm-power-gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
		mdm-reset-gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
		mdm-dtr-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
		mdm-wdisable-gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
		status = "okay";
	};
};

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

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

	/* TI OPT3001 light sensor */
	pinctrl-0 = <&i2c1_default>;
	pinctrl-1 = <&i2c1_sleep>;
	pinctrl-names = "default", "sleep";
	opt3001@44 {
		compatible = "ti,opt3001";
		label = "OPT3001";
		reg = <0x44>;
	};

	/* ST Microelectronics LIS3DH motion sensor */
	lis3dh@19 {
		compatible = "st,lis3dh";
		label = "LIS3DH";
		reg = <0x19>;
		irq-gpios = <&gpio0 15 0>;
	};

	/* ST Microelectronics LPS22HB pressure sensor */
	lps22hb-press@5c {
		compatible = "st,lps22hb-press";
		reg = <0x5c>;
		label = "LPS22HB";
	};
};

&qspi {
	status = "okay";
	pinctrl-0 = <&qspi_default>;
	pinctrl-1 = <&qspi_sleep>;
	pinctrl-names = "default", "sleep";
	is25wp064a: is25wp064a@0 {
		compatible = "nordic,qspi-nor";
		reg = <0>;
		writeoc = "pp4io";
		readoc = "read4io";
		sck-frequency = <16000000>;
		label = "IS25WP064A";
		jedec-id = [9d 70 17];
		size = <67108864>;
		has-dpd;
		t-enter-dpd = <3000>;
		t-exit-dpd = <5000>;
	};
};

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

zephyr_udc0: &usbd {
	compatible = "nordic,nrf-usbd";
	status = "okay";
};
