// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
 */

/dts-v1/;

#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include "sdx75.dtsi"
#include "pm7550ba.dtsi"
#include "pmk8550.dtsi"
#include "pmx75.dtsi"

/ {
	model = "Qualcomm Technologies, Inc. SDX75 IDP";
	compatible = "qcom,sdx75-idp", "qcom,sdx75";

	aliases {
		serial0 = &uart1;
	};

	vph_pwr: vph-pwr-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vph_pwr";
		regulator-min-microvolt = <3700000>;
		regulator-max-microvolt = <3700000>;
	};

	vph_ext: vph-ext-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vph_ext";
		regulator-min-microvolt = <3700000>;
		regulator-max-microvolt = <3700000>;
	};

	vreg_bob_3p3: pmx75-bob {
		compatible = "regulator-fixed";
		regulator-name = "vreg_bob_3p3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;

		vin-supply = <&vph_ext>;
	};
};

&apps_rsc {
	regulators-0 {
		compatible = "qcom,pmx75-rpmh-regulators";
		qcom,pmic-id = "b";

		vdd-s1-supply = <&vph_pwr>;
		vdd-s2-supply = <&vph_pwr>;
		vdd-s3-supply = <&vph_pwr>;
		vdd-s4-supply = <&vph_pwr>;
		vdd-s5-supply = <&vph_pwr>;
		vdd-s6-supply = <&vph_pwr>;
		vdd-s7-supply = <&vph_pwr>;
		vdd-s8-supply = <&vph_pwr>;
		vdd-s9-supply = <&vph_pwr>;
		vdd-s10-supply = <&vph_pwr>;
		vdd-l1-supply = <&vreg_s2b_1p224>;
		vdd-l2-l18-supply = <&vreg_s2b_1p224>;
		vdd-l3-supply = <&vreg_s7b_0p936>;
		vdd-l4-l16-supply = <&vreg_s7b_0p936>;
		vdd-l5-l6-supply = <&vreg_s4b_1p824>;
		vdd-l7-supply = <&vreg_s7b_0p936>;
		vdd-l8-l9-supply = <&vreg_s8b_0p824>;
		vdd-l10-supply = <&vreg_bob_3p3>;
		vdd-l11-l13-supply = <&vreg_bob_3p3>;
		vdd-l12-supply = <&vreg_s2b_1p224>;
		vdd-l14-supply = <&vreg_s3b_0p752>;
		vdd-l15-supply = <&vreg_s2b_1p224>;
		vdd-l17-supply = <&vreg_s8b_0p824>;
		vdd-l19-supply = <&vreg_s7b_0p936>;
		vdd-l20-l21-supply = <&vreg_s7b_0p936>;

		vreg_s2b_1p224: smps2 {
			regulator-name = "vreg_s2b_1p224";
			regulator-min-microvolt = <1224000>;
			regulator-max-microvolt = <1350000>;
		};

		vreg_s3b_0p752: smps3 {
			regulator-name = "vreg_s3b_0p752";
			regulator-min-microvolt = <684000>;
			regulator-max-microvolt = <904000>;
		};

		vreg_s4b_1p824: smps4 {
			regulator-name = "vreg_s4b_1p824";
			regulator-min-microvolt = <1824000>;
			regulator-max-microvolt = <1904000>;
		};

		vreg_s7b_0p936: smps7 {
			regulator-name = "vreg_s7b_0p936";
			regulator-min-microvolt = <352000>;
			regulator-max-microvolt = <1060000>;
		};

		vreg_s8b_0p824: smps8 {
			regulator-name = "vreg_s8b_0p824";
			regulator-min-microvolt = <500000>;
			regulator-max-microvolt = <1100000>;
		};

		vreg_l1b_1p2: ldo1 {
			regulator-name = "vreg_l1b_1p2";
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l2b_1p128: ldo2 {
			regulator-name = "vreg_l2b_1p128";
			regulator-min-microvolt = <1000000>;
			regulator-max-microvolt = <1160000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l3b_0p896: ldo3 {
			regulator-name = "vreg_l3b_0p896";
			regulator-min-microvolt = <300000>;
			regulator-max-microvolt = <1040000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l4b_0p88: ldo4 {
			regulator-name = "vreg_l4b_0p88";
			regulator-min-microvolt = <864000>;
			regulator-max-microvolt = <912000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l5b_1p776: ldo5 {
			regulator-name = "vreg_l5b_1p776";
			regulator-min-microvolt = <1770000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l6b_1p8: ldo6 {
			regulator-name = "vreg_l6b_1p8";
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l7b_0p904: ldo7 {
			regulator-name = "vreg_l7b_0p904";
			regulator-min-microvolt = <300000>;
			regulator-max-microvolt = <960000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l8b_0p8: ldo8 {
			regulator-name = "vreg_l8b_0p8";
			regulator-min-microvolt = <800000>;
			regulator-max-microvolt = <800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l9b_0p752: ldo9 {
			regulator-name = "vreg_l9b_0p752";
			regulator-min-microvolt = <752000>;
			regulator-max-microvolt = <800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l10b_3p08: ldo10 {
			regulator-name = "vreg_l10b_3p08";
			regulator-min-microvolt = <3008000>;
			regulator-max-microvolt = <3088000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l11b_1p8: ldo11 {
			regulator-name = "vreg_l11b_1p8";
			regulator-min-microvolt = <1704000>;
			regulator-max-microvolt = <2928000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l12b_1p2: ldo12 {
			regulator-name = "vreg_l12b_1p2";
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l13b_1p8: ldo13 {
			regulator-name = "vreg_l13b_1p8";
			regulator-min-microvolt = <1704000>;
			regulator-max-microvolt = <2928000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l14b_0p624: ldo14 {
			regulator-name = "vreg_l14b_0p624";
			regulator-min-microvolt = <300000>;
			regulator-max-microvolt = <800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l15b_1p2: ldo15 {
			regulator-name = "vreg_l15b_1p2";
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l16b_0p912: ldo16 {
			regulator-name = "vreg_l16b_0p912";
			regulator-min-microvolt = <880000>;
			regulator-max-microvolt = <920000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l17b_0p752: ldo17 {
			regulator-name = "vreg_l17b_0p752";
			regulator-min-microvolt = <684000>;
			regulator-max-microvolt = <957600>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l19b_0p952: ldo19 {
			regulator-name = "vreg_l19b_0p952";
			regulator-min-microvolt = <900000>;
			regulator-max-microvolt = <960000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l20b_0p912: ldo20 {
			regulator-name = "vreg_l20b_0p912";
			regulator-min-microvolt = <912000>;
			regulator-max-microvolt = <952000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l21b_0p856: ldo21 {
			regulator-name = "vreg_l21b_0p856";
			regulator-min-microvolt = <300000>;
			regulator-max-microvolt = <1000000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};
	};
};

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

&pm7550ba_eusb2_repeater {
	vdd18-supply = <&vreg_l5b_1p776>;
	vdd3-supply = <&vreg_l10b_3p08>;
};

&qupv3_id_0 {
	status = "okay";
};

&tlmm {
	gpio-reserved-ranges = <110 6>;
};

&uart1 {
	status = "okay";
};

&usb {
	status = "okay";
};

&usb_dwc3 {
	dr_mode = "peripheral";
};

&usb_hsphy {
	vdd-supply = <&vreg_l4b_0p88>;
	vdda12-supply = <&vreg_l1b_1p2>;

	phys = <&pm7550ba_eusb2_repeater>;

	status = "okay";
};

&usb_qmpphy {
	vdda-phy-supply = <&vreg_l4b_0p88>;
	vdda-pll-supply = <&vreg_l1b_1p2>;

	status = "okay";
};
