Lines Matching refs:zx_pll

25 static int rate_to_idx(struct clk_zx_pll *zx_pll, unsigned long rate)  in rate_to_idx()  argument
27 const struct zx_pll_config *config = zx_pll->lookup_table; in rate_to_idx()
30 for (i = 0; i < zx_pll->count; i++) { in rate_to_idx()
41 static int hw_to_idx(struct clk_zx_pll *zx_pll) in hw_to_idx() argument
43 const struct zx_pll_config *config = zx_pll->lookup_table; in hw_to_idx()
47 hw_cfg0 = readl_relaxed(zx_pll->reg_base); in hw_to_idx()
48 hw_cfg1 = readl_relaxed(zx_pll->reg_base + CFG0_CFG1_OFFSET); in hw_to_idx()
51 hw_cfg0 &= ~BIT(zx_pll->lock_bit); in hw_to_idx()
54 if (zx_pll->pd_bit < 32) in hw_to_idx()
55 hw_cfg0 |= BIT(zx_pll->pd_bit); in hw_to_idx()
57 for (i = 0; i < zx_pll->count; i++) { in hw_to_idx()
68 struct clk_zx_pll *zx_pll = to_clk_zx_pll(hw); in zx_pll_recalc_rate() local
71 idx = hw_to_idx(zx_pll); in zx_pll_recalc_rate()
75 return zx_pll->lookup_table[idx].rate; in zx_pll_recalc_rate()
81 struct clk_zx_pll *zx_pll = to_clk_zx_pll(hw); in zx_pll_round_rate() local
84 idx = rate_to_idx(zx_pll, rate); in zx_pll_round_rate()
86 return zx_pll->lookup_table[idx].rate; in zx_pll_round_rate()
93 struct clk_zx_pll *zx_pll = to_clk_zx_pll(hw); in zx_pll_set_rate() local
97 idx = rate_to_idx(zx_pll, rate); in zx_pll_set_rate()
98 config = &zx_pll->lookup_table[idx]; in zx_pll_set_rate()
100 writel_relaxed(config->cfg0, zx_pll->reg_base); in zx_pll_set_rate()
101 writel_relaxed(config->cfg1, zx_pll->reg_base + CFG0_CFG1_OFFSET); in zx_pll_set_rate()
108 struct clk_zx_pll *zx_pll = to_clk_zx_pll(hw); in zx_pll_enable() local
112 if (zx_pll->pd_bit > 31) in zx_pll_enable()
115 reg = readl_relaxed(zx_pll->reg_base); in zx_pll_enable()
116 writel_relaxed(reg & ~BIT(zx_pll->pd_bit), zx_pll->reg_base); in zx_pll_enable()
118 return readl_relaxed_poll_timeout(zx_pll->reg_base, reg, in zx_pll_enable()
119 reg & BIT(zx_pll->lock_bit), 0, 100); in zx_pll_enable()
124 struct clk_zx_pll *zx_pll = to_clk_zx_pll(hw); in zx_pll_disable() local
127 if (zx_pll->pd_bit > 31) in zx_pll_disable()
130 reg = readl_relaxed(zx_pll->reg_base); in zx_pll_disable()
131 writel_relaxed(reg | BIT(zx_pll->pd_bit), zx_pll->reg_base); in zx_pll_disable()
136 struct clk_zx_pll *zx_pll = to_clk_zx_pll(hw); in zx_pll_is_enabled() local
139 reg = readl_relaxed(zx_pll->reg_base); in zx_pll_is_enabled()
141 return !(reg & BIT(zx_pll->pd_bit)); in zx_pll_is_enabled()
159 struct clk_zx_pll *zx_pll; in clk_register_zx_pll() local
163 zx_pll = kzalloc(sizeof(*zx_pll), GFP_KERNEL); in clk_register_zx_pll()
164 if (!zx_pll) in clk_register_zx_pll()
173 zx_pll->reg_base = reg_base; in clk_register_zx_pll()
174 zx_pll->lookup_table = lookup_table; in clk_register_zx_pll()
175 zx_pll->count = count; in clk_register_zx_pll()
176 zx_pll->lock_bit = LOCK_FLAG; in clk_register_zx_pll()
177 zx_pll->pd_bit = POWER_DOWN; in clk_register_zx_pll()
178 zx_pll->lock = lock; in clk_register_zx_pll()
179 zx_pll->hw.init = &init; in clk_register_zx_pll()
181 clk = clk_register(NULL, &zx_pll->hw); in clk_register_zx_pll()
183 kfree(zx_pll); in clk_register_zx_pll()