diff options
-rw-r--r-- | drivers/clk/qcom/clk-pll.c | 15 | ||||
-rw-r--r-- | drivers/clk/qcom/clk-pll.h | 2 |
2 files changed, 14 insertions, 3 deletions
diff --git a/drivers/clk/qcom/clk-pll.c b/drivers/clk/qcom/clk-pll.c index 0f927c538613..9db03d3b1657 100644 --- a/drivers/clk/qcom/clk-pll.c +++ b/drivers/clk/qcom/clk-pll.c | |||
@@ -166,7 +166,7 @@ const struct clk_ops clk_pll_vote_ops = { | |||
166 | EXPORT_SYMBOL_GPL(clk_pll_vote_ops); | 166 | EXPORT_SYMBOL_GPL(clk_pll_vote_ops); |
167 | 167 | ||
168 | static void | 168 | static void |
169 | clk_pll_set_fsm_mode(struct clk_pll *pll, struct regmap *regmap) | 169 | clk_pll_set_fsm_mode(struct clk_pll *pll, struct regmap *regmap, u8 lock_count) |
170 | { | 170 | { |
171 | u32 val; | 171 | u32 val; |
172 | u32 mask; | 172 | u32 mask; |
@@ -175,7 +175,7 @@ clk_pll_set_fsm_mode(struct clk_pll *pll, struct regmap *regmap) | |||
175 | regmap_update_bits(regmap, pll->mode_reg, PLL_VOTE_FSM_RESET, 0); | 175 | regmap_update_bits(regmap, pll->mode_reg, PLL_VOTE_FSM_RESET, 0); |
176 | 176 | ||
177 | /* Program bias count and lock count */ | 177 | /* Program bias count and lock count */ |
178 | val = 1 << PLL_BIAS_COUNT_SHIFT; | 178 | val = 1 << PLL_BIAS_COUNT_SHIFT | lock_count << PLL_LOCK_COUNT_SHIFT; |
179 | mask = PLL_BIAS_COUNT_MASK << PLL_BIAS_COUNT_SHIFT; | 179 | mask = PLL_BIAS_COUNT_MASK << PLL_BIAS_COUNT_SHIFT; |
180 | mask |= PLL_LOCK_COUNT_MASK << PLL_LOCK_COUNT_SHIFT; | 180 | mask |= PLL_LOCK_COUNT_MASK << PLL_LOCK_COUNT_SHIFT; |
181 | regmap_update_bits(regmap, pll->mode_reg, mask, val); | 181 | regmap_update_bits(regmap, pll->mode_reg, mask, val); |
@@ -212,11 +212,20 @@ static void clk_pll_configure(struct clk_pll *pll, struct regmap *regmap, | |||
212 | regmap_update_bits(regmap, pll->config_reg, mask, val); | 212 | regmap_update_bits(regmap, pll->config_reg, mask, val); |
213 | } | 213 | } |
214 | 214 | ||
215 | void clk_pll_configure_sr(struct clk_pll *pll, struct regmap *regmap, | ||
216 | const struct pll_config *config, bool fsm_mode) | ||
217 | { | ||
218 | clk_pll_configure(pll, regmap, config); | ||
219 | if (fsm_mode) | ||
220 | clk_pll_set_fsm_mode(pll, regmap, 8); | ||
221 | } | ||
222 | EXPORT_SYMBOL_GPL(clk_pll_configure_sr); | ||
223 | |||
215 | void clk_pll_configure_sr_hpm_lp(struct clk_pll *pll, struct regmap *regmap, | 224 | void clk_pll_configure_sr_hpm_lp(struct clk_pll *pll, struct regmap *regmap, |
216 | const struct pll_config *config, bool fsm_mode) | 225 | const struct pll_config *config, bool fsm_mode) |
217 | { | 226 | { |
218 | clk_pll_configure(pll, regmap, config); | 227 | clk_pll_configure(pll, regmap, config); |
219 | if (fsm_mode) | 228 | if (fsm_mode) |
220 | clk_pll_set_fsm_mode(pll, regmap); | 229 | clk_pll_set_fsm_mode(pll, regmap, 0); |
221 | } | 230 | } |
222 | EXPORT_SYMBOL_GPL(clk_pll_configure_sr_hpm_lp); | 231 | EXPORT_SYMBOL_GPL(clk_pll_configure_sr_hpm_lp); |
diff --git a/drivers/clk/qcom/clk-pll.h b/drivers/clk/qcom/clk-pll.h index 0775a99ca768..3003e9962472 100644 --- a/drivers/clk/qcom/clk-pll.h +++ b/drivers/clk/qcom/clk-pll.h | |||
@@ -60,6 +60,8 @@ struct pll_config { | |||
60 | u32 aux_output_mask; | 60 | u32 aux_output_mask; |
61 | }; | 61 | }; |
62 | 62 | ||
63 | void clk_pll_configure_sr(struct clk_pll *pll, struct regmap *regmap, | ||
64 | const struct pll_config *config, bool fsm_mode); | ||
63 | void clk_pll_configure_sr_hpm_lp(struct clk_pll *pll, struct regmap *regmap, | 65 | void clk_pll_configure_sr_hpm_lp(struct clk_pll *pll, struct regmap *regmap, |
64 | const struct pll_config *config, bool fsm_mode); | 66 | const struct pll_config *config, bool fsm_mode); |
65 | 67 | ||