/*
 * Copyright (c) 2019 Yannis Damigos
 *
 * SPDX-License-Identifier: Apache-2.0
 */
/dts-v1/;

#include <espressif/esp32/esp32_wrover_e_n16r4.dtsi>
#include "odroid_go-pinctrl.dtsi"
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	model = "ODROID-GO Game Kit PROCPU";
	compatible = "hardkernel,odroid_go", "espressif,esp32";

	chosen {
		zephyr,sram = &sram0;
		zephyr,console = &uart0;
		zephyr,shell-uart = &uart0;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
		zephyr,display = &ili9341;
		zephyr,bt-hci = &esp32_bt_hci;
	};

	leds {
		compatible = "gpio-leds";
		blue_led: led {
			gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
			label = "Status Led";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		menu_button: menu_button {
			label = "Menu";
			gpios = <&gpio0 13 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			zephyr,code = <INPUT_KEY_MENU>;
		};
		volume_button: volume_button {
			label = "Volume";
			gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
			zephyr,code = <INPUT_KEY_0>;
		};
		select_button: select_button {
			label = "Select";
			gpios = <&gpio0 27 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			zephyr,code = <INPUT_BTN_SELECT>;
		};
		a_button: a_button {
			label = "A";
			gpios = <&gpio1 0 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			zephyr,code = <INPUT_KEY_A>;
		};
		b_button: b_button {
			label = "B";
			gpios = <&gpio1 1 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
			zephyr,code = <INPUT_KEY_B>;
		};
		start_button: start_button {
			label = "Start";
			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
			zephyr,code = <INPUT_BTN_START>;
		};
	};

	lcd_backlight_en {
		compatible = "regulator-fixed";
		regulator-name = "lcd_backlight_enable";
		enable-gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
		regulator-boot-on;
	};

	aliases {
		uart-0 = &uart0;
		led0 = &blue_led;
		sw0 = &menu_button;
		watchdog0 = &wdt0;
		sdhc0 = &sd0;
	};

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

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

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

&gpio0 {
	status = "okay";

	blue-led-disable {
		gpio-hog;
		gpios = <2 GPIO_ACTIVE_HIGH>;
		output-low;
	};
};

&gpio1 {
	status = "okay";
};

&i2c0 {
	status = "okay";
	clock-frequency = <I2C_BITRATE_FAST>;
	sda-gpios = <&gpio0 4 GPIO_OPEN_DRAIN>;
	scl-gpios = <&gpio0 15 GPIO_OPEN_DRAIN>;
	pinctrl-0 = <&i2c0_default>;
	pinctrl-names = "default";
};

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

	sd0: sd@1 {
		compatible = "zephyr,sdhc-spi-slot";
		reg = <1>;
		status = "okay";
		mmc {
			compatible = "zephyr,sdmmc-disk";
			status = "okay";
		};
		spi-max-frequency = <20000000>;
	};
};

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

&esp32_bt_hci {
	status = "okay";
};
