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

/dts-v1/;
#include <nordic/nrf51822_qfac.dtsi>
#include "rm1xx_dvk-pinctrl.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	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)";
			zephyr,code = <INPUT_KEY_0>;
		};
	};

	/* These aliases are provided for compatibility with samples */
	aliases {
		sw0 = &button2;
		lora0 = &lora0;
		watchdog0 = &wdt0;
		spi-flash0 = &at25;
	};
};

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