]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
clk: qcom: rpmh: Add support for RPMH clocks on Milos
authorLuca Weiss <luca.weiss@fairphone.com>
Mon, 7 Jul 2025 09:56:38 +0000 (11:56 +0200)
committerBjorn Andersson <andersson@kernel.org>
Thu, 17 Jul 2025 04:15:25 +0000 (23:15 -0500)
Add support for RPMH clocks on Milos SoCs.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
Link: https://lore.kernel.org/r/20250707-sm7635-clocks-misc-v2-2-b49f19055768@fairphone.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
drivers/clk/qcom/clk-rpmh.c

index 74b052ac1ee10bdeeb59880019fb06ad58db3f74..1496fb3de4be8db0cae13e6358745660f286267a 100644 (file)
@@ -386,6 +386,8 @@ DEFINE_CLK_RPMH_VRM(clk6, _a2, "clka6", 2);
 DEFINE_CLK_RPMH_VRM(clk7, _a2, "clka7", 2);
 DEFINE_CLK_RPMH_VRM(clk8, _a2, "clka8", 2);
 
+DEFINE_CLK_RPMH_VRM(clk7, _a4, "clka7", 4);
+
 DEFINE_CLK_RPMH_VRM(div_clk1, _div2, "divclka1", 2);
 
 DEFINE_CLK_RPMH_BCM(ce, "CE0");
@@ -541,6 +543,29 @@ static const struct clk_rpmh_desc clk_rpmh_sc8180x = {
        .num_clks = ARRAY_SIZE(sc8180x_rpmh_clocks),
 };
 
+static struct clk_hw *milos_rpmh_clocks[] = {
+       [RPMH_CXO_CLK]          = &clk_rpmh_bi_tcxo_div4.hw,
+       [RPMH_CXO_CLK_A]        = &clk_rpmh_bi_tcxo_div4_ao.hw,
+       [RPMH_LN_BB_CLK2]       = &clk_rpmh_clk7_a4.hw,
+       [RPMH_LN_BB_CLK2_A]     = &clk_rpmh_clk7_a4_ao.hw,
+       /*
+        * RPMH_LN_BB_CLK3(_A) and RPMH_LN_BB_CLK4(_A) are marked as optional
+        * downstream, but do not exist in cmd-db on SM7635, so skip them.
+        */
+       [RPMH_RF_CLK1]          = &clk_rpmh_clk1_a1.hw,
+       [RPMH_RF_CLK1_A]        = &clk_rpmh_clk1_a1_ao.hw,
+       [RPMH_RF_CLK2]          = &clk_rpmh_clk2_a1.hw,
+       [RPMH_RF_CLK2_A]        = &clk_rpmh_clk2_a1_ao.hw,
+       [RPMH_RF_CLK3]          = &clk_rpmh_clk3_a1.hw,
+       [RPMH_RF_CLK3_A]        = &clk_rpmh_clk3_a1_ao.hw,
+       [RPMH_IPA_CLK]          = &clk_rpmh_ipa.hw,
+};
+
+static const struct clk_rpmh_desc clk_rpmh_milos = {
+       .clks = milos_rpmh_clocks,
+       .num_clks = ARRAY_SIZE(milos_rpmh_clocks),
+};
+
 static struct clk_hw *sm8250_rpmh_clocks[] = {
        [RPMH_CXO_CLK]          = &clk_rpmh_bi_tcxo_div2.hw,
        [RPMH_CXO_CLK_A]        = &clk_rpmh_bi_tcxo_div2_ao.hw,
@@ -943,6 +968,7 @@ static int clk_rpmh_probe(struct platform_device *pdev)
 }
 
 static const struct of_device_id clk_rpmh_match_table[] = {
+       { .compatible = "qcom,milos-rpmh-clk", .data = &clk_rpmh_milos},
        { .compatible = "qcom,qcs615-rpmh-clk", .data = &clk_rpmh_qcs615},
        { .compatible = "qcom,qdu1000-rpmh-clk", .data = &clk_rpmh_qdu1000},
        { .compatible = "qcom,sa8775p-rpmh-clk", .data = &clk_rpmh_sa8775p},