/*
 * 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 = "Espressif ESP32-Wrover-Kit PROCPU";
	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>;
		};
	};
};
