diff mbox series

[v9,1/2] arm64: dts: qcom: qcs6490-rb3gen: add and enable BT node

Message ID 20250130183434.2394058-2-quic_janathot@quicinc.com (mailing list archive)
State New
Headers show
Series Enable Bluetooth on qcs6490-rb3gen2 board | expand

Commit Message

Janaki Ramaiah Thota Jan. 30, 2025, 6:34 p.m. UTC
Add the PMU node for WCN6750 present on the qcs6490-rb3gen
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: Janaki Ramaiah Thota <quic_janathot@quicinc.com>
---
 arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts | 167 ++++++++++++++++++-
 1 file changed, 166 insertions(+), 1 deletion(-)

Comments

Janaki Ramaiah Thota Feb. 5, 2025, 11:55 a.m. UTC | #1
Hi All,

On 1/31/2025 4:33 PM, Janaki Ramaiah Thota wrote:
> Add the PMU node for WCN6750 present on the qcs6490-rb3gen
> 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: Janaki Ramaiah Thota <quic_janathot@quicinc.com>
> ---
>   arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts | 167 ++++++++++++++++++-
>   1 file changed, 166 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts b/arch/arm64/ 
> boot/dts/qcom/qcs6490-rb3gen2.dts
> index 7a36c90ad4ec..0a3243499dfb 100644
> --- a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
> +++ b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
> @@ -1,6 +1,6 @@
>   // 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/;
> @@ -34,6 +34,7 @@ / {
>        aliases {
>           serial0 = &uart5;
> +        serial1 = &uart7;
>       };
>        chosen {
> @@ -218,6 +219,63 @@ vph_pwr: vph-pwr-regulator {
>           regulator-min-microvolt = <3700000>;
>           regulator-max-microvolt = <3700000>;
>       };
> +
> +    wcn6750-pmu {
> +        compatible = "qcom,wcn6750-pmu";
> +        pinctrl-names = "default";
> +        pinctrl-0 = <&bt_en>;
> +        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 {
> @@ -799,6 +857,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";
>   };
> @@ -842,12 +933,86 @@ &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";
>   };

Could you please help to review this change? Thanks!

Regards,
Janakiram
Krzysztof Kozlowski Feb. 5, 2025, 12:31 p.m. UTC | #2
On 05/02/2025 12:55, Janaki Ramaiah Thota wrote:

[trim entire unrelated stuff]

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

Please kindly trim the replies from unnecessary context. It makes it
much easier to find new content.

>> +};
>> +
>>   &usb_1 {
>>       status = "okay";
>>   };
> 
> Could you please help to review this change? Thanks!

You sent it while there was merge window. You ping us after 6 days, but
counting merge window only 3 days. 3 days, instead of expected 14.

Please relax, and help out by reviewing other patches on the mailing
lists in order to relieve the burden of maintainers and move your
patches higher up the list.


Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
index 7a36c90ad4ec..0a3243499dfb 100644
--- a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
+++ b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts
@@ -1,6 +1,6 @@ 
 // 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/;
@@ -34,6 +34,7 @@  / {
 
 	aliases {
 		serial0 = &uart5;
+		serial1 = &uart7;
 	};
 
 	chosen {
@@ -218,6 +219,63 @@  vph_pwr: vph-pwr-regulator {
 		regulator-min-microvolt = <3700000>;
 		regulator-max-microvolt = <3700000>;
 	};
+
+	wcn6750-pmu {
+		compatible = "qcom,wcn6750-pmu";
+		pinctrl-names = "default";
+		pinctrl-0 = <&bt_en>;
+		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 {
@@ -799,6 +857,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";
 };
@@ -842,12 +933,86 @@  &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";
 };