// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
// Copyright (c) 2017 Icenowy Zheng <icenowy@aosc.xyz>
// Based on sun50i-a64-pine64.dts, which is:
//   Copyright (c) 2016 ARM Ltd.

/dts-v1/;

#include "sun50i-a64-sopine.dtsi"

/ {
	model = "SoPine with baseboard";
	compatible = "pine64,sopine-baseboard", "pine64,sopine",
		     "allwinner,sun50i-a64";

	aliases {
		ethernet0 = &emac;
		serial0 = &uart0;
		serial1 = &uart1;
		serial2 = &uart2;
		serial3 = &uart3;
		serial4 = &uart4;
	};

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

	hdmi-connector {
		compatible = "hdmi-connector";
		type = "a";

		port {
			hdmi_con_in: endpoint {
				remote-endpoint = <&hdmi_out_con>;
			};
		};
	};

	reg_vcc1v8: vcc1v8 {
		compatible = "regulator-fixed";
		regulator-name = "vcc1v8";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};
};

&ac_power_supply {
	status = "okay";
};

&battery_power_supply {
	status = "okay";
};

&codec {
	status = "okay";
};

&codec_analog {
	status = "okay";
};

&dai {
	status = "okay";
};

&de {
	status = "okay";
};

&ehci0 {
	status = "okay";
};

&ehci1 {
	status = "okay";
};

&emac {
	pinctrl-names = "default";
	pinctrl-0 = <&rgmii_pins>;
	phy-mode = "rgmii";
	phy-handle = <&ext_rgmii_phy>;
	phy-supply = <&reg_dc1sw>;
	status = "okay";
};

&hdmi {
	hvcc-supply = <&reg_dldo1>;
	status = "okay";
};

&hdmi_out {
	hdmi_out_con: endpoint {
		remote-endpoint = <&hdmi_con_in>;
	};
};

&mdio {
	ext_rgmii_phy: ethernet-phy@1 {
		compatible = "ethernet-phy-ieee802.3-c22";
		reg = <1>;
	};
};

&mmc2 {
	pinctrl-names = "default";
	pinctrl-0 = <&mmc2_pins>;
	vmmc-supply = <&reg_dcdc1>;
	vqmmc-supply = <&reg_vcc1v8>;
	bus-width = <8>;
	non-removable;
	cap-mmc-hw-reset;
	status = "okay";
};

&ohci0 {
	status = "okay";
};

&ohci1 {
	status = "okay";
};

&reg_dc1sw {
	/*
	 * Ethernet PHY needs 30ms to properly power up and some more
	 * to initialize. 100ms should be plenty of time to finish
	 * whole process.
	 */
	regulator-enable-ramp-delay = <100000>;
	regulator-name = "vcc-phy";
};

&reg_dldo1 {
	regulator-min-microvolt = <3300000>;
	regulator-max-microvolt = <3300000>;
	regulator-name = "vcc-hdmi";
};

&reg_dldo2 {
	regulator-min-microvolt = <3300000>;
	regulator-max-microvolt = <3300000>;
	regulator-name = "vcc-mipi";
};

&reg_dldo4 {
	regulator-min-microvolt = <3300000>;
	regulator-max-microvolt = <3300000>;
	regulator-name = "vcc-wifi";
};

&simplefb_hdmi {
	vcc-hdmi-supply = <&reg_dldo1>;
};

&sound {
	simple-audio-card,aux-devs = <&codec_analog>;
	simple-audio-card,widgets = "Microphone", "Microphone Jack",
				    "Headphone", "Headphone Jack";
	simple-audio-card,routing =
			"Left DAC", "DACL",
			"Right DAC", "DACR",
			"Headphone Jack", "HP",
			"ADCL", "Left ADC",
			"ADCR", "Right ADC",
			"MIC2", "Microphone Jack";
	status = "okay";
};

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

/* On Pi-2 connector */
&uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart2_pins>;
	status = "disabled";
};

/* On Euler connector */
&uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart3_pins>;
	status = "disabled";
};

/* On Euler connector, RTS/CTS optional */
&uart4 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart4_pins>;
	status = "disabled";
};

&usb_otg {
	dr_mode = "host";
	status = "okay";
};

&usbphy {
	status = "okay";
};
