/*
 * Copyright (c) 2021 Espressif Systems (Shanghai) Co., Ltd.
 *
 * SPDX-License-Identifier: Apache-2.0
 */
/dts-v1/;

#include <espressif/esp32/esp32_wrover_e_n4r8.dtsi>
#include "esp_wrover_kit-pinctrl.dtsi"

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

	aliases {
		led0 = &blue_led;
		led1 = &green_led;
		led2 = &red_led;
		pwm-led0 = &pwm_led_red;
		pwm-led1 = &pwm_led_green;
		pwm-led2 = &pwm_led_blue;
		red-pwm-led = &pwm_led_red;
		green-pwm-led = &pwm_led_green;
		blue-pwm-led = &pwm_led_blue;
		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;
		zephyr,display = &ili9341;
	};

	leds {
		compatible = "gpio-leds";

		blue_led: led_0 {
			gpios =  <&gpio0 4 GPIO_ACTIVE_HIGH>;
			label = "Blue - LED0";
		};

		green_led: led_1 {
			gpios =  <&gpio0 2 GPIO_ACTIVE_HIGH>;
			label = "Green - LED1";
		};

		red_led: led_2 {
			gpios =  <&gpio0 0 GPIO_ACTIVE_HIGH>;
			label = "Red - LED2";
		};
	};

	pwmleds {
		compatible = "pwm-leds";
		pwm_led_red: pwm_led_0 {
			label = "Red PWM LED";
			pwms = <&ledc0 0 PWM_HZ(100) PWM_POLARITY_NORMAL>;
		};
		pwm_led_green: pwm_led_1 {
			label = "Green PWM LED";
			pwms = <&ledc0 1 PWM_HZ(100) PWM_POLARITY_NORMAL>;
		};
		pwm_led_blue: pwm_led_2 {
			label = "Blue PWM LED";
			pwms = <&ledc0 2 PWM_HZ(100) PWM_POLARITY_NORMAL>;
		};
	};

	mipi_dbi {
		compatible = "zephyr,mipi-dbi-spi";
		dc-gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
		reset-gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
		spi-dev = <&spi3>;
		write-only;
		#address-cells = <1>;
		#size-cells = <0>;

		ili9341: ili9341@0 {
			compatible = "ilitek,ili9341";
			mipi-max-frequency = <25000000>;
			reg = <0>;
			pixel-format = <0>;
			rotation = <0>;
			width = <240>;
			height = <320>;
		};
	};
};

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

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

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

&gpio0 {
	status = "okay";

	/* FIXME: should be part of the display node */
	lcd-backlight {
		gpio-hog;
		gpios = <5 GPIO_ACTIVE_HIGH>;
		output-low;
	};
};

&gpio1 {
	status = "okay";
};

&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_default>;
	pinctrl-names = "default";
};

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

&spi3 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";
	pinctrl-0 = <&spim3_default>;
	pinctrl-names = "default";
};

&ledc0 {
	pinctrl-0 = <&ledc0_default>;
	pinctrl-names = "default";
	status = "okay";
	#address-cells = <1>;
	#size-cells = <0>;
	channel0@0 {
		reg = <0x0>;
		timer = <0>;
	};
	channel1@1 {
		reg = <0x1>;
		timer = <1>;
	};
	channel2@2 {
		reg = <0x2>;
		timer = <2>;
	};
};

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