/*
 * Copyright (c) 2017 MediaTek Inc.
 * Author: YT Shen <yt.shen@mediatek.com>
 *
 * SPDX-License-Identifier: (GPL-2.0 OR MIT)
 */

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

/ {
	model = "MediaTek MT2712 evaluation board";
	chassis-type = "embedded";
	compatible = "mediatek,mt2712-evb", "mediatek,mt2712";

	aliases {
		serial0 = &uart0;
	};

	memory@40000000 {
		device_type = "memory";
		reg = <0 0x40000000 0 0x80000000>;
	};

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

	cpus_fixed_vproc0: regulator-vproc-buck0 {
		compatible = "regulator-fixed";
		regulator-name = "vproc_buck0";
		regulator-min-microvolt = <1000000>;
		regulator-max-microvolt = <1000000>;
	};

	cpus_fixed_vproc1: regulator-vproc-buck1 {
		compatible = "regulator-fixed";
		regulator-name = "vproc_buck1";
		regulator-min-microvolt = <1000000>;
		regulator-max-microvolt = <1000000>;
	};

	extcon_usb: extcon_iddig {
		compatible = "linux,extcon-usb-gpio";
		id-gpio = <&pio 12 GPIO_ACTIVE_HIGH>;
	};

	extcon_usb1: extcon_iddig1 {
		compatible = "linux,extcon-usb-gpio";
		id-gpio = <&pio 14 GPIO_ACTIVE_HIGH>;
	};

	usb_p0_vbus: regulator-usb-p0-vbus {
		compatible = "regulator-fixed";
		regulator-name = "p0_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&pio 13 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	usb_p1_vbus: regulator-usb-p1-vbus {
		compatible = "regulator-fixed";
		regulator-name = "p1_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&pio 15 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	usb_p2_vbus: regulator-usb-p2-vbus {
		compatible = "regulator-fixed";
		regulator-name = "p2_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&pio 16 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	usb_p3_vbus: regulator-usb-p3-vbus {
		compatible = "regulator-fixed";
		regulator-name = "p3_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&pio 17 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};

};

&auxadc {
	status = "okay";
};

&cpu0 {
	proc-supply = <&cpus_fixed_vproc0>;
};

&cpu1 {
	proc-supply = <&cpus_fixed_vproc0>;
};

&cpu2 {
	proc-supply = <&cpus_fixed_vproc1>;
};

&eth {
	phy-mode = "rgmii-rxid";
	phy-handle = <&ethernet_phy0>;
	mediatek,tx-delay-ps = <1530>;
	snps,reset-gpio = <&pio 87 GPIO_ACTIVE_LOW>;
	snps,reset-delays-us = <0 10000 10000>;
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&eth_default>;
	pinctrl-1 = <&eth_sleep>;
	status = "okay";

	mdio {
		compatible = "snps,dwmac-mdio";
		#address-cells = <1>;
		#size-cells = <0>;
		ethernet_phy0: ethernet-phy@5 {
			compatible = "ethernet-phy-id0243.0d90";
			reg = <0x5>;
		};
	};
};

&pio {
	eth_default: eth_default {
		tx_pins {
			pinmux = <MT2712_PIN_71_GBE_TXD3__FUNC_GBE_TXD3>,
				 <MT2712_PIN_72_GBE_TXD2__FUNC_GBE_TXD2>,
				 <MT2712_PIN_73_GBE_TXD1__FUNC_GBE_TXD1>,
				 <MT2712_PIN_74_GBE_TXD0__FUNC_GBE_TXD0>,
				 <MT2712_PIN_75_GBE_TXC__FUNC_GBE_TXC>,
				 <MT2712_PIN_76_GBE_TXEN__FUNC_GBE_TXEN>;
			drive-strength = <MTK_DRIVE_8mA>;
		};
		rx_pins {
			pinmux = <MT2712_PIN_78_GBE_RXD3__FUNC_GBE_RXD3>,
				 <MT2712_PIN_79_GBE_RXD2__FUNC_GBE_RXD2>,
				 <MT2712_PIN_80_GBE_RXD1__FUNC_GBE_RXD1>,
				 <MT2712_PIN_81_GBE_RXD0__FUNC_GBE_RXD0>,
				 <MT2712_PIN_82_GBE_RXDV__FUNC_GBE_RXDV>,
				 <MT2712_PIN_84_GBE_RXC__FUNC_GBE_RXC>;
			input-enable;
		};
		mdio_pins {
			pinmux = <MT2712_PIN_85_GBE_MDC__FUNC_GBE_MDC>,
				 <MT2712_PIN_86_GBE_MDIO__FUNC_GBE_MDIO>;
			drive-strength = <MTK_DRIVE_8mA>;
			input-enable;
		};
	};

	eth_sleep: eth_sleep {
		tx_pins {
			pinmux = <MT2712_PIN_71_GBE_TXD3__FUNC_GPIO71>,
				 <MT2712_PIN_72_GBE_TXD2__FUNC_GPIO72>,
				 <MT2712_PIN_73_GBE_TXD1__FUNC_GPIO73>,
				 <MT2712_PIN_74_GBE_TXD0__FUNC_GPIO74>,
				 <MT2712_PIN_75_GBE_TXC__FUNC_GPIO75>,
				 <MT2712_PIN_76_GBE_TXEN__FUNC_GPIO76>;
		};
		rx_pins {
			pinmux = <MT2712_PIN_78_GBE_RXD3__FUNC_GPIO78>,
				 <MT2712_PIN_79_GBE_RXD2__FUNC_GPIO79>,
				 <MT2712_PIN_80_GBE_RXD1__FUNC_GPIO80>,
				 <MT2712_PIN_81_GBE_RXD0__FUNC_GPIO81>,
				 <MT2712_PIN_82_GBE_RXDV__FUNC_GPIO82>,
				 <MT2712_PIN_84_GBE_RXC__FUNC_GPIO84>;
			input-disable;
		};
		mdio_pins {
			pinmux = <MT2712_PIN_85_GBE_MDC__FUNC_GPIO85>,
				 <MT2712_PIN_86_GBE_MDIO__FUNC_GPIO86>;
			input-disable;
			bias-disable;
		};
	};

	usb0_id_pins_float: usb0_iddig {
		pins_iddig {
			pinmux = <MT2712_PIN_12_IDDIG_P0__FUNC_IDDIG_A>;
			bias-pull-up;
		};
	};

	usb1_id_pins_float: usb1_iddig {
		pins_iddig {
			pinmux = <MT2712_PIN_14_IDDIG_P1__FUNC_IDDIG_B>;
			bias-pull-up;
		};
	};
};

&ssusb {
	vbus-supply = <&usb_p0_vbus>;
	extcon = <&extcon_usb>;
	dr_mode = "otg";
	wakeup-source;
	mediatek,u3p-dis-msk = <0x1>;
	//enable-manual-drd;
	//maximum-speed = "full-speed";
	pinctrl-names = "default";
	pinctrl-0 = <&usb0_id_pins_float>;
	status = "okay";
};

&ssusb1 {
	vbus-supply = <&usb_p1_vbus>;
	extcon = <&extcon_usb1>;
	dr_mode = "otg";
	//mediatek,u3p-dis-msk = <0x1>;
	enable-manual-drd;
	wakeup-source;
	//maximum-speed = "full-speed";
	pinctrl-names = "default";
	pinctrl-0 = <&usb1_id_pins_float>;
	status = "okay";
};

&uart0 {
	status = "okay";
};

&usb_host0 {
	vbus-supply = <&usb_p2_vbus>;
	status = "okay";
};

&usb_host1 {
	status = "okay";
};