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

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

&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>;
		};
	};
};

&ipa {
	status = "okay";
	modem-init;
};

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

&qupv3_id_0 {
	status = "okay";
};

&sdhc_1 {
	status = "okay";

	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&sdc1_on>;
	pinctrl-1 = <&sdc1_off>;

	non-removable;
	no-sd;
	no-sdio;

	vmmc-supply = <&vreg_l7b_2p9>;
	vqmmc-supply = <&vreg_l19b_1p8>;
};

&sdhc_2 {
	status = "okay";

	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&sdc2_on>;
	pinctrl-1 = <&sdc2_off>;

	vmmc-supply = <&vreg_l9c_2p9>;
	vqmmc-supply = <&vreg_l6c_2p9>;

	cd-gpios = <&tlmm 91 GPIO_ACTIVE_LOW>;
};

&uart5 {
	status = "okay";
};

&usb_1 {
	status = "okay";
};

&usb_1_dwc3 {
	dr_mode = "host";
};

&usb_1_hsphy {
	status = "okay";

	vdda-pll-supply = <&vreg_l10c_0p8>;
	vdda33-supply = <&vreg_l2b_3p0>;
	vdda18-supply = <&vreg_l1c_1p8>;
};

&usb_1_qmpphy {
	status = "okay";

	vdda-phy-supply = <&vreg_l6b_1p2>;
	vdda-pll-supply = <&vreg_l1b_0p8>;
};

&usb_2 {
	status = "okay";
};

&usb_2_dwc3 {
	dr_mode = "peripheral";
};

&usb_2_hsphy {
	status = "okay";

	vdda-pll-supply = <&vreg_l10c_0p8>;
	vdda33-supply = <&vreg_l2b_3p0>;
	vdda18-supply = <&vreg_l1c_1p8>;
};

/* 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;
	};
};

&sdc1_on {
	clk {
		bias-disable;
		drive-strength = <16>;
	};

	cmd {
		bias-pull-up;
		drive-strength = <10>;
	};

	data {
		bias-pull-up;
		drive-strength = <10>;
	};

	rclk {
		bias-pull-down;
	};
};

&sdc2_on {
	clk {
		bias-disable;
		drive-strength = <16>;
	};

	cmd {
		bias-pull-up;
		drive-strength = <10>;
	};

	data {
		bias-pull-up;
		drive-strength = <10>;
	};

	sd-cd {
		bias-pull-up;
	};
};
