[PATCH v3] arm64: dts: qcom: shikra: Add WCN clock to wcn3988-pmu node
From: Yepuri Siddu
Date: Thu Oct 01 2026 - 01:58:30 EST
clk_smd_rpm_handoff() votes both active and sleep RPM resource states
for every clock, keeping them non-zero until a consumer takes over. On
Shikra, the BT WCN clock was surviving on these proxy votes. With proxy
vote removal on QCM2290, the sleep vote is no longer held, which means
the WCN clock must be explicitly declared in DTS so the wcn3988-pmu
driver can manage it during power sequencing.
Place the clock in the wcn3988-pmu node since the PMU driver owns the
WCN power sequencing. CQM SOM uses RPM_SMD_RF_CLK2 while IQS SOM uses
RPM_SMD_RF_CLK1, reflecting the WCN clock assignments on each board
variant.
Signed-off-by: Yepuri Siddu <yepuri.siddu@xxxxxxxxxxxxxxxx>
---
clk_smd_rpm_handoff() votes both active and sleep RPM resource states for
every clock, keeping them non-zero until a consumer takes over. On Shikra,
the BT WCN clock was surviving on these proxy votes. With proxy vote
removal on QCM2290 [1], the sleep vote is no longer held, which means the
WCN clock must be explicitly declared in DTS so the wcn3988-pmu driver
can manage it during power sequencing.
The clock is added to the wcn3988-pmu node in Shikra DTS. CQM SOM uses
RPM_SMD_RF_CLK2 while IQS SOM uses RPM_SMD_RF_CLK1, reflecting the WCN
clock assignments on each board variant.
Validations:
- BT enable/disable verified on Shikra CQM, CQS and IQS EVK boards.
- Confirmed WCN clock voted on BT enable and released on BT disable.
[1] https://lore.kernel.org/all/20260910-clk-smd-rpm-skip-proxy-v1-1-1cb5694a99d9@xxxxxxxxxxxxxxxx/
---
Changes in v3:
- Merge technical details from cover letter into commit message per Bjorn's review.
- Link to v2: https://patch.msgid.link/20260929-bt-wcn-clk-enable-v2-1-7a90902f3df5@xxxxxxxxxxxxxxxx
Changes in v2:
- Move clock property to wcn3988-pmu node instead of bluetooth node.
- Drop hci_qca driver changes; clock is managed by the PMU driver.
- Link to v1: https://patch.msgid.link/20260925-bt-wcn-clk-enable-v1-0-30bee88c4de4@xxxxxxxxxxxxxxxx
---
arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi | 2 ++
arch/arm64/boot/dts/qcom/shikra-iqs-som.dtsi | 2 ++
2 files changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi b/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi
index 8ac42ff625a0..48af2bb87cf3 100644
--- a/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi
+++ b/arch/arm64/boot/dts/qcom/shikra-cqm-som.dtsi
@@ -45,6 +45,8 @@ wcn3988-pmu {
vddrf-supply = <&pm4125_l10>;
vddch0-supply = <&pm4125_l22>;
+ clocks = <&rpmcc RPM_SMD_RF_CLK2>;
+
regulators {
vreg_pmu_io: ldo0 {
regulator-name = "vreg_pmu_io";
diff --git a/arch/arm64/boot/dts/qcom/shikra-iqs-som.dtsi b/arch/arm64/boot/dts/qcom/shikra-iqs-som.dtsi
index 4ff97945274d..90aceaa6e1e3 100644
--- a/arch/arm64/boot/dts/qcom/shikra-iqs-som.dtsi
+++ b/arch/arm64/boot/dts/qcom/shikra-iqs-som.dtsi
@@ -52,6 +52,8 @@ wcn3988-pmu {
vddrf-supply = <&pm8150_l8>;
vddch0-supply = <&vreg_wcn_3p3>;
+ clocks = <&rpmcc RPM_SMD_RF_CLK1>;
+
regulators {
vreg_pmu_io: ldo0 {
regulator-name = "vreg_pmu_io";
---
base-commit: 165768bb70265b5c38cf0b73fafd75be235f8b14
change-id: 20260925-bt-wcn-clk-enable-9de068334aa1
Best regards,
--
Yepuri Siddu <yepuri.siddu@xxxxxxxxxxxxxxxx>