/*
 * Copyright (c) 2022 AVSystem Sławomir Wolf Sp.j. (AVSystem)
 *
 * SPDX-License-Identifier: Apache-2.0
 */
/dts-v1/;

#include <espressif/esp32/esp32_pico_d4.dtsi>
#include "m5stickc_plus-pinctrl.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	model = "M5StickC Plus";
	compatible = "m5stack,m5stickc-plus";

	aliases {
		led0 = &red_led;
		sw0 = &user_button_0;
		sw1 = &user_button_1;
		uart-0 = &uart0;
		i2c-0 = &i2c0;
		watchdog0 = &wdt0;
	};

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

	leds {
		compatible = "gpio-leds";

		red_led: led_0 {
			gpios =  <&gpio0 10 GPIO_ACTIVE_HIGH>;
			label = "Red - LED0";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";

		user_button_0: button_0 {
			label = "User button 0";
			gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
			zephyr,code = <INPUT_KEY_0>;
		};
		user_button_1: button_1 {
			label = "User button 1";
			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
			zephyr,code = <INPUT_KEY_1>;
		};
	};
};

&cpu0 {
	clock-frequency = <ESP32_CLK_CPU_240M>;
};

&cpu1 {
	clock-frequency = <ESP32_CLK_CPU_240M>;
};

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

&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

/* IMU MPU-6886, RTC BM8563, PMU AXP192 */
&i2c0 {
	status = "okay";
	clock-frequency = <I2C_BITRATE_STANDARD>;
	sda-gpios = <&gpio0 21 GPIO_OPEN_DRAIN>;
	scl-gpios = <&gpio0 22 GPIO_OPEN_DRAIN>;
	pinctrl-0 = <&i2c0_sda_gpio21 &i2c0_scl_gpio22>;
	pinctrl-names = "default";
};

&spi2 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";
	pinctrl-0 = <&spim2_miso_gpio12 &spim2_mosi_gpio11
				&spim2_sclk_gpio14 &spim2_csel_gpio16>;
	pinctrl-names = "default";
};

/* LCD TFT 1.14", 135x240 px, ST7789v2 */
&spi3 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";
	pinctrl-0 = <&spim3_miso_gpio25 &spim3_mosi_gpio15
				&spim3_sclk_gpio13 &spim3_csel_gpio5>;
	pinctrl-names = "default";
};

&timer0 {
	status = "okay";
};

&timer1 {
	status = "okay";
};

&timer2 {
	status = "okay";
};

&timer3 {
	status = "okay";
};

&trng0 {
	status = "okay";
};

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

		/* Reserve 60kB for the bootloader */
		boot_partition: partition@1000 {
			label = "mcuboot";
			reg = <0x00001000 0x0000F000>;
			read-only;
		};

		/* Reserve 1024kB for the application in slot 0 */
		slot0_partition: partition@10000 {
			label = "image-0";
			reg = <0x00010000 0x00100000>;
		};

		/* Reserve 1024kB for the application in slot 1 */
		slot1_partition: partition@110000 {
			label = "image-1";
			reg = <0x00110000 0x00100000>;
		};

		/* Reserve 256kB for the scratch partition */
		scratch_partition: partition@210000 {
			label = "image-scratch";
			reg = <0x00210000 0x00040000>;
		};

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