// 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/iio/qcom,spmi-adc7-pmk8350.h>
#include <dt-bindings/input/linux-event-codes.h>
#include "sc7280.dtsi"
#include "pm7325.dtsi"
#include "pm8350c.dtsi"
#include "pmk8350.dtsi"

#include "sc7280-chrome-common.dtsi"
#include "sc7280-herobrine-lte-sku.dtsi"

/ {
	aliases {
		bluetooth0 = &bluetooth;
		serial1 = &uart7;
	};

	max98360a: audio-codec-0 {
		compatible = "maxim,max98360a";
		pinctrl-names = "default";
		pinctrl-0 = <&amp_en>;
		sdmode-gpios = <&tlmm 63 GPIO_ACTIVE_HIGH>;
		#sound-dai-cells = <0>;
	};

	wcd9385: audio-codec-1 {
		compatible = "qcom,wcd9385-codec";
		pinctrl-names = "default", "sleep";
		pinctrl-0 = <&wcd_reset_n>;
		pinctrl-1 = <&wcd_reset_n_sleep>;

		reset-gpios = <&tlmm 83 GPIO_ACTIVE_LOW>;

		qcom,rx-device = <&wcd_rx>;
		qcom,tx-device = <&wcd_tx>;

		vdd-rxtx-supply = <&vreg_l18b_1p8>;
		vdd-io-supply = <&vreg_l18b_1p8>;
		vdd-buck-supply = <&vreg_l17b_1p8>;
		vdd-mic-bias-supply = <&vreg_bob>;

		qcom,micbias1-microvolt = <1800000>;
		qcom,micbias2-microvolt = <1800000>;
		qcom,micbias3-microvolt = <1800000>;
		qcom,micbias4-microvolt = <1800000>;

		qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000
							  500000 500000 500000>;
		qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
		qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
		#sound-dai-cells = <1>;
	};

	gpio-keys {
		compatible = "gpio-keys";
		label = "gpio-keys";

		pinctrl-names = "default";
		pinctrl-0 = <&key_vol_up_default>;

		key-volume-up {
			label = "volume_up";
			gpios = <&pm7325_gpios 6 GPIO_ACTIVE_LOW>;
			linux,input-type = <1>;
			linux,code = <KEY_VOLUMEUP>;
			gpio-key,wakeup;
			debounce-interval = <15>;
			linux,can-disable;
		};
	};

	nvme_3v3_regulator: nvme-3v3-regulator {
		compatible = "regulator-fixed";
		regulator-name = "VLDO_3V3";

		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;

		enable-active-high;
		pinctrl-names = "default";
		pinctrl-0 = <&nvme_pwren>;
	};

	sound: sound {
		compatible = "google,sc7280-herobrine";
		model = "sc7280-wcd938x-max98360a-1mic";

		audio-routing =
			"IN1_HPHL", "HPHL_OUT",
			"IN2_HPHR", "HPHR_OUT",
			"AMIC1", "MIC BIAS1",
			"AMIC2", "MIC BIAS2",
			"VA DMIC0", "MIC BIAS3",
			"VA DMIC1", "MIC BIAS3",
			"VA DMIC2", "MIC BIAS1",
			"VA DMIC3", "MIC BIAS1",
			"TX SWR_ADC0", "ADC1_OUTPUT",
			"TX SWR_ADC1", "ADC2_OUTPUT",
			"TX SWR_ADC2", "ADC3_OUTPUT",
			"TX SWR_DMIC0", "DMIC1_OUTPUT",
			"TX SWR_DMIC1", "DMIC2_OUTPUT",
			"TX SWR_DMIC2", "DMIC3_OUTPUT",
			"TX SWR_DMIC3", "DMIC4_OUTPUT",
			"TX SWR_DMIC4", "DMIC5_OUTPUT",
			"TX SWR_DMIC5", "DMIC6_OUTPUT",
			"TX SWR_DMIC6", "DMIC7_OUTPUT",
			"TX SWR_DMIC7", "DMIC8_OUTPUT";

		qcom,msm-mbhc-hphl-swh = <1>;
		qcom,msm-mbhc-gnd-swh = <1>;

		#address-cells = <1>;
		#size-cells = <0>;
		#sound-dai-cells = <0>;

		dai-link@0 {
			link-name = "MAX98360A";
			reg = <0>;

			cpu {
				sound-dai = <&lpass_cpu MI2S_SECONDARY>;
			};

			codec {
				sound-dai = <&max98360a>;
			};
		};

		dai-link@1 {
			link-name = "DisplayPort";
			reg = <1>;

			cpu {
				sound-dai = <&lpass_cpu LPASS_DP_RX>;
			};

			codec {
				sound-dai = <&mdss_dp>;
			};
		};

		dai-link@2 {
			link-name = "WCD9385 Playback";
			reg = <2>;

			cpu {
				sound-dai = <&lpass_cpu LPASS_CDC_DMA_RX0>;
			};

			codec {
				sound-dai = <&wcd9385 0>, <&swr0 0>, <&lpass_rx_macro 0>;
			};
		};

		dai-link@3 {
			link-name = "WCD9385 Capture";
			reg = <3>;

			cpu {
				sound-dai = <&lpass_cpu LPASS_CDC_DMA_TX3>;
			};

			codec {
				sound-dai = <&wcd9385 1>, <&swr1 0>, <&lpass_tx_macro 0>;
			};
		};

		dai-link@4 {
			link-name = "DMIC";
			reg = <4>;

			cpu {
				sound-dai = <&lpass_cpu LPASS_CDC_DMA_VA_TX0>;
			};

			codec {
				sound-dai = <&lpass_va_macro 0>;
			};
		};
	};
};

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

&gpi_dma0 {
	status = "okay";
};

&gpi_dma1 {
	status = "okay";
};

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

&lpass_cpu {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <&mi2s1_data0>, <&mi2s1_sclk>, <&mi2s1_ws>;

	dai-link@1 {
		reg = <MI2S_SECONDARY>;
		qcom,playback-sd-lines = <0>;
	};

	dai-link@5 {
		reg = <LPASS_DP_RX>;
	};

	dai-link@6 {
		reg = <LPASS_CDC_DMA_RX0>;
	};

	dai-link@19 {
		reg = <LPASS_CDC_DMA_TX3>;
	};

	dai-link@25 {
		reg = <LPASS_CDC_DMA_VA_TX0>;
	};
};

&lpass_rx_macro {
	status = "okay";
};

&lpass_tx_macro {
	status = "okay";
};

&lpass_va_macro {
	status = "okay";
	vdd-micb-supply = <&vreg_bob>;
};

&pcie1 {
	status = "okay";
	perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;

	vddpe-3v3-supply = <&nvme_3v3_regulator>;

	pinctrl-names = "default";
	pinctrl-0 = <&pcie1_reset_n>, <&pcie1_wake_n>;
};

&pcie1_phy {
	status = "okay";

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

&pmk8350_vadc {
	pmk8350-die-temp@3 {
		reg = <PMK8350_ADC7_DIE_TEMP>;
		label = "pmk8350_die_temp";
		qcom,pre-scaling = <1 1>;
	};
};

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

&qupv3_id_0 {
	status = "okay";
};

&qupv3_id_1 {
	status = "okay";
};

&sdhc_1 {
	status = "okay";

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

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

&sdhc_2 {
	status = "okay";

	pinctrl-0 = <&sdc2_clk>, <&sdc2_cmd>, <&sdc2_data>, <&sd_cd>;
	pinctrl-1 = <&sdc2_clk_sleep>, <&sdc2_cmd_sleep>, <&sdc2_data_sleep>, <&sd_cd>;

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

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

&swr0 {
	status = "okay";

	wcd_rx: codec@0,4 {
		compatible = "sdw20217010d00";
		reg = <0 4>;
		#sound-dai-cells = <1>;
		qcom,rx-port-mapping = <1 2 3 4 5>;
	};
};

&swr1 {
	status = "okay";

	wcd_tx: codec@0,3 {
		compatible = "sdw20217010d00";
		reg = <0 3>;
		#sound-dai-cells = <1>;
		qcom,tx-port-mapping = <1 2 3 4>;
	};
};

&uart5 {
	compatible = "qcom,geni-debug-uart";
	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>;
	qcom,hs-rise-fall-time-bp = <0>;
	qcom,squelch-detector-bp = <(-2090)>;
	qcom,hs-disconnect-bp = <1743>;
	qcom,hs-amplitude-bp = <1780>;
	qcom,hs-crossover-voltage-microvolt = <(-31000)>;
	qcom,hs-output-impedance-micro-ohms = <2600000>;
};

&usb_1_qmpphy {
	status = "okay";

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

&uart7 {
	status = "okay";

	/delete-property/interrupts;
	interrupts-extended = <&intc GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>,
				<&tlmm 31 IRQ_TYPE_EDGE_FALLING>;
	pinctrl-names = "default", "sleep";
	pinctrl-1 = <&qup_uart7_sleep_cts>, <&qup_uart7_sleep_rts>, <&qup_uart7_sleep_tx>, <&qup_uart7_sleep_rx>;

	bluetooth: bluetooth {
		compatible = "qcom,wcn6750-bt";
		pinctrl-names = "default";
		pinctrl-0 = <&bt_en>, <&sw_ctrl>;
		enable-gpios = <&tlmm 85 GPIO_ACTIVE_HIGH>;
		swctrl-gpios = <&tlmm 86 GPIO_ACTIVE_HIGH>;
		vddaon-supply = <&vreg_s7b_0p9>;
		vddbtcxmx-supply = <&vreg_s7b_0p9>;
		vddrfacmn-supply = <&vreg_s7b_0p9>;
		vddrfa0p8-supply = <&vreg_s7b_0p9>;
		vddrfa1p7-supply = <&vreg_s1b_1p8>;
		vddrfa1p2-supply = <&vreg_s8b_1p2>;
		vddrfa2p2-supply = <&vreg_s1c_2p2>;
		vddasd-supply = <&vreg_l11c_2p8>;
		max-speed = <3200000>;
	};
};

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

&dp_hot_plug_det {
	bias-disable;
};

&lpass_dmic01_clk {
	drive-strength = <8>;
	bias-disable;
};

&lpass_dmic01_data {
	bias-pull-down;
};

&lpass_dmic23_clk {
	drive-strength = <8>;
	bias-disable;
};

&lpass_dmic23_data {
	bias-pull-down;
};

&lpass_rx_swr_clk {
	drive-strength = <2>;
	slew-rate = <1>;
	bias-disable;
};

&lpass_rx_swr_data {
	drive-strength = <2>;
	slew-rate = <1>;
	bias-bus-hold;
};

&lpass_tx_swr_clk {
	drive-strength = <2>;
	slew-rate = <1>;
	bias-disable;
};

&lpass_tx_swr_data {
	drive-strength = <2>;
	slew-rate = <1>;
	bias-bus-hold;
};

&mi2s1_data0 {
	drive-strength = <6>;
	bias-disable;
};

&mi2s1_sclk {
	drive-strength = <6>;
	bias-disable;
};

&mi2s1_ws {
	drive-strength = <6>;
};

&pm7325_gpios {
	key_vol_up_default: key-vol-up-state {
		pins = "gpio6";
		function = "normal";
		input-enable;
		bias-pull-up;
		power-source = <0>;
		qcom,drive-strength = <3>;
	};
};

&pcie1_clkreq_n {
	bias-pull-up;
	drive-strength = <2>;
};

&qspi_cs0 {
	bias-disable;
};

&qspi_clk {
	bias-disable;
};

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

&qup_uart5_tx {
	drive-strength = <2>;
	bias-disable;
};

&qup_uart5_rx {
	drive-strength = <2>;
	bias-pull-up;
};

&qup_uart7_cts {
	/*
	 * Configure a bias-bus-hold on CTS to lower power
	 * usage when Bluetooth is turned off. Bus hold will
	 * maintain a low power state regardless of whether
	 * the Bluetooth module drives the pin in either
	 * direction or leaves the pin fully unpowered.
	 */
	bias-bus-hold;
};

&qup_uart7_rts {
	/* We'll drive RTS, so no pull */
	drive-strength = <2>;
	bias-disable;
};

&qup_uart7_tx {
	/* We'll drive TX, so no pull */
	drive-strength = <2>;
	bias-disable;
};

&qup_uart7_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).
	 */
	bias-pull-up;
};

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

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

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

&sdc1_rclk {
	bias-pull-down;
};

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

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

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

&tlmm {
	amp_en: amp-en-state {
		pins = "gpio63";
		bias-pull-down;
		drive-strength = <2>;
	};

	bt_en: bt-en-state {
		pins = "gpio85";
		function = "gpio";
		output-low;
		bias-disable;
	};

	nvme_pwren: nvme-pwren-state {
		function = "gpio";
	};

	pcie1_reset_n: pcie1-reset-n-state {
		pins = "gpio2";
		function = "gpio";

		drive-strength = <16>;
		output-low;
		bias-disable;
	};

	pcie1_wake_n: pcie1-wake-n-state {
		pins = "gpio3";
		function = "gpio";

		drive-strength = <2>;
		bias-pull-up;
	};

	qup_uart7_sleep_cts: qup-uart7-sleep-cts-state {
		pins = "gpio28";
		function = "gpio";
		/*
		 * Configure a bias-bus-hold on CTS to lower power
		 * usage when Bluetooth is turned off. Bus hold will
		 * maintain a low power state regardless of whether
		 * the Bluetooth module drives the pin in either
		 * direction or leaves the pin fully unpowered.
		 */
		bias-bus-hold;
	};

	qup_uart7_sleep_rts: qup-uart7-sleep-rts-state {
		pins = "gpio29";
		function = "gpio";
		/*
		 * 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).
		 */
		bias-pull-down;
	};

	qup_uart7_sleep_tx: qup-uart7-sleep-tx-state {
		pins = "gpio30";
		function = "gpio";
		/*
		 * Configure pull-up on TX when it isn't actively driven
		 * to prevent BT SoC from receiving garbage during sleep.
		 */
		bias-pull-up;
	};

	qup_uart7_sleep_rx: qup-uart7-sleep-rx-state {
		pins = "gpio31";
		function = "gpio";
		/*
		 * 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.
		 */
		bias-pull-up;
	};

	sd_cd: sd-cd-state {
		pins = "gpio91";
		function = "gpio";
		bias-pull-up;
	};

	sw_ctrl: sw-ctrl-state {
		pins = "gpio86";
		function = "gpio";
		bias-pull-down;
	};

	wcd_reset_n: wcd-reset-n-state {
		pins = "gpio83";
		function = "gpio";
		drive-strength = <8>;
	};

	wcd_reset_n_sleep: wcd-reset-n-sleep-state {
		pins = "gpio83";
		function = "gpio";
		drive-strength = <8>;
		bias-disable;
	};
};
