Skip to content

Commit 6fb03dd

Browse files
lumagandersson
authored andcommitted
clk: qcom: cpu-8996: fix PLL configuration sequence
Switch both power and performance clocks to the GPLL0/2 (sys_apcs_aux) before PLL configuration. Switch them to the ACD afterwards. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> Signed-off-by: Bjorn Andersson <andersson@kernel.org> Link: https://lore.kernel.org/r/20230113120544.59320-11-dmitry.baryshkov@linaro.org
1 parent fa0bc05 commit 6fb03dd

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

drivers/clk/qcom/clk-cpu-8996.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,13 +432,27 @@ static int qcom_cpu_clk_msm8996_register_clks(struct device *dev,
432432
{
433433
int i, ret;
434434

435+
/* Select GPLL0 for 300MHz for both clusters */
436+
regmap_write(regmap, PERFCL_REG_OFFSET + MUX_OFFSET, 0xc);
437+
regmap_write(regmap, PWRCL_REG_OFFSET + MUX_OFFSET, 0xc);
438+
439+
/* Ensure write goes through before PLLs are reconfigured */
440+
udelay(5);
441+
435442
clk_alpha_pll_configure(&pwrcl_pll, regmap, &hfpll_config);
436443
clk_alpha_pll_configure(&perfcl_pll, regmap, &hfpll_config);
437444
clk_alpha_pll_configure(&pwrcl_alt_pll, regmap, &altpll_config);
438445
clk_alpha_pll_configure(&perfcl_alt_pll, regmap, &altpll_config);
439446

447+
/* Wait for PLL(s) to lock */
448+
udelay(50);
449+
440450
qcom_cpu_clk_msm8996_acd_init(regmap);
441451

452+
/* Switch clusters to use the ACD leg */
453+
regmap_write(regmap, PWRCL_REG_OFFSET + MUX_OFFSET, 0x2);
454+
regmap_write(regmap, PERFCL_REG_OFFSET + MUX_OFFSET, 0x2);
455+
442456
for (i = 0; i < ARRAY_SIZE(cpu_msm8996_hw_clks); i++) {
443457
ret = devm_clk_hw_register(dev, cpu_msm8996_hw_clks[i]);
444458
if (ret)

0 commit comments

Comments
 (0)