/*
 * 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>

/ {
	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;
		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>;
	tx-pin = <3>;
	rx-pin = <2>;
};

&i2c0 {
	compatible = "nordic,nrf-twim";
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
	sda-pin = <7>;
	scl-pin = <8>;

	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>;
	sda-pin = <14>;
	scl-pin = <15>;

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