Commit 914d16b4 authored by Janaki Ramaiah Thota's avatar Janaki Ramaiah Thota Committed by Bjorn Andersson
Browse files

arm64: dts: qcom: qcs6490-rb3gen2: add and enable BT node



Add the PMU node for WCN6750 present on the qcs6490-rb3gen2
board and assign its power outputs to the Bluetooth module.

In WCN6750 module sw_ctrl and wifi-enable pins are handled
in the wifi controller firmware. Therefore, it is not required
to have those pins' entries in the PMU node.

Signed-off-by: default avatarJanaki Ramaiah Thota <quic_janathot@quicinc.com>
Reviewed-by: default avatarKonrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20250221171014.120946-2-quic_janathot@quicinc.com


Signed-off-by: default avatarBjorn Andersson <andersson@kernel.org>
parent c24db2c1
Loading
Loading
Loading
Loading
+170 −1
Original line number Diff line number Diff line
// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
 * Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
 */

/dts-v1/;
@@ -36,6 +36,7 @@ / {

	aliases {
		serial0 = &uart5;
		serial1 = &uart7;
	};

	chosen {
@@ -258,6 +259,63 @@ vph_pwr: vph-pwr-regulator {
		regulator-min-microvolt = <3700000>;
		regulator-max-microvolt = <3700000>;
	};

	wcn6750-pmu {
		compatible = "qcom,wcn6750-pmu";
		pinctrl-0 = <&bt_en>;
		pinctrl-names = "default";
		vddaon-supply = <&vreg_s7b_0p972>;
		vddasd-supply = <&vreg_l11c_2p8>;
		vddpmu-supply = <&vreg_s7b_0p972>;
		vddrfa0p8-supply = <&vreg_s7b_0p972>;
		vddrfa1p2-supply = <&vreg_s8b_1p272>;
		vddrfa1p7-supply = <&vreg_s1b_1p872>;
		vddrfa2p2-supply = <&vreg_s1c_2p19>;

		bt-enable-gpios = <&tlmm 85 GPIO_ACTIVE_HIGH>;

		regulators {
			vreg_pmu_rfa_cmn: ldo0 {
				regulator-name = "vreg_pmu_rfa_cmn";
			};

			vreg_pmu_aon_0p59: ldo1 {
				regulator-name = "vreg_pmu_aon_0p59";
			};

			vreg_pmu_wlcx_0p8: ldo2 {
				regulator-name = "vreg_pmu_wlcx_0p8";
			};

			vreg_pmu_wlmx_0p85: ldo3 {
				regulator-name = "vreg_pmu_wlmx_0p85";
			};

			vreg_pmu_btcmx_0p85: ldo4 {
				regulator-name = "vreg_pmu_btcmx_0p85";
			};

			vreg_pmu_rfa_0p8: ldo5 {
				regulator-name = "vreg_pmu_rfa_0p8";
			};

			vreg_pmu_rfa_1p2: ldo6 {
				regulator-name = "vreg_pmu_rfa_1p2";
			};

			vreg_pmu_rfa_1p7: ldo7 {
				regulator-name = "vreg_pmu_rfa_1p7";
			};

			vreg_pmu_pcie_0p9: ldo8 {
				regulator-name = "vreg_pmu_pcie_0p9";
			};

			vreg_pmu_pcie_1p8: ldo9 {
				regulator-name = "vreg_pmu_pcie_1p8";
			};
		};
	};
};

&apps_rsc {
@@ -907,6 +965,39 @@ &pon_resin {
	status = "okay";
};

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

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

&qupv3_id_0 {
	status = "okay";
};
@@ -950,12 +1041,90 @@ &sdhc_2 {
&tlmm {
	gpio-reserved-ranges = <32 2>, /* ADSP */
			       <48 4>; /* NFC */

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

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

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

&uart5 {
	status = "okay";
};

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

	status = "okay";

	bluetooth: bluetooth {
		compatible = "qcom,wcn6750-bt";
		vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
		vddaon-supply = <&vreg_pmu_aon_0p59>;
		vddbtcmx-supply = <&vreg_pmu_btcmx_0p85>;
		vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
		vddrfa1p7-supply = <&vreg_pmu_rfa_1p7>;
		vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
		max-speed = <3200000>;
	};
};

&usb_1 {
	status = "okay";
};