Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'qcom-clk-fixes-for-6.10' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into clk-fixes

Pull Qualcomm clk driver fixes from Bjorn Andersson:

- Correct the Stromer Plus PLL set_rate to explicitly set ALPHA_EN bit and
remove unnecessary upper parts of CONFIG_CTL values.
- Mark the recently added IPQ9574 GCC crypto clocks BRANCH_HALT_VOTED, to
address stuck clock warnings.
- Fix the GPLL6 and GPLL7 parents on SM6350 to avoid issues with these
reportedly running at ~25GHz.

* tag 'qcom-clk-fixes-for-6.10' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux:
clk: qcom: gcc-ipq9574: Add BRANCH_HALT_VOTED flag
clk: qcom: apss-ipq-pll: remove 'config_ctl_hi_val' from Stromer pll configs
clk: qcom: clk-alpha-pll: set ALPHA_EN bit for Stromer Plus PLLs
clk: qcom: gcc-sm6350: Fix gpll6* & gpll7 parents

+14 -11
-2
drivers/clk/qcom/apss-ipq-pll.c
··· 70 70 static const struct alpha_pll_config ipq5018_pll_config = { 71 71 .l = 0x2a, 72 72 .config_ctl_val = 0x4001075b, 73 - .config_ctl_hi_val = 0x304, 74 73 .main_output_mask = BIT(0), 75 74 .aux_output_mask = BIT(1), 76 75 .early_output_mask = BIT(3), ··· 83 84 static const struct alpha_pll_config ipq5332_pll_config = { 84 85 .l = 0x2d, 85 86 .config_ctl_val = 0x4001075b, 86 - .config_ctl_hi_val = 0x304, 87 87 .main_output_mask = BIT(0), 88 88 .aux_output_mask = BIT(1), 89 89 .early_output_mask = BIT(3),
+3
drivers/clk/qcom/clk-alpha-pll.c
··· 2574 2574 regmap_write(pll->clkr.regmap, PLL_ALPHA_VAL_U(pll), 2575 2575 a >> ALPHA_BITWIDTH); 2576 2576 2577 + regmap_update_bits(pll->clkr.regmap, PLL_USER_CTL(pll), 2578 + PLL_ALPHA_EN, PLL_ALPHA_EN); 2579 + 2577 2580 regmap_write(pll->clkr.regmap, PLL_MODE(pll), PLL_BYPASSNL); 2578 2581 2579 2582 /* Wait five micro seconds or more */
+6 -4
drivers/clk/qcom/gcc-ipq9574.c
··· 2140 2140 2141 2141 static struct clk_branch gcc_crypto_axi_clk = { 2142 2142 .halt_reg = 0x16010, 2143 + .halt_check = BRANCH_HALT_VOTED, 2143 2144 .clkr = { 2144 - .enable_reg = 0x16010, 2145 - .enable_mask = BIT(0), 2145 + .enable_reg = 0xb004, 2146 + .enable_mask = BIT(15), 2146 2147 .hw.init = &(const struct clk_init_data) { 2147 2148 .name = "gcc_crypto_axi_clk", 2148 2149 .parent_hws = (const struct clk_hw *[]) { ··· 2157 2156 2158 2157 static struct clk_branch gcc_crypto_ahb_clk = { 2159 2158 .halt_reg = 0x16014, 2159 + .halt_check = BRANCH_HALT_VOTED, 2160 2160 .clkr = { 2161 - .enable_reg = 0x16014, 2162 - .enable_mask = BIT(0), 2161 + .enable_reg = 0xb004, 2162 + .enable_mask = BIT(16), 2163 2163 .hw.init = &(const struct clk_init_data) { 2164 2164 .name = "gcc_crypto_ahb_clk", 2165 2165 .parent_hws = (const struct clk_hw *[]) {
+5 -5
drivers/clk/qcom/gcc-sm6350.c
··· 100 100 .enable_mask = BIT(6), 101 101 .hw.init = &(struct clk_init_data){ 102 102 .name = "gpll6", 103 - .parent_hws = (const struct clk_hw*[]){ 104 - &gpll0.clkr.hw, 103 + .parent_data = &(const struct clk_parent_data){ 104 + .fw_name = "bi_tcxo", 105 105 }, 106 106 .num_parents = 1, 107 107 .ops = &clk_alpha_pll_fixed_fabia_ops, ··· 124 124 .clkr.hw.init = &(struct clk_init_data){ 125 125 .name = "gpll6_out_even", 126 126 .parent_hws = (const struct clk_hw*[]){ 127 - &gpll0.clkr.hw, 127 + &gpll6.clkr.hw, 128 128 }, 129 129 .num_parents = 1, 130 130 .ops = &clk_alpha_pll_postdiv_fabia_ops, ··· 139 139 .enable_mask = BIT(7), 140 140 .hw.init = &(struct clk_init_data){ 141 141 .name = "gpll7", 142 - .parent_hws = (const struct clk_hw*[]){ 143 - &gpll0.clkr.hw, 142 + .parent_data = &(const struct clk_parent_data){ 143 + .fw_name = "bi_tcxo", 144 144 }, 145 145 .num_parents = 1, 146 146 .ops = &clk_alpha_pll_fixed_fabia_ops,