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

/dts-v1/;
#include <nordic/nrf51822_qfac.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";
	sda-pin = <30>;
	scl-pin = <29>;
};

/* SPI0 cannot be used with I2C0 */
&spi0 {
	/* Disabled by default */
	compatible = "nordic,nrf-spi";
	sck-pin = <0>;
	mosi-pin = <3>;
	miso-pin = <17>;
	cs-gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
};

&spi1 {
	compatible = "nordic,nrf-spi";
	status = "okay";
	sck-pin = <11>;
	mosi-pin = <9>;
	miso-pin = <10>;
	cs-gpios = <&gpio0 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>,
		   <&gpio0 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;

	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";
	tx-pin = <21>;
	rx-pin = <22>;
	rts-pin = <23>;
	cts-pin = <24>;
};

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

		/* 52K */
		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x000000000 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 0x000010000>;
		};
	};
};
