/*
 * Copyright (c) 2019-2020 Actinius
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/ {
	model = "Actinius Icarus IoT Dev Board";
	compatible = "actinius,icarus";

	chosen {
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,uart-mcumgr = &uart0;
	};

	leds {
		compatible = "gpio-leds";

		red_led: led_0 {
			gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
			label = "Red LED";
		};

		green_led: led_1 {
			gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
			label = "Green LED";
		};

		blue_led: led_2 {
			gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
			label = "Blue LED";
		};
	};

	pwmleds {
		compatible = "pwm-leds";

		red_pwm_led: led_pwm_0 {
			pwms = <&pwm0 10>;
			label = "Red PWM LED";
		};

		green_pwm_led: led_pwm_1 {
			pwms = <&pwm0 11>;
			label = "Green PWM LED";
		};

		blue_pwm_led: led_pwm_2 {
			pwms = <&pwm0 12>;
			label = "Blue PWM LED";
		};
	};

	buttons {
		compatible = "gpio-keys";

		button0: button_0 {
			gpios = <&gpio0 5 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Push Button 1";
		};
	};

	aliases {
		led0 = &red_led;
		led1 = &green_led;
		led2 = &blue_led;
		pwm-led0 = &red_pwm_led;
		pwm-led1 = &green_pwm_led;
		pwm-led2 = &blue_pwm_led;
		red-pwm-led = &red_pwm_led;
		green-pwm-led = &green_pwm_led;
		blue-pwm-led = &blue_pwm_led;
		sw0 = &button0;
		bootloader-led0 = &green_pwm_led;
	};

	vbatt {
		compatible = "voltage-divider";
		io-channels = <&adc 0>;
		output-ohms = <10000000>;
		full-ohms = <(10000000 + 4700000)>;
	};
};

&adc {
	status ="okay";
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&uart0 {
	status = "okay";

	current-speed = <115200>;
	tx-pin = <9>;
	rx-pin = <6>;
	rts-pin = <7>;
	cts-pin = <25>;
};

&uart1 {
	status = "okay";

	current-speed = <115200>;
	tx-pin = <24>;
	rx-pin = <23>;
};

&uart2 {
	current-speed = <115200>;
	tx-pin = <4>;
	rx-pin = <5>;
};

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

	clock-frequency = <I2C_BITRATE_FAST>;
	sda-pin = <26>;
	scl-pin = <27>;

	lis2dh12-accel@19 {
		compatible = "st,lis2dh12", "st,lis2dh";
		reg = <0x19>;
		irq-gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>,
			  <&gpio0 29 GPIO_ACTIVE_HIGH>;
		label = "LIS2DH12-ACCEL";
	};
};

&spi3 {
	compatible = "nordic,nrf-spim";
	status = "okay";

	sck-pin = <20>;
	mosi-pin = <21>;
	miso-pin = <22>;
};

&pwm0 {
	status = "okay";

	ch0-pin = <10>;
	ch0-inverted;

	ch1-pin = <11>;
	ch1-inverted;

	ch2-pin = <12>;
	ch2-inverted;
};

&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@50000 {
			label = "image-0-nonsecure";
		};
		slot1_partition: partition@80000 {
			label = "image-1";
		};
		slot1_ns_partition: partition@c0000 {
			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_modem: image_modem@20010000 {
			/* Modem (shared) memory */
		};

		sram0_ns: image_ns@20020000 {
			/* Non-Secure image memory */
		};
	};
};

/* Include file with mappings and aliases for feather compatibility */
#include "feather_connector.dtsi"

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