// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Copyright (C) 2019 MediaTek Inc.
 * Author: Mingming Lee <mingming.lee@mediatek.com>
 *
 */

/dts-v1/;

#include <config.h>
#include "mt8512.dtsi"

/ {
	#address-cells = <1>;
	#size-cells = <1>;

	model = "MT8512 BM1 EMMC";

	chosen {
		stdout-path = &uart0;
		tick-timer = &timer0;
	};

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

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

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

	usb_p0_vbus: regulator@0 {
		compatible = "regulator-fixed";
		regulator-name = "p0_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio 27 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	usb_p1_vbus: regulator@1 {
		compatible = "regulator-fixed";
		regulator-name = "p1_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio 32 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};
};

&mmc0 {
	pinctrl-names = "default";
	pinctrl-0 = <&mmc0_pins_default>;
	bus-width = <8>;
	max-frequency = <200000000>;
	cap-mmc-highspeed;
	mmc-hs200-1_8v;
	cap-mmc-hw-reset;
	vmmc-supply = <&reg_3p3v>;
	vqmmc-supply = <&reg_1p8v>;
	non-removable;
	status = "okay";
};

&pinctrl {
	mmc0_pins_default: mmc0default {
		mux {
			function = "msdc";
			groups =  "msdc0";
		};

		conf-cmd-data {
			pins = "MSDC0_CMD", "MSDC0_DAT0", "MSDC0_DAT1",
			       "MSDC0_DAT2", "MSDC0_DAT3", "MSDC0_DAT4",
			       "MSDC0_DAT5", "MSDC0_DAT6", "MSDC0_DAT7";
			input-enable;
			drive-strength = <6>;
			bias-pull-up;
		};

		conf-clk {
			pins = "MSDC0_CLK";
			drive-strength = <6>;
			bias-pull-down;
		};

		conf-rst {
			pins = "MSDC0_RSTB";
			bias-pull-up;
		};
	};

		uart0_pins: uart0 {
			mux {
				function = "uart";
				groups = "uart0_0_rxd_txd";
			};
		};
};

&ssusb {
	dr_mode = "peripheral";
	maximum-speed = "high-speed";
	status = "okay";
};

&usb3 {
	vbus-supply = <&usb_p0_vbus>;
	status = "okay";
};

&u3phy {
	status = "okay";
};

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

&watchdog0 {
	status = "okay";
};
