]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/clk/qcom/clk-pll.c
Merge tag 'xfs-for-linus-4.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[karo-tx-linux.git] / drivers / clk / qcom / clk-pll.c
index 5b940d629045fe706707f1d6a8c92a3ef12098b5..cb6cb8710daf11c0936e525fd1698caa440b884d 100644 (file)
 #include <asm/div64.h>
 
 #include "clk-pll.h"
+#include "common.h"
 
 #define PLL_OUTCTRL            BIT(0)
 #define PLL_BYPASSNL           BIT(1)
 #define PLL_RESET_N            BIT(2)
-#define PLL_LOCK_COUNT_SHIFT   8
-#define PLL_LOCK_COUNT_MASK    0x3f
-#define PLL_BIAS_COUNT_SHIFT   14
-#define PLL_BIAS_COUNT_MASK    0x3f
-#define PLL_VOTE_FSM_ENA       BIT(20)
-#define PLL_VOTE_FSM_RESET     BIT(21)
 
 static int clk_pll_enable(struct clk_hw *hw)
 {
@@ -228,26 +223,6 @@ const struct clk_ops clk_pll_vote_ops = {
 };
 EXPORT_SYMBOL_GPL(clk_pll_vote_ops);
 
-static void
-clk_pll_set_fsm_mode(struct clk_pll *pll, struct regmap *regmap, u8 lock_count)
-{
-       u32 val;
-       u32 mask;
-
-       /* De-assert reset to FSM */
-       regmap_update_bits(regmap, pll->mode_reg, PLL_VOTE_FSM_RESET, 0);
-
-       /* Program bias count and lock count */
-       val = 1 << PLL_BIAS_COUNT_SHIFT | lock_count << PLL_LOCK_COUNT_SHIFT;
-       mask = PLL_BIAS_COUNT_MASK << PLL_BIAS_COUNT_SHIFT;
-       mask |= PLL_LOCK_COUNT_MASK << PLL_LOCK_COUNT_SHIFT;
-       regmap_update_bits(regmap, pll->mode_reg, mask, val);
-
-       /* Enable PLL FSM voting */
-       regmap_update_bits(regmap, pll->mode_reg, PLL_VOTE_FSM_ENA,
-               PLL_VOTE_FSM_ENA);
-}
-
 static void clk_pll_configure(struct clk_pll *pll, struct regmap *regmap,
        const struct pll_config *config)
 {
@@ -280,7 +255,7 @@ void clk_pll_configure_sr(struct clk_pll *pll, struct regmap *regmap,
 {
        clk_pll_configure(pll, regmap, config);
        if (fsm_mode)
-               clk_pll_set_fsm_mode(pll, regmap, 8);
+               qcom_pll_set_fsm_mode(regmap, pll->mode_reg, 1, 8);
 }
 EXPORT_SYMBOL_GPL(clk_pll_configure_sr);
 
@@ -289,7 +264,7 @@ void clk_pll_configure_sr_hpm_lp(struct clk_pll *pll, struct regmap *regmap,
 {
        clk_pll_configure(pll, regmap, config);
        if (fsm_mode)
-               clk_pll_set_fsm_mode(pll, regmap, 0);
+               qcom_pll_set_fsm_mode(regmap, pll->mode_reg, 1, 0);
 }
 EXPORT_SYMBOL_GPL(clk_pll_configure_sr_hpm_lp);