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

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include "sc7180.dtsi"
#include "pm6150.dtsi"
#include "pm6150l.dtsi"

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

	aliases {
		bluetooth0 = &bluetooth;
		hsuart0 = &uart3;
		serial0 = &uart8;
		wifi0 = &wifi;
	};

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

/*
 * Reserved memory changes
 *
 * Delete all unused memory nodes and define the peripheral memory regions
 * required by the board dts.
 *
 */

/delete-node/ &hyp_mem;
/delete-node/ &xbl_mem;
/delete-node/ &aop_mem;
/delete-node/ &sec_apps_mem;
/delete-node/ &tz_mem;

/* Increase the size from 2MB to 8MB */
&rmtfs_mem {
	reg = <0x0 0x84400000 0x0 0x800000>;
};

/ {
	reserved-memory {
		atf_mem: memory@80b00000 {
			reg = <0x0 0x80b00000 0x0 0x100000>;
			no-map;
		};

		mpss_mem: memory@86000000 {
			reg = <0x0 0x86000000 0x0 0x8c00000>;
			no-map;
		};

		camera_mem: memory@8ec00000 {
			reg = <0x0 0x8ec00000 0x0 0x500000>;
			no-map;
		};

		venus_mem: memory@8f600000 {
			reg = <0 0x8f600000 0 0x500000>;
			no-map;
		};

		wlan_mem: memory@94100000 {
			reg = <0x0 0x94100000 0x0 0x200000>;
			no-map;
		};

		mba_mem: memory@94400000 {
			reg = <0x0 0x94400000 0x0 0x200000>;
			no-map;
		};
	};
};

&apps_rsc {
	pm6150-rpmh-regulators {
		compatible = "qcom,pm6150-rpmh-regulators";
		qcom,pmic-id = "a";

		vreg_s1a_1p1: smps1 {
			regulator-min-microvolt = <1128000>;
			regulator-max-microvolt = <1128000>;
		};

		vreg_s4a_1p0: smps4 {
			regulator-min-microvolt = <824000>;
			regulator-max-microvolt = <1120000>;
		};

		vreg_s5a_2p0: smps5 {
			regulator-min-microvolt = <1744000>;
			regulator-max-microvolt = <2040000>;
		};

		vreg_l1a_1p2: ldo1 {
			regulator-min-microvolt = <1178000>;
			regulator-max-microvolt = <1256000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l2a_1p0: ldo2 {
			regulator-min-microvolt = <944000>;
			regulator-max-microvolt = <1056000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l3a_1p0: ldo3 {
			regulator-min-microvolt = <968000>;
			regulator-max-microvolt = <1064000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l4a_0p8: ldo4 {
			regulator-min-microvolt = <824000>;
			regulator-max-microvolt = <928000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l5a_2p7: ldo5 {
			regulator-min-microvolt = <2496000>;
			regulator-max-microvolt = <3000000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l6a_0p6: ldo6 {
			regulator-min-microvolt = <568000>;
			regulator-max-microvolt = <648000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l9a_0p6: ldo9 {
			regulator-min-microvolt = <488000>;
			regulator-max-microvolt = <800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l10a_1p8: ldo10 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1832000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l11a_1p8: ldo11 {
			regulator-min-microvolt = <1696000>;
			regulator-max-microvolt = <1904000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l12a_1p8: ldo12 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1800000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};

		vreg_l13a_1p8: ldo13 {
			regulator-min-microvolt = <1696000>;
			regulator-max-microvolt = <1904000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l14a_1p8: ldo14 {
			regulator-min-microvolt = <1728000>;
			regulator-max-microvolt = <1832000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l15a_1p8: ldo15 {
			regulator-min-microvolt = <1696000>;
			regulator-max-microvolt = <1904000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l16a_2p7: ldo16 {
			regulator-min-microvolt = <2496000>;
			regulator-max-microvolt = <3304000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l17a_3p0: ldo17 {
			regulator-min-microvolt = <2920000>;
			regulator-max-microvolt = <3232000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l18a_2p8: ldo18 {
			regulator-min-microvolt = <2496000>;
			regulator-max-microvolt = <3304000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l19a_2p9: ldo19 {
			regulator-min-microvolt = <2960000>;
			regulator-max-microvolt = <2960000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
		};
	};

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

		vreg_s8c_1p3: smps8 {
			regulator-min-microvolt = <1120000>;
			regulator-max-microvolt = <1408000>;
		};

		vreg_l1c_1p8: ldo1 {
			regulator-min-microvolt = <1616000>;
			regulator-max-microvolt = <1984000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l2c_1p3: ldo2 {
			regulator-min-microvolt = <1168000>;
			regulator-max-microvolt = <1304000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l3c_1p2: ldo3 {
			regulator-min-microvolt = <1144000>;
			regulator-max-microvolt = <1304000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l4c_1p8: ldo4 {
			regulator-min-microvolt = <1648000>;
			regulator-max-microvolt = <3304000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l5c_1p8: ldo5 {
			regulator-min-microvolt = <1648000>;
			regulator-max-microvolt = <3304000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

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

		vreg_l7c_3p0: ldo7 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3312000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l8c_1p8: ldo8 {
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <1904000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

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

		vreg_l10c_3p3: ldo10 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3400000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

		vreg_l11c_3p3: ldo11 {
			regulator-min-microvolt = <3000000>;
			regulator-max-microvolt = <3400000>;
			regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
		};

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

&qfprom {
	vcc-supply = <&vreg_l11a_1p8>;
};

&qspi {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&qspi_clk &qspi_cs0 &qspi_data01>;

	flash@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <25000000>;
		spi-tx-bus-width = <2>;
		spi-rx-bus-width = <2>;
	};
};

&qupv3_id_0 {
	status = "okay";
};

&qupv3_id_1 {
	status = "okay";
};

&remoteproc_mpss {
	status = "okay";
	compatible = "qcom,sc7180-mss-pil";
	iommus = <&apps_smmu 0x461 0x0>, <&apps_smmu 0x444 0x3>;
	memory-region = <&mba_mem &mpss_mem>;
};

&sdhc_1 {
	status = "okay";

	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&sdc1_on>;
	pinctrl-1 = <&sdc1_off>;
	vmmc-supply = <&vreg_l19a_2p9>;
	vqmmc-supply = <&vreg_l12a_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 69 GPIO_ACTIVE_LOW>;
};

&uart3 {
	status = "okay";

	/delete-property/interrupts;
	interrupts-extended = <&intc GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>,
				<&tlmm 41 IRQ_TYPE_EDGE_FALLING>;

	pinctrl-names = "default", "sleep";
	pinctrl-1 = <&qup_uart3_sleep>;

	bluetooth: wcn3990-bt {
		compatible = "qcom,wcn3990-bt";
		vddio-supply = <&vreg_l10a_1p8>;
		vddxo-supply = <&vreg_l1c_1p8>;
		vddrf-supply = <&vreg_l2c_1p3>;
		vddch0-supply = <&vreg_l10c_3p3>;
		max-speed = <3200000>;
	};
};

&uart8 {
	status = "okay";
};

&usb_1 {
	status = "okay";
};

&usb_1_dwc3 {
	dr_mode = "host";
};

&usb_1_hsphy {
	status = "okay";
	vdd-supply = <&vreg_l4a_0p8>;
	vdda-pll-supply = <&vreg_l11a_1p8>;
	vdda-phy-dpdm-supply = <&vreg_l17a_3p0>;
	qcom,imp-res-offset-value = <8>;
	qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_15_PERCENT>;
	qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
	qcom,bias-ctrl-value = <0x22>;
	qcom,charge-ctrl-value = <3>;
	qcom,hsdisc-trim-value = <0>;
};

&usb_1_qmpphy {
	status = "okay";
	vdda-phy-supply = <&vreg_l3c_1p2>;
	vdda-pll-supply = <&vreg_l4a_0p8>;
};

&venus {
	video-firmware {
		iommus = <&apps_smmu 0x0c42 0x0>;
	};
};

&wifi {
	status = "okay";
	vdd-0.8-cx-mx-supply = <&vreg_l9a_0p6>;
	vdd-1.8-xo-supply = <&vreg_l1c_1p8>;
	vdd-1.3-rfa-supply = <&vreg_l2c_1p3>;
	vdd-3.3-ch0-supply = <&vreg_l10c_3p3>;
	vdd-3.3-ch1-supply = <&vreg_l11c_3p3>;
	wifi-firmware {
		iommus = <&apps_smmu 0xc2 0x1>;
	};
};

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

&qspi_clk {
	pinconf {
		pins = "gpio63";
		bias-disable;
	};
};

&qspi_cs0 {
	pinconf {
		pins = "gpio68";
		bias-disable;
	};
};

&qspi_data01 {
	pinconf {
		pins = "gpio64", "gpio65";

		/* High-Z when no transfers; nice to park the lines */
		bias-pull-up;
	};
};

&qup_i2c2_default {
	pinconf {
		pins = "gpio15", "gpio16";
		drive-strength = <2>;

		/* Has external pullup */
		bias-disable;
	};
};

&qup_i2c4_default {
	pinconf {
		pins = "gpio115", "gpio116";
		drive-strength = <2>;

		/* Has external pullup */
		bias-disable;
	};
};

&qup_i2c7_default {
	pinconf {
		pins = "gpio6", "gpio7";
		drive-strength = <2>;

		/* Has external pullup */
		bias-disable;
	};
};

&qup_i2c9_default {
	pinconf {
		pins = "gpio46", "gpio47";
		drive-strength = <2>;

		/* Has external pullup */
		bias-disable;
	};
};

&qup_uart3_default {
	pinconf-cts {
		/*
		 * Configure a pull-down on CTS to match the pull of
		 * the Bluetooth module.
		 */
		pins = "gpio38";
		bias-pull-down;
	};

	pinconf-rts {
		/* We'll drive RTS, so no pull */
		pins = "gpio39";
		drive-strength = <2>;
		bias-disable;
	};

	pinconf-tx {
		/* We'll drive TX, so no pull */
		pins = "gpio40";
		drive-strength = <2>;
		bias-disable;
	};

	pinconf-rx {
		/*
		 * Configure a pull-up on RX. This is needed to avoid
		 * garbage data when the TX pin of the Bluetooth module is
		 * in tri-state (module powered off or not driving the
		 * signal yet).
		 */
		pins = "gpio41";
		bias-pull-up;
	};
};

&qup_uart8_default {
	pinconf-tx {
		pins = "gpio44";
		drive-strength = <2>;
		bias-disable;
	};

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

&qup_spi0_default {
	pinconf {
		pins = "gpio34", "gpio35", "gpio36", "gpio37";
		drive-strength = <2>;
		bias-disable;
	};
};

&qup_spi6_default {
	pinconf {
		pins = "gpio59", "gpio60", "gpio61", "gpio62";
		drive-strength = <2>;
		bias-disable;
	};
};

&qup_spi10_default {
	pinconf {
		pins = "gpio86", "gpio87", "gpio88", "gpio89";
		drive-strength = <2>;
		bias-disable;
	};
};

&tlmm {
	qup_uart3_sleep: qup-uart3-sleep {
		pinmux {
			pins = "gpio38", "gpio39",
			       "gpio40", "gpio41";
			function = "gpio";
		};

		pinconf-cts {
			/*
			 * Configure a pull-down on CTS to match the pull of
			 * the Bluetooth module.
			 */
			pins = "gpio38";
			bias-pull-down;
		};

		pinconf-rts {
			/*
			 * Configure pull-down on RTS. As RTS is active low
			 * signal, pull it low to indicate the BT SoC that it
			 * can wakeup the system anytime from suspend state by
			 * pulling RX low (by sending wakeup bytes).
			 */
			 pins = "gpio39";
			 bias-pull-down;
		};

		pinconf-tx {
			/*
			 * Configure pull-up on TX when it isn't actively driven
			 * to prevent BT SoC from receiving garbage during sleep.
			 */
			pins = "gpio40";
			bias-pull-up;
		};

		pinconf-rx {
			/*
			 * Configure a pull-up on RX. This is needed to avoid
			 * garbage data when the TX pin of the Bluetooth module
			 * is floating which may cause spurious wakeups.
			 */
			pins = "gpio41";
			bias-pull-up;
		};
	};
};
