/*
 * Copyright (c) 2023 Benjamin Cabé <benjamin@zephyrproject.org>
 * Copyright (c) 2023 Martin Kiepfer <mrmarteng@teleschirm.org>
 *
 * SPDX-License-Identifier: Apache-2.0
 */
/dts-v1/;

#include <espressif/esp32s3/esp32s3_fn8.dtsi>
#include "m5stack_atoms3_lite-pinctrl.dtsi"
#include <dt-bindings/led/led.h>
#include <dt-bindings/led/worldsemi_ws2812c.h>
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	model = "M5Stack AtomS3 Lite PROCPU";
	compatible = "m5stack,atoms3_lite";

	chosen {
		zephyr,sram = &sram0;
		zephyr,console = &usb_serial;
		zephyr,shell-uart = &usb_serial;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
		zephyr,bt-hci = &esp32_bt_hci;
	};

	aliases {
		sw0 = &user_button_0;
		watchdog0 = &wdt0;
		i2c-0 = &i2c0;
		led-strip = &status_rgb_led;
	};

	buttons {
		compatible = "gpio-keys";
		debounce-interval-ms = <100>;
		user_button_0: button_0 {
			label = "User button 0";
			gpios = <&gpio1 9 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			zephyr,code = <INPUT_KEY_0>;
		};
	};
};

&usb_serial {
	status = "okay";
};
&uart0 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart0_default>;
	pinctrl-names = "default";
};

&i2c0 {
	status = "okay";
	clock-frequency = <I2C_BITRATE_STANDARD>;
	pinctrl-0 = <&i2c0_default>;
	pinctrl-names = "default";
};

&i2c1 {
	status = "okay";
	clock-frequency = <I2C_BITRATE_STANDARD>;
	pinctrl-0 = <&i2c1_default>;
	pinctrl-names = "default";
};

&trng0 {
	status = "okay";
};

&spi3 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";
	line-idle-low;
	pinctrl-0 = <&spim3_ws2812_led>;
	pinctrl-names = "default";

	status_rgb_led: ws2812@0 {
		compatible = "worldsemi,ws2812-spi";
		reg = <0>;
		spi-max-frequency = <WS2812C_SPI_FREQ>;

		chain-length = <1>;
		color-mapping =	<LED_COLOR_ID_GREEN>,
			<LED_COLOR_ID_RED>,
			<LED_COLOR_ID_BLUE>;
		spi-one-frame = <WS2812C_ONE_FRAME>;
		spi-zero-frame = <WS2812C_ZERO_FRAME>;
	};
};
&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

&wdt0 {
	status = "okay";
};

&timer0 {
	status = "okay";
};

&timer1 {
	status = "okay";
};

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

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0x0000F000>;
			read-only;
		};

		slot0_partition: partition@10000 {
			label = "image-0";
			reg = <0x00010000 0x00100000>;
		};

		slot1_partition: partition@110000 {
			label = "image-1";
			reg = <0x00110000 0x00100000>;
		};

		scratch_partition: partition@210000 {
			label = "image-scratch";
			reg = <0x00210000 0x00040000>;
		};

		storage_partition: partition@250000 {
			label = "storage";
			reg = <0x00250000 0x00006000>;
		};
	};
};

&esp32_bt_hci {
	status = "okay";
};
