Lines Matching refs:pll
74 static unsigned int __get_fid(struct iproc_arm_pll *pll) in __get_fid() argument
79 val = readl(pll->base + IPROC_CLK_ARM_DIV_OFFSET); in __get_fid()
88 val = readl(pll->base + IPROC_CLK_POLICY_FREQ_OFFSET); in __get_fid()
92 val = readl(pll->base + IPROC_CLK_POLICY_DBG_OFFSET); in __get_fid()
114 static int __get_mdiv(struct iproc_arm_pll *pll) in __get_mdiv() argument
120 fid = __get_fid(pll); in __get_mdiv()
129 val = readl(pll->base + IPROC_CLK_PLLARMC_OFFSET); in __get_mdiv()
136 val = readl(pll->base + IPROC_CLK_PLLARMCTL5_OFFSET); in __get_mdiv()
149 static unsigned int __get_ndiv(struct iproc_arm_pll *pll) in __get_ndiv() argument
154 val = readl(pll->base + IPROC_CLK_PLLARM_OFFSET_OFFSET); in __get_ndiv()
168 val = readl(pll->base + IPROC_CLK_PLLARMA_OFFSET); in __get_ndiv()
174 val = readl(pll->base + IPROC_CLK_PLLARMB_OFFSET); in __get_ndiv()
196 struct iproc_arm_pll *pll = to_iproc_arm_pll(hw); in iproc_arm_pll_recalc_rate() local
203 val = readl(pll->base + IPROC_CLK_PLLARMC_OFFSET); in iproc_arm_pll_recalc_rate()
205 pll->rate = parent_rate; in iproc_arm_pll_recalc_rate()
206 return pll->rate; in iproc_arm_pll_recalc_rate()
210 val = readl(pll->base + IPROC_CLK_PLLARMA_OFFSET); in iproc_arm_pll_recalc_rate()
212 pll->rate = 0; in iproc_arm_pll_recalc_rate()
221 ndiv = __get_ndiv(pll); in iproc_arm_pll_recalc_rate()
222 mdiv = __get_mdiv(pll); in iproc_arm_pll_recalc_rate()
224 pll->rate = 0; in iproc_arm_pll_recalc_rate()
227 pll->rate = (ndiv * parent_rate) >> 20; in iproc_arm_pll_recalc_rate()
228 pll->rate = (pll->rate / pdiv) / mdiv; in iproc_arm_pll_recalc_rate()
231 pll->rate, parent_rate); in iproc_arm_pll_recalc_rate()
235 return pll->rate; in iproc_arm_pll_recalc_rate()
246 struct iproc_arm_pll *pll; in iproc_armpll_setup() local
250 pll = kzalloc(sizeof(*pll), GFP_KERNEL); in iproc_armpll_setup()
251 if (WARN_ON(!pll)) in iproc_armpll_setup()
254 pll->base = of_iomap(node, 0); in iproc_armpll_setup()
255 if (WARN_ON(!pll->base)) in iproc_armpll_setup()
264 pll->hw.init = &init; in iproc_armpll_setup()
266 clk = clk_register(NULL, &pll->hw); in iproc_armpll_setup()
279 iounmap(pll->base); in iproc_armpll_setup()
281 kfree(pll); in iproc_armpll_setup()