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

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