Select the QUP and SDCC2 source table entry before
enabling its PLL.

UART rates from GPLL0_AUX2 must not vote GPLL6. SDCC2
needs a GPLL7 vote only for its GPLL7 table entry. This
avoids enabling unrelated PLLs during SPL clock setup.

Signed-off-by: Abhilash V <[email protected]>
---
 drivers/clk/qcom/clock-shikra.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/clk/qcom/clock-shikra.c b/drivers/clk/qcom/clock-shikra.c
index a74d529f4cf..72b6696127a 100644
--- a/drivers/clk/qcom/clock-shikra.c
+++ b/drivers/clk/qcom/clock-shikra.c
@@ -138,9 +138,9 @@ static ulong shikra_set_rate(struct clk *clk, ulong rate)
 
        switch (clk->id) {
        case GCC_QUPV3_WRAP0_S0_CLK:
-               /* The QUP clock table includes a GPLL6 source. */
-               clk_enable_gpll0(priv->base, &gpll6_vote_clk);
                freq = qcom_find_freq(ftbl_gcc_qupv3_wrap0_s0_clk_src, rate);
+               if (freq->src == CFG_CLK_SRC_GPLL6)
+                       clk_configure_enable_pll(priv->base, &gpll6_config);
                clk_rcg_set_rate_mnd(priv->base, 
GCC_QUPV3_WRAP0_S0_CLK_CMD_RCGR,
                                     freq->pre_div, freq->m, freq->n, 
freq->src, 16);
                return freq->freq;
@@ -152,8 +152,9 @@ static ulong shikra_set_rate(struct clk *clk, ulong rate)
                                     freq->pre_div, freq->m, freq->n, 
freq->src, 8);
                return freq->freq;
        case GCC_SDCC2_APPS_CLK:
-               clk_enable_gpll0(priv->base, &gpll7_vote_clk);
                freq = qcom_find_freq(ftbl_gcc_sdcc2_apps_clk_src, rate);
+               if (freq->src == CFG_CLK_SRC_GPLL7)
+                       clk_enable_gpll0(priv->base, &gpll7_vote_clk);
                clk_rcg_set_rate_mnd(priv->base, GCC_SDCC2_APPS_CLK_CMD_RCGR,
                                     freq->pre_div, freq->m, freq->n, 
freq->src, 8);
                return freq->freq;
-- 
2.34.1

Reply via email to