Lines Matching defs:sdiv
105 int sdiv, int kdiv, unsigned long prate)
113 do_div(fvco, pdiv << sdiv);
118 static long pll1443x_calc_kdiv(int mdiv, int pdiv, int sdiv,
123 /* calc kdiv = round(rate * pdiv * 65536 * 2^sdiv / prate) - (mdiv * 65536) */
124 kdiv = ((rate * ((pdiv * 65536) << sdiv) + prate / 2) / prate) - (mdiv * 65536);
133 int mdiv, pdiv, sdiv, kdiv;
156 t->sdiv = tt->sdiv;
164 sdiv = FIELD_GET(SDIV_MASK, pll_div_ctl0);
168 rate_min = pll14xx_calc_rate(pll, mdiv, pdiv, sdiv, KDIV_MIN, prate);
169 rate_max = pll14xx_calc_rate(pll, mdiv, pdiv, sdiv, KDIV_MAX, prate);
172 kdiv = pll1443x_calc_kdiv(mdiv, pdiv, sdiv, rate, prate);
176 fvco = pll14xx_calc_rate(pll, mdiv, pdiv, sdiv, kdiv, prate);
180 t->sdiv = sdiv;
187 for (sdiv = 0; sdiv <= 6; sdiv++) {
188 /* calc mdiv = round(rate * pdiv * 2^sdiv) / prate) */
189 mdiv = DIV_ROUND_CLOSEST(rate * (pdiv << sdiv), prate);
192 kdiv = pll1443x_calc_kdiv(mdiv, pdiv, sdiv, rate, prate);
193 fvco = pll14xx_calc_rate(pll, mdiv, pdiv, sdiv, kdiv, prate);
202 t->sdiv = sdiv;
211 pr_debug("%s: in=%ld, want=%ld got=%d (pdiv=%d sdiv=%d mdiv=%d kdiv=%d)\n",
212 clk_hw_get_name(&pll->hw), prate, rate, t->rate, t->pdiv, t->sdiv,
247 u32 mdiv, pdiv, sdiv, kdiv, pll_div_ctl0, pll_div_ctl1;
252 sdiv = FIELD_GET(SDIV_MASK, pll_div_ctl0);
261 return pll14xx_calc_rate(pll, mdiv, pdiv, sdiv, kdiv, parent_rate);
302 tmp |= FIELD_PREP(SDIV_MASK, rate->sdiv);
322 FIELD_PREP(SDIV_MASK, rate->sdiv);
362 /* only sdiv and/or kdiv changed - no need to RESET PLL */
364 div_ctl0 |= FIELD_PREP(SDIV_MASK, rate.sdiv);
384 FIELD_PREP(SDIV_MASK, rate.sdiv);