// 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"

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

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

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

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

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

&pcie1 {
	status = "okay";
	perst-gpio = <&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 {
		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>;
};

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

&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_clk_sleep {
	drive-strength = <2>;
};

&lpass_dmic01_data {
	bias-pull-down;
};

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

&lpass_dmic23_clk_sleep {
	drive-strength = <2>;
};

&lpass_dmic23_data {
	bias-pull-down;
};

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

&lpass_rx_swr_clk_sleep {
	bias-pull-down;
};

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

&lpass_rx_swr_data_sleep {
	bias-pull-down;
};

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

&lpass_tx_swr_clk_sleep {
	bias-pull-down;
};

&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-default {
		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 {
	bt_en: bt-en {
		pins = "gpio85";
		function = "gpio";
		output-low;
		bias-disable;
	};

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

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

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

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

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

	qup_uart7_sleep_cts: qup-uart7-sleep-cts {
		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 {
		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 {
		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 {
		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 {
		pins = "gpio91";
		function = "gpio";
		bias-pull-up;
	};

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