/*
 * Copyright (c) 2021 Laird Connectivity
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <nordic/nrf51822_qfac.dtsi>
#include "rm1xx_dvk-pinctrl.dtsi"

/ {
	model = "Laird Connectivity RM1XX_DVK";
	compatible = "lairdconnect,rm1xx_dvk";

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

	buttons {
		compatible = "gpio-keys";
		button2: button_2 {
			gpios = <&gpio0 5 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push button switch 2 (BUTTON2)";
		};
	};

	/* These aliases are provided for compatibility with samples */
	aliases {
		sw0 = &button2;
		lora0 = &lora0;
	};
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&i2c0 {
	compatible = "nordic,nrf-twi";
	status = "okay";
	pinctrl-0 = <&i2c0_default>;
	pinctrl-1 = <&i2c0_sleep>;
	pinctrl-names = "default", "sleep";
};

/* SPI0 cannot be used with I2C0 */
&spi0 {
	/* Disabled by default */
	compatible = "nordic,nrf-spi";
	cs-gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
	pinctrl-0 = <&spi0_default>;
	pinctrl-1 = <&spi0_sleep>;
	pinctrl-names = "default", "sleep";
};

&spi1 {
	compatible = "nordic,nrf-spi";
	status = "okay";
	cs-gpios = <&gpio0 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>,
		   <&gpio0 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;

	pinctrl-0 = <&spi1_default>;
	pinctrl-1 = <&spi1_sleep>;
	pinctrl-names = "default", "sleep";
	at25: at25df041b@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <1000000>;
		label = "at25df04";
		jedec-id = [1f 44 02];
		size = <0x400000>;
		has-lock = <0xbc>;
		has-dpd;
		t-enter-dpd = <500>;
		t-exit-dpd = <20>;
	};

	lora0: lora@1 {
		compatible = "semtech,sx1272";
		reg = <1>;
		label = "sx1272";
		reset-gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
		dio-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>,
			    <&gpio0 13 GPIO_ACTIVE_HIGH>,
			    <&gpio0 14 GPIO_ACTIVE_HIGH>,
			    <&gpio0 15 GPIO_ACTIVE_HIGH>,
			    <&gpio0 16 GPIO_ACTIVE_HIGH>,
			    <&gpio0 1 GPIO_ACTIVE_HIGH>;
		rfi-enable-gpios = <&gpio0 19 GPIO_ACTIVE_HIGH>;
		rfo-enable-gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
		spi-max-frequency = <1000000>;
	};
};

&uart0 {
	compatible = "nordic,nrf-uart";
	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>;

		/* 52K */
		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0x0000C000>;
		};
		/* 188K */
		slot0_partition: partition@c000 {
			label = "image-0";
			reg = <0x0000C000 0x00030000>;
		};

		/*
		 * Storage partition will be used by FCB/LittleFS/NVS
		 * if enabled. 16KB
		 */
		storage_partition: partition@3c000 {
			label = "storage";
			reg = <0x0003C000 0x00004000>;
		};
	};
};

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

		/* 188K reserved for slot1 */

		/* 68K */
		lfs_partition: partition@30000 {
			label = "lfs_storage";
			reg = <0x00030000 0x00010000>;
		};
	};
};
