/*
 * Copyright (c) 2017 Shawn Nock <shawn@monadnock.ca>
 * Copyright (c) 2017 Linaro Limited
 * Copyright (c) 2018 Aapo Vienamo
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <nordic/nrf52832_qfaa.dtsi>
#include "thingy52_nrf52832-pinctrl.dtsi"

/ {
	model = "Nordic Thingy52 NRF52832";
	compatible = "nordic,thingy52-nrf52832";

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

	/* These aliases are provided for compatibility with samples */
	aliases {
		led0 = &led0;
		led1 = &led1;
		led2 = &led2;
		sw0 = &button0;
	};

	leds {
		compatible = "gpio-leds";
		/* Lightwell RGB */
		led0: led_0 {
			gpios = <&sx1509b 7 GPIO_ACTIVE_LOW>;
			label = "Red LED";
			//vin-supply = <&vdd_pwr>;
		};
		led1: led_1 {
			gpios = <&sx1509b 5 GPIO_ACTIVE_LOW>;
			label = "Green LED";
			//vin-supply = <&vdd_pwr>;
		};
		led2: led_2 {
			gpios = <&sx1509b 6 GPIO_ACTIVE_LOW>;
			label = "Blue LED";
			//vin-supply = <&vdd_pwr>;
		};
	};

	buttons {
		compatible = "gpio-keys";
		button0: button_0 {
			/* gpio flags need validation */
			gpios = <&gpio0 11 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			label = "Button";
		};
	};

	vbatt {
		compatible = "voltage-divider";
		io-channels = <&adc 4>;
		output-ohms = <180000>;
		full-ohms = <(1500000 + 180000)>;
		power-gpios = <&sx1509b 4 0>;
	};

	vdd_pwr: vdd-pwr-ctrl {
		compatible = "regulator-fixed-sync", "regulator-fixed";
		label = "vdd-pwr-ctrl";
		regulator-name = "vdd-pwr-ctrl";
		enable-gpios = <&gpio0 30 GPIO_ACTIVE_HIGH>;
		regulator-boot-on;
	};

	spk_pwr: spk-pwr-ctrl {
		compatible = "regulator-fixed-sync", "regulator-fixed";
		label = "spk-pwr-ctrl";
		regulator-name = "spk-pwr-ctrl";
		enable-gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
	};

	mpu_pwr: mpu-pwr-ctrl {
		compatible = "regulator-fixed";
		label = "mpu-pwr-ctrl";
		regulator-name = "mpu-pwr-ctrl";
		enable-gpios = <&sx1509b 8 GPIO_ACTIVE_HIGH>;
	};

	mic_pwr: mic-pwr-ctrl {
		compatible = "regulator-fixed";
		label = "mic-pwr-ctrl";
		regulator-name = "mic-pwr-ctrl";
		enable-gpios = <&sx1509b 9 GPIO_ACTIVE_HIGH>;
	};

	ccs_pwr: ccs-pwr-ctrl {
		compatible = "regulator-fixed";
		label = "ccs-pwr-ctrl";
		regulator-name = "ccs-pwr-ctrl";
		enable-gpios = <&sx1509b 10 GPIO_ACTIVE_HIGH>;
	};
};

&adc {
	status = "okay";
};

&gpiote {
	status = "okay";
};

&gpio0 {
	status = "okay";
};

&uart0 {
	compatible = "nordic,nrf-uarte";
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart0_default>;
	pinctrl-1 = <&uart0_sleep>;
	pinctrl-names = "default", "sleep";
};

&i2c0 {
	compatible = "nordic,nrf-twim";
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;

	pinctrl-0 = <&i2c0_default>;
	pinctrl-1 = <&i2c0_sleep>;
	pinctrl-names = "default", "sleep";
	sx1509b: sx1509b@3e {
		compatible = "semtech,sx1509b";
		reg = <0x3e>;
		label = "GPIO_P0";
		vin-supply = <&vdd_pwr>;
		gpio-controller;
		#gpio-cells = <2>;
		ngpios = <16>;
		/* Active-low LEDs init high, all else init low */
		init-out-high = <0xe0e0>;
		init-out-low = <0x1f1f>;
	};

	lps22hb_press: lps22hb_press@5c {
		compatible = "st,lps22hb-press";
		reg = <0x5c>;
		label = "LPS22HB";
		vin-supply = <&vdd_pwr>;
	};

	hts221: hts221@5f {
		compatible = "st,hts221";
		reg = <0x5f>;
		label = "HTS221";
		vin-supply = <&vdd_pwr>;
		drdy-gpios = <&gpio0 24 GPIO_ACTIVE_HIGH>;
	};

	ccs811: ccs811@5a {
		compatible = "ams,ccs811";
		reg = <0x5a>;
		label = "CCS811";
		vin-supply = <&ccs_pwr>;
		irq-gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
		reset-gpios = <&sx1509b 11 GPIO_ACTIVE_LOW>;
		wake-gpios = <&sx1509b 12 GPIO_ACTIVE_LOW>;
	};
};

&i2c1 {
	compatible = "nordic,nrf-twim";
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;

	pinctrl-0 = <&i2c1_default>;
	pinctrl-1 = <&i2c1_sleep>;
	pinctrl-names = "default", "sleep";
	lis2dh12: lis2dh12@19 {
		compatible = "st,lis2dh12", "st,lis2dh";
		reg = <0x19>;
		irq-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
		label = "LIS2DH12-ACCEL";
	};
};

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

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0xc000>;
		};
		slot0_partition: partition@c000 {
			label = "image-0";
			reg = <0x0000C000 0x32000>;
		};
		slot1_partition: partition@3e000 {
			label = "image-1";
			reg = <0x0003E000 0x32000>;
		};
		scratch_partition: partition@70000 {
			label = "image-scratch";
			reg = <0x00070000 0xa000>;
		};

		/*
		 * The flash starting at 0x0007a000 and ending at
		 * 0x0007ffff (sectors 122-127) is reserved for use
		 * by the application.
		 * Storage partition will be used by FCB/LittleFS/NVS
		 * if enabled.
		 */
		storage_partition: partition@7a000 {
			label = "storage";
			reg = <0x0007a000 0x00006000>;
		};
	};
};
