Lines Matching refs:pll_info

85 	const struct ingenic_cgu_pll_info *pll_info;  in ingenic_pll_recalc_rate()  local
91 pll_info = &clk_info->pll; in ingenic_pll_recalc_rate()
93 ctl = readl(cgu->base + pll_info->reg); in ingenic_pll_recalc_rate()
95 m = (ctl >> pll_info->m_shift) & GENMASK(pll_info->m_bits - 1, 0); in ingenic_pll_recalc_rate()
96 m += pll_info->m_offset; in ingenic_pll_recalc_rate()
97 n = (ctl >> pll_info->n_shift) & GENMASK(pll_info->n_bits - 1, 0); in ingenic_pll_recalc_rate()
98 n += pll_info->n_offset; in ingenic_pll_recalc_rate()
99 od_enc = ctl >> pll_info->od_shift; in ingenic_pll_recalc_rate()
100 od_enc &= GENMASK(pll_info->od_bits - 1, 0); in ingenic_pll_recalc_rate()
102 ctl = readl(cgu->base + pll_info->bypass_reg); in ingenic_pll_recalc_rate()
104 bypass = !pll_info->no_bypass_bit && in ingenic_pll_recalc_rate()
105 !!(ctl & BIT(pll_info->bypass_bit)); in ingenic_pll_recalc_rate()
110 for (od = 0; od < pll_info->od_max; od++) { in ingenic_pll_recalc_rate()
111 if (pll_info->od_encoding[od] == od_enc) in ingenic_pll_recalc_rate()
114 BUG_ON(od == pll_info->od_max); in ingenic_pll_recalc_rate()
117 return div_u64((u64)parent_rate * m * pll_info->rate_multiplier, in ingenic_pll_recalc_rate()
126 const struct ingenic_cgu_pll_info *pll_info; in ingenic_pll_calc() local
129 pll_info = &clk_info->pll; in ingenic_pll_calc()
138 n = max_t(unsigned, n, pll_info->n_offset); in ingenic_pll_calc()
142 m = max_t(unsigned, m, pll_info->m_offset); in ingenic_pll_calc()
151 return div_u64((u64)parent_rate * m * pll_info->rate_multiplier, in ingenic_pll_calc()
166 const struct ingenic_cgu_pll_info *pll_info) in ingenic_pll_check_stable() argument
170 return readl_poll_timeout(cgu->base + pll_info->reg, ctl, in ingenic_pll_check_stable()
171 ctl & BIT(pll_info->stable_bit), in ingenic_pll_check_stable()
182 const struct ingenic_cgu_pll_info *pll_info = &clk_info->pll; in ingenic_pll_set_rate() local
195 ctl = readl(cgu->base + pll_info->reg); in ingenic_pll_set_rate()
197 ctl &= ~(GENMASK(pll_info->m_bits - 1, 0) << pll_info->m_shift); in ingenic_pll_set_rate()
198 ctl |= (m - pll_info->m_offset) << pll_info->m_shift; in ingenic_pll_set_rate()
200 ctl &= ~(GENMASK(pll_info->n_bits - 1, 0) << pll_info->n_shift); in ingenic_pll_set_rate()
201 ctl |= (n - pll_info->n_offset) << pll_info->n_shift; in ingenic_pll_set_rate()
203 ctl &= ~(GENMASK(pll_info->od_bits - 1, 0) << pll_info->od_shift); in ingenic_pll_set_rate()
204 ctl |= pll_info->od_encoding[od - 1] << pll_info->od_shift; in ingenic_pll_set_rate()
206 writel(ctl, cgu->base + pll_info->reg); in ingenic_pll_set_rate()
209 if (ctl & BIT(pll_info->enable_bit)) in ingenic_pll_set_rate()
210 ret = ingenic_pll_check_stable(cgu, pll_info); in ingenic_pll_set_rate()
222 const struct ingenic_cgu_pll_info *pll_info = &clk_info->pll; in ingenic_pll_enable() local
228 ctl = readl(cgu->base + pll_info->bypass_reg); in ingenic_pll_enable()
230 ctl &= ~BIT(pll_info->bypass_bit); in ingenic_pll_enable()
232 writel(ctl, cgu->base + pll_info->bypass_reg); in ingenic_pll_enable()
234 ctl = readl(cgu->base + pll_info->reg); in ingenic_pll_enable()
236 ctl |= BIT(pll_info->enable_bit); in ingenic_pll_enable()
238 writel(ctl, cgu->base + pll_info->reg); in ingenic_pll_enable()
240 ret = ingenic_pll_check_stable(cgu, pll_info); in ingenic_pll_enable()
251 const struct ingenic_cgu_pll_info *pll_info = &clk_info->pll; in ingenic_pll_disable() local
256 ctl = readl(cgu->base + pll_info->reg); in ingenic_pll_disable()
258 ctl &= ~BIT(pll_info->enable_bit); in ingenic_pll_disable()
260 writel(ctl, cgu->base + pll_info->reg); in ingenic_pll_disable()
269 const struct ingenic_cgu_pll_info *pll_info = &clk_info->pll; in ingenic_pll_is_enabled() local
272 ctl = readl(cgu->base + pll_info->reg); in ingenic_pll_is_enabled()
274 return !!(ctl & BIT(pll_info->enable_bit)); in ingenic_pll_is_enabled()