clk: qcom: apcs-msm8916: Flag a53mux instead of a53pll as critical
authorShawn Guo <shawn.guo@linaro.org>
Sun, 4 Jul 2021 02:40:29 +0000 (10:40 +0800)
committerStephen Boyd <sboyd@kernel.org>
Fri, 6 Aug 2021 01:52:11 +0000 (18:52 -0700)
The clock source for MSM8916 cpu cores is like below.

                        |\
         a53pll --------| \ a53mux     +------+
                        | |------------| cpus |
     gpll0_vote --------| /            +------+
                        |/

So a53mux rather than a53pll is actually the parent clock of cpu cores.
It makes more sense to flag a53mux as critical instead, so that when
either a53pll or gpll0_vote is used by cpu cores, the clock will be kept
enabled while the other can be disabled.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Link: https://lore.kernel.org/r/20210704024032.11559-2-shawn.guo@linaro.org
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/qcom/a53-pll.c
drivers/clk/qcom/apcs-msm8916.c

index af6ac17..d6756bd 100644 (file)
@@ -70,7 +70,6 @@ static int qcom_a53pll_probe(struct platform_device *pdev)
        init.parent_names = (const char *[]){ "xo" };
        init.num_parents = 1;
        init.ops = &clk_pll_sr2_ops;
-       init.flags = CLK_IS_CRITICAL;
        pll->clkr.hw.init = &init;
 
        ret = devm_clk_register_regmap(dev, &pll->clkr);
index cf69a97..d7ac6d6 100644 (file)
@@ -65,7 +65,7 @@ static int qcom_apcs_msm8916_clk_probe(struct platform_device *pdev)
        init.parent_data = pdata;
        init.num_parents = ARRAY_SIZE(pdata);
        init.ops = &clk_regmap_mux_div_ops;
-       init.flags = CLK_SET_RATE_PARENT;
+       init.flags = CLK_IS_CRITICAL | CLK_SET_RATE_PARENT;
 
        a53cc->clkr.hw.init = &init;
        a53cc->clkr.regmap = regmap;