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

#include <espressif/esp32/esp32_d0wd_v3.dtsi>
#include "m5stack_core2-pinctrl.dtsi"
#include "grove_connectors.dtsi"
#include <zephyr/dt-bindings/display/ili9xxx.h>
#include <zephyr/dt-bindings/regulator/axp192.h>

/ {
	model = "esp32";
	compatible = "espressif,esp32";

	aliases {
		pwr-led = &pwr_led;
		uart-0 = &uart0;
		i2c-0 = &i2c0;
		watchdog0 = &wdt0;
		rtc = &pfc8563_rtc;
		led0 = &led_pwr;
	};

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

	leds {
		compatible = "gpio-leds";
		led_pwr: led_pwr {
			gpios = <&axp192_gpio 1 (GPIO_OPEN_DRAIN | GPIO_ACTIVE_LOW)>;
			label = "Power LED";
		};
	};

	lvgl_pointer {
		compatible = "zephyr,lvgl-pointer-input";
		input = <&ft5336_touch>;
	};
};

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

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

&psram0 {
	reg = <0x3f800000 DT_SIZE_M(8)>;
	status = "disabled";
};

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

&uart1 {
	status = "disabled";
	current-speed = <115200>;
	pinctrl-0 = <&uart1_rx_gpio33 &uart1_tx_gpio32>;
	pinctrl-names = "default";
};

&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

&i2c0 {
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
	sda-gpios = <&gpio0 21 GPIO_OPEN_DRAIN>;
	scl-gpios = <&gpio0 22 GPIO_OPEN_DRAIN>;
	pinctrl-0 = <&i2c0_default>;
	scl-timeout-us = <0>;
	pinctrl-names = "default";

	pfc8563_rtc: pfc8563@51 {
		compatible = "nxp,pcf8563";
		reg = <0x51>;
		status = "okay";
	};

	axp192_pmic: axp192@34 {
		compatible = "x-powers,axp192";
		reg = <0x34>;
		status = "okay";

		axp192_regulator: axp192_regulator {
			compatible = "x-powers,axp192-regulator";
			status = "okay";

			vdd_mcu: DCDC1 {
				regulator-init-microvolt = <3350000>;
				regulator-min-microvolt = <3200000>;
				regulator-max-microvolt = <3400000>;
				regulator-initial-mode = <AXP192_DCDC_MODE_AUTO>;
				regulator-boot-on;
				regulator-always-on;
			};

			lcd_bg: DCDC3 {
				regulator-init-microvolt = <2800000>;
				regulator-min-microvolt = <2500000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
			};

			v_peri: LDO2 {
				regulator-init-microvolt = <3300000>;
				regulator-min-microvolt = <3200000>;
				regulator-max-microvolt = <3300000>;
				regulator-boot-on;
			};

			vib_motor: LDO3 {
				regulator-init-microvolt = <2800000>;
			};
		};

		axp192_gpio: axp192_gpio {
			compatible = "x-powers,axp192-gpio";
			gpio-controller;
			#gpio-cells = <2>;
			ngpios = <5>;
			status = "okay";

			pwr_led: axp192_gpio1 {
				gpio-hog;
				gpios = <1 (GPIO_OPEN_DRAIN | GPIO_ACTIVE_LOW)>;
				output-high;
				line-name = "pwr-led";
			};

			bus_pwr_en: axp192_gpio0 {
				gpio-hog;
				gpios = <0 0>;
				input;
			};
		};
	};

	ft5336_touch: ft5336@38 {
		compatible = "focaltech,ft5336";
		reg = <0x38>;
		int-gpios = <&gpio1 7 0>;
	};
};

&i2c1 {
	status = "disabled";
	clock-frequency = <I2C_BITRATE_STANDARD>;
	sda-gpios = <&gpio0 32 GPIO_OPEN_DRAIN>;
	scl-gpios = <&gpio0 33 GPIO_OPEN_DRAIN>;
	pinctrl-0 = <&i2c1_default>;
	pinctrl-names = "default";
};

&spi3 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";
	pinctrl-0 = <&spim3_default>;
	pinctrl-names = "default";
	dma-enabled;
	clock-frequency = <20000000>;
	cs-gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;

	ili9342c: ili9342c@0 {
		compatible = "ilitek,ili9342c";
		spi-max-frequency = <30000000>;
		reg = <0>;
		cmd-data-gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
		vin-supply = <&lcd_bg>;
		reset-gpios = <&axp192_gpio 4 (GPIO_OPEN_DRAIN | GPIO_ACTIVE_LOW)>;
		pixel-format = <ILI9XXX_PIXEL_FORMAT_RGB565>;
		display-inversion;
		width = <320>;
		height = <240>;
		rotation = <0>;
	};
};


&timer0 {
	status = "okay";
};

&timer1 {
	status = "okay";
};

&timer2 {
	status = "okay";
};

&timer3 {
	status = "okay";
};

&trng0 {
	status = "okay";
};

&flash0 {
	status = "okay";
	reg = <0 DT_SIZE_M(16)>;

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

		/* 14MB storage */
		storage_partition: partition@250000 {
			label = "storage";
			reg = <0x00250000 0x00db0000>;
		};
	};
};
