From c27f38aec0019394c17f1895aac862d5a374f849 Mon Sep 17 00:00:00 2001 From: Imran Shaik Date: Thu, 10 Sep 2026 17:54:37 +0530 Subject: [PATCH 1/6] Revert "FROMLIST: dt-bindings: clock: qcom,rpmcc: Add Qualcomm Shikra SoC RPMCC" This reverts commit 521561dfdec5b7cd5fbad8697a4763034293eb55. --- Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml b/Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml index cd65e1c1a4750..90cd3feab5fa0 100644 --- a/Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml +++ b/Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml @@ -46,7 +46,6 @@ properties: - qcom,rpmcc-qcs404 - qcom,rpmcc-sdm429 - qcom,rpmcc-sdm660 - - qcom,rpmcc-shikra - qcom,rpmcc-sm6115 - qcom,rpmcc-sm6125 - qcom,rpmcc-sm6375 @@ -127,7 +126,6 @@ allOf: - qcom,rpmcc-qcs404 - qcom,rpmcc-sdm429 - qcom,rpmcc-sdm660 - - qcom,rpmcc-shikra - qcom,rpmcc-sm6115 - qcom,rpmcc-sm6125 From 2c88c19a9713f910986d094bd8e4fdf1df63f24a Mon Sep 17 00:00:00 2001 From: Imran Shaik Date: Thu, 10 Sep 2026 17:54:13 +0530 Subject: [PATCH 2/6] Revert "FROMLIST: clk: qcom: smd-rpm: Add support for RPM clocks on Qualcomm Shikra SoC" This reverts commit 2d56ae2f8658d097b060adf4c479de6b40b481b1. --- drivers/clk/qcom/clk-smd-rpm.c | 39 ---------------------------------- 1 file changed, 39 deletions(-) diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c index d0d19bf0616ef..103db984a40b9 100644 --- a/drivers/clk/qcom/clk-smd-rpm.c +++ b/drivers/clk/qcom/clk-smd-rpm.c @@ -1289,44 +1289,6 @@ static const struct rpm_smd_clk_desc rpm_clk_qcm2290 = { .num_icc_clks = ARRAY_SIZE(qcm2290_icc_clks) }; -static struct clk_smd_rpm *shikra_clks[] = { - [RPM_SMD_XO_CLK_SRC] = &clk_smd_rpm_branch_bi_tcxo, - [RPM_SMD_XO_A_CLK_SRC] = &clk_smd_rpm_branch_bi_tcxo_a, - [RPM_SMD_QDSS_CLK] = &clk_smd_rpm_branch_qdss_clk, - [RPM_SMD_QDSS_A_CLK] = &clk_smd_rpm_branch_qdss_a_clk, - [RPM_SMD_LN_BB_CLK2] = &clk_smd_rpm_ln_bb_clk2, - [RPM_SMD_LN_BB_CLK2_A] = &clk_smd_rpm_ln_bb_clk2_a, - [RPM_SMD_RF_CLK1] = &clk_smd_rpm_rf_clk1, - [RPM_SMD_RF_CLK1_A] = &clk_smd_rpm_rf_clk1_a, - [RPM_SMD_RF_CLK2] = &clk_smd_rpm_rf_clk2, - [RPM_SMD_RF_CLK2_A] = &clk_smd_rpm_rf_clk2_a, - [RPM_SMD_RF_CLK3] = &clk_smd_rpm_38m4_rf_clk3, - [RPM_SMD_RF_CLK3_A] = &clk_smd_rpm_38m4_rf_clk3_a, - [RPM_SMD_IPA_CLK] = &clk_smd_rpm_ipa_clk, - [RPM_SMD_IPA_A_CLK] = &clk_smd_rpm_ipa_a_clk, - [RPM_SMD_SNOC_PERIPH_CLK] = &clk_smd_rpm_bus_0_snoc_periph_clk, - [RPM_SMD_SNOC_PERIPH_A_CLK] = &clk_smd_rpm_bus_0_snoc_periph_a_clk, - [RPM_SMD_SNOC_LPASS_CLK] = &clk_smd_rpm_bus_5_snoc_lpass_clk, - [RPM_SMD_SNOC_LPASS_A_CLK] = &clk_smd_rpm_bus_5_snoc_lpass_a_clk, - [RPM_SMD_CE1_CLK] = &clk_smd_rpm_ce1_clk, - [RPM_SMD_CE1_A_CLK] = &clk_smd_rpm_ce1_a_clk, - [RPM_SMD_QPIC_CLK] = &clk_smd_rpm_qpic_clk, - [RPM_SMD_QPIC_CLK_A] = &clk_smd_rpm_qpic_a_clk, - [RPM_SMD_HWKM_CLK] = &clk_smd_rpm_hwkm_clk, - [RPM_SMD_HWKM_A_CLK] = &clk_smd_rpm_hwkm_a_clk, - [RPM_SMD_PKA_CLK] = &clk_smd_rpm_pka_clk, - [RPM_SMD_PKA_A_CLK] = &clk_smd_rpm_pka_a_clk, - [RPM_SMD_BIMC_GPU_CLK] = &clk_smd_rpm_bimc_gpu_clk, - [RPM_SMD_BIMC_GPU_A_CLK] = &clk_smd_rpm_bimc_gpu_a_clk, -}; - -static const struct rpm_smd_clk_desc rpm_clk_shikra = { - .clks = shikra_clks, - .num_clks = ARRAY_SIZE(shikra_clks), - .icc_clks = qcm2290_icc_clks, - .num_icc_clks = ARRAY_SIZE(qcm2290_icc_clks) -}; - static const struct of_device_id rpm_smd_clk_match_table[] = { { .compatible = "qcom,rpmcc-mdm9607", .data = &rpm_clk_mdm9607 }, { .compatible = "qcom,rpmcc-msm8226", .data = &rpm_clk_msm8974 }, @@ -1347,7 +1309,6 @@ static const struct of_device_id rpm_smd_clk_match_table[] = { { .compatible = "qcom,rpmcc-qcs404", .data = &rpm_clk_qcs404 }, { .compatible = "qcom,rpmcc-sdm429", .data = &rpm_clk_sdm429 }, { .compatible = "qcom,rpmcc-sdm660", .data = &rpm_clk_sdm660 }, - { .compatible = "qcom,rpmcc-shikra", .data = &rpm_clk_shikra }, { .compatible = "qcom,rpmcc-sm6115", .data = &rpm_clk_sm6115 }, { .compatible = "qcom,rpmcc-sm6125", .data = &rpm_clk_sm6125 }, { .compatible = "qcom,rpmcc-sm6375", .data = &rpm_clk_sm6375 }, From 66c375dbe6ce857919bd6a14b09f52f7dd73ff9b Mon Sep 17 00:00:00 2001 From: Imran Shaik Date: Mon, 8 Jun 2026 17:51:51 +0530 Subject: [PATCH 3/6] UPSTREAM: clk: qcom: smd-rpm: Add missing RF_CLK1/RF_CLK2 clocks support on Agatti Add support for missing RF_CLK1/RF_CLK2 clocks on Qualcomm Agatti (QCM2290) SoC. Signed-off-by: Imran Shaik Reviewed-by: Dmitry Baryshkov Reviewed-by: Taniya Das Reviewed-by: Jagadeesh Kona Reviewed-by: Konrad Dybcio Link: https://lore.kernel.org/r/20260608-shikra-gcc-rpmcc-clks-v5-3-94cefe092ee3@oss.qualcomm.com Signed-off-by: Bjorn Andersson --- drivers/clk/qcom/clk-smd-rpm.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c index 103db984a40b9..0b624ed4715c7 100644 --- a/drivers/clk/qcom/clk-smd-rpm.c +++ b/drivers/clk/qcom/clk-smd-rpm.c @@ -495,6 +495,7 @@ DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(rf_clk2, 5, 19200000); DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(rf_clk3, 6, 19200000); DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(ln_bb_clk, 8, 19200000); +DEFINE_CLK_SMD_RPM_XO_BUFFER_PREFIX(38m4_, rf_clk2, 5, 38400000); DEFINE_CLK_SMD_RPM_XO_BUFFER_PREFIX(38m4_, rf_clk3, 6, 38400000); DEFINE_CLK_SMD_RPM_XO_BUFFER_PINCTRL(cxo_d0, 1, 19200000); @@ -1262,6 +1263,10 @@ static struct clk_smd_rpm *qcm2290_clks[] = { [RPM_SMD_QDSS_A_CLK] = &clk_smd_rpm_branch_qdss_a_clk, [RPM_SMD_LN_BB_CLK2] = &clk_smd_rpm_ln_bb_clk2, [RPM_SMD_LN_BB_CLK2_A] = &clk_smd_rpm_ln_bb_clk2_a, + [RPM_SMD_RF_CLK1] = &clk_smd_rpm_rf_clk1, + [RPM_SMD_RF_CLK1_A] = &clk_smd_rpm_rf_clk1_a, + [RPM_SMD_RF_CLK2] = &clk_smd_rpm_38m4_rf_clk2, + [RPM_SMD_RF_CLK2_A] = &clk_smd_rpm_38m4_rf_clk2_a, [RPM_SMD_RF_CLK3] = &clk_smd_rpm_38m4_rf_clk3, [RPM_SMD_RF_CLK3_A] = &clk_smd_rpm_38m4_rf_clk3_a, [RPM_SMD_IPA_CLK] = &clk_smd_rpm_ipa_clk, From 5bcdebe161b9e2eafa008c63619a615885273e4e Mon Sep 17 00:00:00 2001 From: Imran Shaik Date: Mon, 8 Jun 2026 17:51:49 +0530 Subject: [PATCH 4/6] UPSTREAM: dt-bindings: clock: qcom,rpmcc: Add Qualcomm Shikra SoC RPMCC Add bindings documentation for RPM clock controller on Qualcomm Shikra SoC. The Qualcomm Shikra RPMCC has the clocks same as Agatti (QCM2290) RPMCC. Hence, add support to use the QCM2290 RPMCC compatible as fallback for Shikra RPMCC. Reviewed-by: Krzysztof Kozlowski Signed-off-by: Imran Shaik Link: https://lore.kernel.org/r/20260608-shikra-gcc-rpmcc-clks-v5-1-94cefe092ee3@oss.qualcomm.com Signed-off-by: Bjorn Andersson --- .../devicetree/bindings/clock/qcom,rpmcc.yaml | 65 ++++++++++--------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml b/Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml index 90cd3feab5fa0..807542a523399 100644 --- a/Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml +++ b/Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml @@ -21,35 +21,41 @@ description: | properties: compatible: - items: - - enum: - - qcom,rpmcc-apq8060 - - qcom,rpmcc-apq8064 - - qcom,rpmcc-ipq806x - - qcom,rpmcc-mdm9607 - - qcom,rpmcc-msm8226 - - qcom,rpmcc-msm8660 - - qcom,rpmcc-msm8909 - - qcom,rpmcc-msm8916 - - qcom,rpmcc-msm8917 - - qcom,rpmcc-msm8936 - - qcom,rpmcc-msm8937 - - qcom,rpmcc-msm8940 - - qcom,rpmcc-msm8953 - - qcom,rpmcc-msm8974 - - qcom,rpmcc-msm8976 - - qcom,rpmcc-msm8992 - - qcom,rpmcc-msm8994 - - qcom,rpmcc-msm8996 - - qcom,rpmcc-msm8998 - - qcom,rpmcc-qcm2290 - - qcom,rpmcc-qcs404 - - qcom,rpmcc-sdm429 - - qcom,rpmcc-sdm660 - - qcom,rpmcc-sm6115 - - qcom,rpmcc-sm6125 - - qcom,rpmcc-sm6375 - - const: qcom,rpmcc + oneOf: + - items: + - enum: + - qcom,rpmcc-apq8060 + - qcom,rpmcc-apq8064 + - qcom,rpmcc-ipq806x + - qcom,rpmcc-mdm9607 + - qcom,rpmcc-msm8226 + - qcom,rpmcc-msm8660 + - qcom,rpmcc-msm8909 + - qcom,rpmcc-msm8916 + - qcom,rpmcc-msm8917 + - qcom,rpmcc-msm8936 + - qcom,rpmcc-msm8937 + - qcom,rpmcc-msm8940 + - qcom,rpmcc-msm8953 + - qcom,rpmcc-msm8974 + - qcom,rpmcc-msm8976 + - qcom,rpmcc-msm8992 + - qcom,rpmcc-msm8994 + - qcom,rpmcc-msm8996 + - qcom,rpmcc-msm8998 + - qcom,rpmcc-qcm2290 + - qcom,rpmcc-qcs404 + - qcom,rpmcc-sdm429 + - qcom,rpmcc-sdm660 + - qcom,rpmcc-sm6115 + - qcom,rpmcc-sm6125 + - qcom,rpmcc-sm6375 + - const: qcom,rpmcc + - items: + - enum: + - qcom,rpmcc-shikra + - const: qcom,rpmcc-qcm2290 + - const: qcom,rpmcc '#clock-cells': const: 1 @@ -126,6 +132,7 @@ allOf: - qcom,rpmcc-qcs404 - qcom,rpmcc-sdm429 - qcom,rpmcc-sdm660 + - qcom,rpmcc-shikra - qcom,rpmcc-sm6115 - qcom,rpmcc-sm6125 From 613b53fb4e2ecebbe2e5510e729b25e84dfec37f Mon Sep 17 00:00:00 2001 From: Imran Shaik Date: Thu, 10 Sep 2026 18:01:45 +0530 Subject: [PATCH 5/6] UPSTREAM: arm64: dts: qcom: shikra: Update RPMCC node Update Shikra RPMCC node to use the Agatti (QCM2290) RPMCC as fallback compatible. Link: https://lore.kernel.org/r/20260612-shikra-dt-v6-2-6b6cb58db477@oss.qualcomm.com Signed-off-by: Imran Shaik --- arch/arm64/boot/dts/qcom/shikra.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/shikra.dtsi b/arch/arm64/boot/dts/qcom/shikra.dtsi index 4509a1f6c8ef8..435d4773a1723 100644 --- a/arch/arm64/boot/dts/qcom/shikra.dtsi +++ b/arch/arm64/boot/dts/qcom/shikra.dtsi @@ -378,7 +378,7 @@ qcom,glink-channels = "rpm_requests"; rpmcc: clock-controller { - compatible = "qcom,rpmcc-shikra", "qcom,rpmcc"; + compatible = "qcom,rpmcc-shikra", "qcom,rpmcc-qcm2290", "qcom,rpmcc"; clocks = <&xo_board>; clock-names = "xo"; #clock-cells = <1>; From 90970b94091e4dc0fb6b6e37899f5c2eb07b4707 Mon Sep 17 00:00:00 2001 From: Imran Shaik Date: Thu, 10 Sep 2026 17:39:55 +0530 Subject: [PATCH 6/6] FROMLIST: clk: qcom: smd-rpm: Skip proxy votes on clocks for QCM2290 clk_smd_rpm_handoff() votes both active and sleep RPM resource states for every clock, keeping them non-zero until a consumer takes over. If there is no consumer, those clocks will remain active in the idle scenario as well, and the sleep vote is never cleared, blocking XO shutdown. Introduce the skip_clks_handoff flag to handle this on QCM2290 clocks, keeping other targets unaffected. Link: https://lore.kernel.org/r/20260910-clk-smd-rpm-skip-proxy-v1-1-1cb5694a99d9@oss.qualcomm.com Fixes: 00f64b58874e ("clk: qcom: Add support for SMD-RPM Clocks") Signed-off-by: Imran Shaik --- drivers/clk/qcom/clk-smd-rpm.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c index 0b624ed4715c7..2dfab2f247ab9 100644 --- a/drivers/clk/qcom/clk-smd-rpm.c +++ b/drivers/clk/qcom/clk-smd-rpm.c @@ -183,6 +183,7 @@ struct rpm_smd_clk_desc { const struct clk_smd_rpm ** const icc_clks; size_t num_icc_clks; bool scaling_before_handover; + bool skip_clks_handoff; }; static DEFINE_MUTEX(rpm_smd_clk_lock); @@ -1291,7 +1292,8 @@ static const struct rpm_smd_clk_desc rpm_clk_qcm2290 = { .clks = qcm2290_clks, .num_clks = ARRAY_SIZE(qcm2290_clks), .icc_clks = qcm2290_icc_clks, - .num_icc_clks = ARRAY_SIZE(qcm2290_icc_clks) + .num_icc_clks = ARRAY_SIZE(qcm2290_icc_clks), + .skip_clks_handoff = true, }; static const struct of_device_id rpm_smd_clk_match_table[] = { @@ -1369,13 +1371,15 @@ static int rpm_smd_clk_probe(struct platform_device *pdev) goto err; } - for (i = 0; i < num_clks; i++) { - if (!rpm_smd_clks[i]) - continue; + if (!desc->skip_clks_handoff) { + for (i = 0; i < num_clks; i++) { + if (!rpm_smd_clks[i]) + continue; - ret = clk_smd_rpm_handoff(rpm_smd_clks[i]); - if (ret) - goto err; + ret = clk_smd_rpm_handoff(rpm_smd_clks[i]); + if (ret) + goto err; + } } for (i = 0; i < desc->num_icc_clks; i++) {