/*
 * 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,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>;
		};
	};
};

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

	ili9341: ili9341@0 {
		compatible = "ilitek,ili9341";
		spi-max-frequency = <25000000>;
		reg = <0>;
		cmd-data-gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
		reset-gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
		pixel-format = <0>;
		rotation = <0>;
		width = <240>;
		height = <320>;
	};
};

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