/*
 * Copyright (c) 2017 MediaTek Inc.
 * Author: John Crispin <john@phrozen.org>
 *	   Sean Wang <sean.wang@mediatek.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

/dts-v1/;
#include "mt7623.dtsi"
#include "mt6323.dtsi"

/ {
	aliases {
		serial0 = &uart0;
		serial1 = &uart1;
		serial2 = &uart2;
	};

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

	cpus {
		cpu0 {
			proc-supply = <&mt6323_vproc_reg>;
		};

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

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

		cpu3 {
			proc-supply = <&mt6323_vproc_reg>;
		};
	};

	memory@80000000 {
		reg = <0 0x80000000 0 0x40000000>;
	};

	usb_p1_vbus: regulator@0 {
		compatible = "regulator-fixed";
		regulator-name = "usb_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&pio 135 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};
};

&mmc0 {
	vmmc-supply = <&mt6323_vemc3v3_reg>;
	vqmmc-supply = <&mt6323_vio18_reg>;
};

&mmc1 {
	vmmc-supply = <&mt6323_vmch_reg>;
	vqmmc-supply = <&mt6323_vmc_reg>;
};

&uart0 {
	status = "okay";
};

&uart1 {
	status = "okay";
};

&uart2 {
	status = "okay";
};

&usb1 {
	vbus-supply = <&usb_p1_vbus>;
	status = "okay";
};

&u3phy1 {
	status = "okay";
};
