/*
 * Copyright (c) 2019 Brett Witherspoon
 * Copyright (c) 2020 Friedt Professional Engineering Services, Inc
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;

#include <ti/cc1352r.dtsi>
#include "../cc1352r1_launchxl/boosterpack_connector.dtsi"

/*
 * Define some constants from driverlib/ioc.h in TI HAL,
 * since we don't have a way to include the file directly.
 */
#define IOC_PORT_MCU_UART0_TX 0x00000010
#define IOC_PORT_MCU_UART0_RX 0x0000000F

#define BTN_GPIO_FLAGS (GPIO_ACTIVE_LOW | GPIO_PULL_UP)

/ {
	model = "TI CC1352R1 SensorTag";
	compatible = "ti,sensortag-cc1352r";

	aliases {
		led0 = &led0;
		led1 = &led1;
		led2 = &led2;
		sw0 = &btn0;
		sw1 = &btn1;
		sensor0 = &sensor0;
		sensor1 = &sensor1;
		sensor2 = &sensor2;
	};

	chosen {
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
	};

	leds {
		compatible = "gpio-leds";
		led0: led_0 {
			gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
			label = "Green LED";
		};
		led1: led_1 {
			gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
			label = "Red LED";
		};
		led2: led_2 {
			gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
			label = "Blue LED";
		};
	};

	keys {
		compatible = "gpio-keys";
		btn0: btn_0 {
			gpios = <&gpio0 15 BTN_GPIO_FLAGS>;
			label = "Push button 1";
		};
		btn1: btn_1 {
			gpios = <&gpio0 14 BTN_GPIO_FLAGS>;
			label = "Push button 2";
		};
	};

	power-states {
		idle: idle {
			compatible = "zephyr,power-state";
			power-state-name = "suspend-to-idle";
			min-residency-us = <1000>;
		};

		standby: standby {
			compatible = "zephyr,power-state";
			power-state-name = "standby";
			min-residency-us = <5000>;
			exit-latency-us = <240>;
		};
	};
};

&cpu0 {
	clock-frequency = <48000000>;
	cpu-power-states = <&idle &standby>;
};

&trng {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&uart0 {
	status = "okay";
	current-speed = <115200>;
	tx-pin = <13 IOC_PORT_MCU_UART0_TX>;
	rx-pin = <12 IOC_PORT_MCU_UART0_RX>;
};

&i2c0 {
	status = "okay";
	scl-pin = <4>;
	sda-pin = <5>;

	sensor0: sensor@44 {
		compatible = "ti,opt3001";
		reg = <0x44>;
		label = "OPT3001";
	};

	sensor2: sensor@41 {
		compatible = "ti,hdc2080";
		reg = <0x41>;
		label = "HDC2080";
		int-gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
	};
};

&spi0 {
	status = "okay";
	sck-pin = <10>;
	mosi-pin = <9>;
	miso-pin = <8>;
	cs-gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;

	sensor1: sensor@0 {
		compatible = "adi,adxl362";
		reg = <0>;
		label = "ADXL362";
		int1-gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>;
		spi-max-frequency = <8000000>;
	};

	/* TODO: "jedec,spi-nor" for the mx25r8035 */
};

&rtc {
	status = "okay";
};
