// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
 * Device Tree Source for the RZ/V2M (r9a09g011) Evaluation Kit Board
 *
 * Copyright (C) 2022 Renesas Electronics Corp.
 */

/dts-v1/;
#include "r9a09g011.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/rzv2m-pinctrl.h>

/ {
	model = "RZ/V2M Evaluation Kit 2.0";
	compatible = "renesas,rzv2mevk2", "renesas,r9a09g011";

	aliases {
		serial0 = &uart0;
		ethernet0 = &avb;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	connector {
		compatible = "usb-c-connector";
		label = "USB-C";
		data-role = "dual";

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;
				hs_ep: endpoint {
					remote-endpoint = <&usb3_hs_ep>;
				};
			};

			port@1 {
				reg = <1>;
				ss_ep: endpoint {
					remote-endpoint = <&hd3ss3220_in_ep>;
				};
			};
		};
	};

	memory@58000000 {
		device_type = "memory";
		/*
		 * first 1.25GiB is reserved for ISP Firmware,
		 * next 128MiB is reserved for secure area.
		 */
		reg = <0x0 0x58000000 0x0 0x28000000>;
	};

	memory@180000000 {
		device_type = "memory";
		reg = <0x1 0x80000000 0x0 0x80000000>;
	};

	reg_1v8: regulator-1v8 {
		compatible = "regulator-fixed";
		regulator-name = "fixed-1.8V";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-boot-on;
		regulator-always-on;
	};

	reg_3v3: regulator-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "fixed-3.3V";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-boot-on;
		regulator-always-on;
	};

	vccq_sdhi0: regulator-vccq-sdhi0 {
		compatible = "regulator-gpio";

		regulator-name = "SDHI0 VccQ";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <3300000>;

		gpios = <&pwc 0 GPIO_ACTIVE_HIGH>;
		gpios-states = <1>;
		states = <3300000 0>, <1800000 1>;
	};
};

&avb {
	renesas,no-ether-link;
	phy-handle = <&phy0>;
	phy-mode = "gmii";
	status = "okay";

	phy0: ethernet-phy@0 {
		compatible = "ethernet-phy-id001c.c916",
			     "ethernet-phy-ieee802.3-c22";
		reg = <0>;
	};
};

&emmc {
	pinctrl-0 = <&emmc_pins>;
	pinctrl-1 = <&emmc_pins>;
	pinctrl-names = "default", "state_uhs";

	vmmc-supply = <&reg_3v3>;
	vqmmc-supply = <&reg_1v8>;
	bus-width = <8>;
	mmc-hs200-1_8v;
	no-sd;
	no-sdio;
	non-removable;
	fixed-emmc-driver-type = <1>;
	max-frequency = <200000000>;
	status = "okay";
};

&extal_clk {
	clock-frequency = <48000000>;
};

&i2c0 {
	pinctrl-0 = <&i2c0_pins>;
	pinctrl-names = "default";
	clock-frequency = <400000>;
	status = "okay";

	hd3ss3220@47 {
		compatible = "ti,hd3ss3220";
		reg = <0x47>;

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;
				hd3ss3220_in_ep: endpoint {
					remote-endpoint = <&ss_ep>;
				};
			};

			port@1 {
				reg = <1>;
				hd3ss3220_out_ep: endpoint {
					remote-endpoint = <&usb3_role_switch>;
				};
			};
		};
	};
};

&i2c2 {
	pinctrl-0 = <&i2c2_pins>;
	pinctrl-names = "default";
	clock-frequency = <100000>;
	status = "okay";
};

&pinctrl {
	emmc_pins: emmc {
		data {
			pinmux = <RZV2M_PORT_PINMUX(0, 0, 2)>, /* MMDAT0 */
				 <RZV2M_PORT_PINMUX(0, 1, 2)>, /* MMDAT1 */
				 <RZV2M_PORT_PINMUX(0, 2, 2)>, /* MMDAT2 */
				 <RZV2M_PORT_PINMUX(0, 3, 2)>, /* MMDAT3 */
				 <RZV2M_PORT_PINMUX(0, 4, 2)>, /* MMDAT4 */
				 <RZV2M_PORT_PINMUX(0, 5, 2)>, /* MMDAT5 */
				 <RZV2M_PORT_PINMUX(0, 6, 2)>, /* MMDAT6 */
				 <RZV2M_PORT_PINMUX(0, 7, 2)>; /* MMDAT7 */
			power-source = <1800>;
		};

		ctrl {
			pinmux = <RZV2M_PORT_PINMUX(0, 10, 2)>, /* MMCMD */
				 <RZV2M_PORT_PINMUX(0, 11, 2)>; /* MMCLK */
			power-source = <1800>;
		};
	};

	i2c0_pins: i2c0 {
		pinmux = <RZV2M_PORT_PINMUX(5, 0, 2)>, /* SDA */
			 <RZV2M_PORT_PINMUX(5, 1, 2)>; /* SCL */
	};

	i2c2_pins: i2c2 {
		pinmux = <RZV2M_PORT_PINMUX(3, 8, 2)>, /* SDA */
			 <RZV2M_PORT_PINMUX(3, 9, 2)>; /* SCL */
	};

	sdhi0_pins: sd0 {
		data {
			pinmux = <RZV2M_PORT_PINMUX(8, 2, 1)>, /* SD0DAT0 */
				 <RZV2M_PORT_PINMUX(8, 3, 1)>, /* SD0DAT1 */
				 <RZV2M_PORT_PINMUX(8, 4, 1)>, /* SD0DAT2 */
				 <RZV2M_PORT_PINMUX(8, 5, 1)>; /* SD0DAT3 */
			power-source = <3300>;
		};

		ctrl {
			pinmux = <RZV2M_PORT_PINMUX(8, 0, 1)>, /* SD0CMD */
				 <RZV2M_PORT_PINMUX(8, 1, 1)>; /* SD0CLK */
			power-source = <3300>;
		};

		cd {
			pinmux = <RZV2M_PORT_PINMUX(8, 7, 1)>; /* SD0CD */
			power-source = <3300>;
		};
	};

	sdhi0_pins_uhs: sd0-uhs {
		data {
			pinmux = <RZV2M_PORT_PINMUX(8, 2, 1)>, /* SD0DAT0 */
				 <RZV2M_PORT_PINMUX(8, 3, 1)>, /* SD0DAT1 */
				 <RZV2M_PORT_PINMUX(8, 4, 1)>, /* SD0DAT2 */
				 <RZV2M_PORT_PINMUX(8, 5, 1)>; /* SD0DAT3 */
			power-source = <1800>;
		};

		ctrl {
			pinmux = <RZV2M_PORT_PINMUX(8, 0, 1)>, /* SD0CMD */
				 <RZV2M_PORT_PINMUX(8, 1, 1)>; /* SD0CLK */
			power-source = <1800>;
		};

		cd {
			pinmux = <RZV2M_PORT_PINMUX(8, 7, 1)>; /* SD0CD */
			power-source = <1800>;
		};
	};

	uart0_pins: uart0 {
		pinmux = <RZV2M_PORT_PINMUX(3, 0, 2)>, /* UATX0 */
			 <RZV2M_PORT_PINMUX(3, 1, 2)>, /* UARX0 */
			 <RZV2M_PORT_PINMUX(3, 2, 2)>, /* UACTS0N */
			 <RZV2M_PORT_PINMUX(3, 3, 2)>; /* UARTS0N */
	};
};

&pwc {
	renesas,rzv2m-pwc-power;
	status = "okay";
};

&sdhi0 {
	pinctrl-0 = <&sdhi0_pins>;
	pinctrl-1 = <&sdhi0_pins_uhs>;
	pinctrl-names = "default", "state_uhs";

	vmmc-supply = <&reg_3v3>;
	vqmmc-supply = <&vccq_sdhi0>;
	bus-width = <4>;
	sd-uhs-sdr50;
	sd-uhs-sdr104;
	status = "okay";
};

&uart0 {
	pinctrl-0 = <&uart0_pins>;
	pinctrl-names = "default";

	uart-has-rtscts;
	status = "okay";
};

&usb3drd {
	status = "okay";
};

&usb3host {
	status = "okay";
};

&usb3peri {
	companion = <&usb3host>;
	status = "okay";
	usb-role-switch;

	ports {
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			reg = <0>;
			usb3_hs_ep: endpoint {
				remote-endpoint = <&hs_ep>;
			};
		};

		port@1 {
			reg = <1>;
			usb3_role_switch: endpoint {
				remote-endpoint = <&hd3ss3220_out_ep>;
			};
		};
	};
};

&wdt0 {
	status = "okay";
};
