clk: qcom: smd-rpm: Make BI_TCXO_AO critical
authorKonrad Dybcio <konrad.dybcio@linaro.org>
Mon, 1 May 2023 12:57:13 +0000 (14:57 +0200)
committerBjorn Andersson <andersson@kernel.org>
Thu, 25 May 2023 02:35:27 +0000 (19:35 -0700)
We should never let go of the active-only XO vote, as otherwise the
RPM may decide that there are no online users and it can be shut down,
resulting in a total, uncontrolled system collapse.

Guarantee this through adding the CLK_IS_CRITICAL flag.

Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Tested-by: Matti Lehtimäki <matti.lehtimaki@gmail.com>
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20230501-topic-rpmcc_xo_a-v1-3-93f18e47b607@linaro.org
drivers/clk/qcom/clk-smd-rpm.c

index 075c88bac8738388a2c9123a74e51f3615258cff..a9a58af351913f53e2f00145c2317fc491b446ee 100644 (file)
@@ -440,7 +440,8 @@ static const struct clk_ops clk_smd_rpm_branch_ops = {
        .recalc_rate    = clk_smd_rpm_recalc_rate,
 };
 
-DEFINE_CLK_SMD_RPM_BRANCH_A(bi_tcxo, QCOM_SMD_RPM_MISC_CLK, 0, 19200000, 0);
+/* Disabling BI_TCXO_AO could gate the root clock source of the entire system. */
+DEFINE_CLK_SMD_RPM_BRANCH_A(bi_tcxo, QCOM_SMD_RPM_MISC_CLK, 0, 19200000, CLK_IS_CRITICAL);
 DEFINE_CLK_SMD_RPM_BRANCH(qdss, QCOM_SMD_RPM_MISC_CLK, 1, 19200000);
 DEFINE_CLK_SMD_RPM_QDSS(qdss, QCOM_SMD_RPM_MISC_CLK, 1);
 DEFINE_CLK_SMD_RPM_BRANCH_A(bimc_freq_log, QCOM_SMD_RPM_MISC_CLK, 4, 1, 0);