// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (C) 2021 Arm Ltd.
 */

/dts-v1/;

#include "sun50i-h616.dtsi"
#include "sun50i-h616-cpu-opp.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>

/ {
	model = "X96 Mate";
	compatible = "hechuang,x96-mate", "allwinner,sun50i-h616";

	aliases {
		serial0 = &uart0;
	};

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

	reg_vcc5v: vcc5v {
		/* board wide 5V supply directly from the DC input */
		compatible = "regulator-fixed";
		regulator-name = "vcc-5v";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-always-on;
	};
};

&cpu0 {
	cpu-supply = <&reg_dcdca>;
};

&ehci0 {
	status = "okay";
};

&ehci2 {
	status = "okay";
};

&ir {
	status = "okay";
};

&mmc0 {
	vmmc-supply = <&reg_dcdce>;
	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;	/* PF6 */
	bus-width = <4>;
	status = "okay";
};

&mmc2 {
	vmmc-supply = <&reg_dcdce>;
	vqmmc-supply = <&reg_bldo1>;
	bus-width = <8>;
	non-removable;
	cap-mmc-hw-reset;
	mmc-ddr-1_8v;
	mmc-hs200-1_8v;
	status = "okay";
};

&ohci0 {
	status = "okay";
};

&ohci2 {
	status = "okay";
};

&r_rsb {
	status = "okay";

	axp305: pmic@745 {
		compatible = "x-powers,axp305", "x-powers,axp805",
			     "x-powers,axp806";
		interrupt-controller;
		#interrupt-cells = <1>;
		reg = <0x745>;

		x-powers,self-working-mode;
		vina-supply = <&reg_vcc5v>;
		vinb-supply = <&reg_vcc5v>;
		vinc-supply = <&reg_vcc5v>;
		vind-supply = <&reg_vcc5v>;
		vine-supply = <&reg_vcc5v>;
		aldoin-supply = <&reg_vcc5v>;
		bldoin-supply = <&reg_vcc5v>;
		cldoin-supply = <&reg_vcc5v>;

		regulators {
			reg_aldo1: aldo1 {
				regulator-always-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vcc-sys";
			};

			/* Enabled by the Android BSP */
			reg_aldo2: aldo2 {
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vcc3v3-ext";
				status = "disabled";
			};

			/* Enabled by the Android BSP */
			reg_aldo3: aldo3 {
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vcc3v3-ext2";
				status = "disabled";
			};

			reg_bldo1: bldo1 {
				regulator-always-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-name = "vcc1v8";
			};

			/* Enabled by the Android BSP */
			reg_bldo2: bldo2 {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-name = "vcc1v8-2";
				status = "disabled";
			};

			bldo3 {
				/* unused */
			};

			bldo4 {
				/* unused */
			};

			cldo1 {
				regulator-min-microvolt = <2500000>;
				regulator-max-microvolt = <2500000>;
				regulator-name = "vcc2v5";
			};

			cldo2 {
				/* unused */
			};

			cldo3 {
				/* unused */
			};

			reg_dcdca: dcdca {
				regulator-always-on;
				regulator-min-microvolt = <810000>;
				regulator-max-microvolt = <1100000>;
				regulator-name = "vdd-cpu";
			};

			reg_dcdcc: dcdcc {
				regulator-always-on;
				regulator-min-microvolt = <810000>;
				regulator-max-microvolt = <990000>;
				regulator-name = "vdd-gpu-sys";
			};

			reg_dcdcd: dcdcd {
				regulator-always-on;
				regulator-min-microvolt = <1360000>;
				regulator-max-microvolt = <1360000>;
				regulator-name = "vdd-dram";
			};

			reg_dcdce: dcdce {
				regulator-always-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vcc-eth-mmc";
			};

			sw {
				/* unused */
			};
		};
	};
};

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

&usbotg {
	dr_mode = "host";	/* USB A type receptable */
	status = "okay";
};

&usbphy {
	status = "okay";
};
