// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
// Copyright (C) 2018 Amarula Solutions
// Author: Jagan Teki <jagan@amarulasolutions.com>

/dts-v1/;

#include "sun50i-h6.dtsi"

#include <dt-bindings/gpio/gpio.h>

/ {
	model = "OrangePi One Plus";
	compatible = "xunlong,orangepi-one-plus", "allwinner,sun50i-h6";

	aliases {
		serial0 = &uart0;
	};

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

	connector {
		compatible = "hdmi-connector";
		type = "a";
		ddc-en-gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */

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

	ext_osc32k: ext_osc32k_clk {
		#clock-cells = <0>;
		compatible = "fixed-clock";
		clock-frequency = <32768>;
		clock-output-names = "ext_osc32k";
	};

	leds {
		compatible = "gpio-leds";

		led-0 {
			label = "orangepi:red:power";
			gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
			default-state = "on";
		};

		led-1 {
			label = "orangepi:green:status";
			gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */
		};
	};

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

&de {
	status = "okay";
};

&ehci0 {
	status = "okay";
};

&ehci3 {
	status = "okay";
};

&gpu {
	mali-supply = <&reg_dcdcc>;
	status = "okay";
};

&hdmi {
	status = "okay";
};

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

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

&ohci0 {
	status = "okay";
};

&ohci3 {
	status = "okay";
};

&pio {
	vcc-pc-supply = <&reg_bldo2>;
	vcc-pd-supply = <&reg_cldo1>;
	vcc-pg-supply = <&reg_aldo1>;
};

&r_i2c {
	status = "okay";

	axp805: pmic@36 {
		compatible = "x-powers,axp805", "x-powers,axp806";
		reg = <0x36>;
		interrupt-parent = <&r_intc>;
		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
		interrupt-controller;
		#interrupt-cells = <1>;
		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-pl";
			};

			reg_aldo2: aldo2 {
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vcc-ac200";
			};

			reg_aldo3: aldo3 {
				regulator-always-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vcc25-dram";
			};

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

			reg_bldo2: bldo2 {
				regulator-always-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-name = "vcc-efuse-pcie-hdmi-io";
			};

			reg_bldo3: bldo3 {
				regulator-always-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-name = "vcc-dcxoio";
			};

			bldo4 {
				/* unused */
			};

			reg_cldo1: cldo1 {
				regulator-always-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vcc-3v3";
			};

			reg_cldo2: cldo2 {
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vcc-wifi-1";
			};

			reg_cldo3: cldo3 {
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vcc-wifi-2";
			};

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

			reg_dcdcc: dcdcc {
				regulator-enable-ramp-delay = <32000>;
				regulator-min-microvolt = <810000>;
				regulator-max-microvolt = <1080000>;
				regulator-name = "vdd-gpu";
			};

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

			reg_dcdce: dcdce {
				regulator-always-on;
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <1200000>;
				regulator-name = "vcc-dram";
			};

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

&r_ir {
	status = "okay";
};

&r_pio {
	vcc-pm-supply = <&reg_bldo3>;
};

&rtc {
	clocks = <&ext_osc32k>;
};

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

&usb2otg {
	/*
	 * OrangePi Lite 2 and One Plus, where this DT is used, don't
	 * have a controllable VBUS even though they do have an ID pin.
	 * Using it as anything but a USB host is unsafe.
	 */
	dr_mode = "host";
	status = "okay";
};

&usb2phy {
	usb0_id_det-gpios = <&pio 2 6 GPIO_ACTIVE_HIGH>; /* PC6 */
	usb0_vbus-supply = <&reg_vcc5v>;
	usb3_vbus-supply = <&reg_vcc5v>;
	status = "okay";
};
