// SPDX-License-Identifier: BSD-3-Clause
/*
 * sc7280 IDP board device tree source
 *
 * Copyright (c) 2021, The Linux Foundation. All rights reserved.
 */

/dts-v1/;

#include <dt-bindings/iio/qcom,spmi-adc7-pmr735a.h>
#include <dt-bindings/iio/qcom,spmi-adc7-pmr735b.h>
#include <dt-bindings/iio/qcom,spmi-adc7-pm8350.h>
#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
#include "sc7280.dtsi"
#include "pm7325.dtsi"
#include "pmr735a.dtsi"
#include "pm8350c.dtsi"
#include "pmk8350.dtsi"

/ {
	model = "Qualcomm Technologies, Inc. sc7280 IDP platform";
	compatible = "qcom,sc7280-idp", "google,senor", "qcom,sc7280";

	aliases {
		serial0 = &uart5;
	};

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

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

		vreg_s1b_1p8: smps1 {
			regulator-min-microvolt = <1856000>;
			regulator-max-microvolt = <2040000>;
		};

		vreg_s7b_0p9: smps7 {
			regulator-min-microvolt = <535000>;
			regulator-max-microvolt = <1120000>;
		};

		vreg_s8b_1p2: smps8 {
			regulator-min-microvolt = <1256000>;
			regulator-max-microvolt = <1500000>;
		};

		vreg_l1b_0p8: ldo1 {
			regulator-min-microvolt = <825000>;
			regulator-max-microvolt = <925000>;
		};

		vreg_l2b_3p0: ldo2 {
			regulator-min-microvolt = <2700000>;
			regulator-max-microvolt = <3544000>;
		};

		vreg_l6b_1p2: ldo6 {
			regulator-min-microvolt = <1140000>;
			regulator-max-microvolt = <1260000>;
		};

		vreg_l7b_2p9: ldo7 {
			regulator-min-microvolt = <2960000>;
			regulator-max-microvolt = <2960000>;
		};

		vreg_l8b_0p9: ldo8 {
			regulator-min-microvolt = <870000>;
			regulator-max-microvolt = <970000>;
		};

		vreg_l9b_1p2: ldo9 {
			regulator-min-microvolt = <1080000>;
			regulator-max-microvolt = <1304000>;
		};

		vreg_l11b_1p7: ldo11 {
			regulator-min-microvolt = <1504000>;
			regulator-max-microvolt = <2000000>;
		};

		vreg_l12b_0p8: ldo12 {
			regulator-min-microvolt = <751000>;
			regulator-max-microvolt = <824000>;
		};

		vreg_l13b_0p8: ldo13 {
			regulator-min-microvolt = <530000>;
			regulator-max-microvolt = <824000>;
		};

		vreg_l14b_1p2: ldo14 {
			regulator-min-microvolt = <1080000>;
			regulator-max-microvolt = <1304000>;
		};

		vreg_l15b_0p8: ldo15 {
			regulator-min-microvolt = <765000>;
			regulator-max-microvolt = <1020000>;
		};

		vreg_l16b_1p2: ldo16 {
			regulator-min-microvolt = <1100000>;
			regulator-max-microvolt = <1300000>;
		};

		vreg_l17b_1p8: ldo17 {
			regulator-min-microvolt = <1700000>;
			regulator-max-microvolt = <1900000>;
		};

		vreg_l18b_1p8: ldo18 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2000000>;
		};

		vreg_l19b_1p8: ldo19 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
		};
	};

	pm8350c-regulators {
		compatible = "qcom,pm8350c-rpmh-regulators";
		qcom,pmic-id = "c";

		vreg_s1c_2p2: smps1 {
			regulator-min-microvolt = <2190000>;
			regulator-max-microvolt = <2210000>;
		};

		vreg_s9c_1p0: smps9 {
			regulator-min-microvolt = <1010000>;
			regulator-max-microvolt = <1170000>;
		};

		vreg_l1c_1p8: ldo1 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1980000>;
		};

		vreg_l2c_1p8: ldo2 {
			regulator-min-microvolt = <1620000>;
			regulator-max-microvolt = <1980000>;
		};

		vreg_l3c_3p0: ldo3 {
			regulator-min-microvolt = <2800000>;
			regulator-max-microvolt = <3540000>;
		};

		vreg_l4c_1p8: ldo4 {
			regulator-min-microvolt = <1620000>;
			regulator-max-microvolt = <3300000>;
		};

		vreg_l5c_1p8: ldo5 {
			regulator-min-microvolt = <1620000>;
			regulator-max-microvolt = <3300000>;
		};

		vreg_l6c_2p9: ldo6 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <2950000>;
		};

		vreg_l7c_3p0: ldo7 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3544000>;
		};

		vreg_l8c_1p8: ldo8 {
			regulator-min-microvolt = <1620000>;
			regulator-max-microvolt = <2000000>;
		};

		vreg_l9c_2p9: ldo9 {
			regulator-min-microvolt = <2960000>;
			regulator-max-microvolt = <2960000>;
		};

		vreg_l10c_0p8: ldo10 {
			regulator-min-microvolt = <720000>;
			regulator-max-microvolt = <1050000>;
		};

		vreg_l11c_2p8: ldo11 {
			regulator-min-microvolt = <2800000>;
			regulator-max-microvolt = <3544000>;
		};

		vreg_l12c_1p8: ldo12 {
			regulator-min-microvolt = <1650000>;
			regulator-max-microvolt = <2000000>;
		};

		vreg_l13c_3p0: ldo13 {
			regulator-min-microvolt = <2700000>;
			regulator-max-microvolt = <3544000>;
		};

		vreg_bob: bob {
			regulator-min-microvolt = <3008000>;
			regulator-max-microvolt = <3960000>;
		};
	};

	pmr735a-regulators {
		compatible = "qcom,pmr735a-rpmh-regulators";
		qcom,pmic-id = "e";

		vreg_l2e_1p2: ldo2 {
			regulator-min-microvolt = <1200000>;
			regulator-max-microvolt = <1200000>;
		};

		vreg_l3e_0p9: ldo3 {
			regulator-min-microvolt = <912000>;
			regulator-max-microvolt = <1020000>;
		};

		vreg_l4e_1p7: ldo4 {
			regulator-min-microvolt = <1776000>;
			regulator-max-microvolt = <1890000>;
		};

		vreg_l5e_0p8: ldo5 {
			regulator-min-microvolt = <800000>;
			regulator-max-microvolt = <800000>;
		};

		vreg_l6e_0p8: ldo6 {
			regulator-min-microvolt = <480000>;
			regulator-max-microvolt = <904000>;
		};
	};
};

&pmk8350_vadc {
		pm8350_die_temp {
			reg = <PM8350_ADC7_DIE_TEMP>;
			label = "pm8350_die_temp";
			qcom,pre-scaling = <1 1>;
		};

		pmk8350_die_temp {
			reg = <PMK8350_ADC7_DIE_TEMP>;
			label = "pmk8350_die_temp";
			qcom,pre-scaling = <1 1>;
		};

		pmr735a_die_temp {
			reg = <PMR735A_ADC7_DIE_TEMP>;
			label = "pmr735a_die_temp";
			qcom,pre-scaling = <1 1>;
		};

		pmr735b_die_temp {
			reg = <PMR735B_ADC7_DIE_TEMP>;
			label = "pmr735b_die_temp";
			qcom,pre-scaling = <1 1>;
		};
};

&qupv3_id_0 {
	status = "okay";
};

&uart5 {
	status = "okay";
};

/* PINCTRL - additions to nodes defined in sc7280.dtsi */

&qup_uart5_default {
	tx {
		pins = "gpio46";
		drive-strength = <2>;
		bias-disable;
	};

	rx {
		pins = "gpio47";
		drive-strength = <2>;
		bias-pull-up;
	};
};
