Lines Matching refs:rate
36 struct samsung_clk_pll *pll, unsigned long rate)
42 if (rate == rate_table[i].rate)
58 if (drate >= rate_table[i].rate)
59 return rate_table[i].rate;
63 return rate_table[i - 1].rate;
194 const struct samsung_pll_rate_table *rate, u32 pll_con)
201 return (rate->mdiv != old_mdiv || rate->pdiv != old_pdiv);
208 const struct samsung_pll_rate_table *rate;
211 /* Get required rate settings from table */
212 rate = samsung_get_pll_settings(pll, drate);
213 if (!rate) {
214 pr_err("%s: Invalid rate : %lu for pll clk %s\n", __func__,
221 if (!(samsung_pll35xx_mp_change(rate, tmp))) {
224 tmp |= rate->sdiv << PLL35XX_SDIV_SHIFT;
231 writel_relaxed(rate->pdiv * PLL35XX_LOCK_FACTOR,
238 tmp |= (rate->mdiv << PLL35XX_MDIV_SHIFT) |
239 (rate->pdiv << PLL35XX_PDIV_SHIFT) |
240 (rate->sdiv << PLL35XX_SDIV_SHIFT);
305 const struct samsung_pll_rate_table *rate, u32 pll_con0, u32 pll_con1)
313 return (rate->mdiv != old_mdiv || rate->pdiv != old_pdiv ||
314 rate->kdiv != old_kdiv);
322 const struct samsung_pll_rate_table *rate;
324 rate = samsung_get_pll_settings(pll, drate);
325 if (!rate) {
326 pr_err("%s: Invalid rate : %lu for pll clk %s\n", __func__,
334 if (!(samsung_pll36xx_mpk_change(rate, pll_con0, pll_con1))) {
337 pll_con0 |= (rate->sdiv << PLL36XX_SDIV_SHIFT);
344 writel_relaxed(rate->pdiv * PLL36XX_LOCK_FACTOR, pll->lock_reg);
350 pll_con0 |= (rate->mdiv << PLL36XX_MDIV_SHIFT) |
351 (rate->pdiv << PLL36XX_PDIV_SHIFT) |
352 (rate->sdiv << PLL36XX_SDIV_SHIFT);
356 pll_con1 |= rate->kdiv << PLL36XX_KDIV_SHIFT;
422 const struct samsung_pll_rate_table *rate)
430 return (old_mdiv != rate->mdiv || old_pdiv != rate->pdiv
431 || old_afc != rate->afc);
438 const struct samsung_pll_rate_table *rate;
442 /* Get required rate settings from table */
443 rate = samsung_get_pll_settings(pll, drate);
444 if (!rate) {
445 pr_err("%s: Invalid rate : %lu for pll clk %s\n", __func__,
453 if (!(samsung_pll45xx_mp_change(con0, con1, rate))) {
456 con0 |= rate->sdiv << PLL45XX_SDIV_SHIFT;
466 con0 |= (rate->mdiv << PLL45XX_MDIV_SHIFT) |
467 (rate->pdiv << PLL45XX_PDIV_SHIFT) |
468 (rate->sdiv << PLL45XX_SDIV_SHIFT);
473 con1 |= (rate->afc << PLL45XX_AFC_SHIFT);
478 writel_relaxed(rate->pdiv * PLL4502_LOCK_FACTOR, pll->lock_reg);
481 writel_relaxed(rate->pdiv * PLL4508_LOCK_FACTOR, pll->lock_reg);
573 const struct samsung_pll_rate_table *rate)
581 return (old_mdiv != rate->mdiv || old_pdiv != rate->pdiv
582 || old_kdiv != rate->kdiv);
589 const struct samsung_pll_rate_table *rate;
593 /* Get required rate settings from table */
594 rate = samsung_get_pll_settings(pll, drate);
595 if (!rate) {
596 pr_err("%s: Invalid rate : %lu for pll clk %s\n", __func__,
604 if (!(samsung_pll46xx_mpk_change(con0, con1, rate))) {
607 con0 |= rate->sdiv << PLL46XX_SDIV_SHIFT;
614 lock = rate->pdiv * PLL46XX_LOCK_FACTOR;
629 con0 |= rate->vsel << PLL46XX_VSEL_SHIFT;
632 con0 |= (rate->mdiv << PLL46XX_MDIV_SHIFT) |
633 (rate->pdiv << PLL46XX_PDIV_SHIFT) |
634 (rate->sdiv << PLL46XX_SDIV_SHIFT);
641 con1 |= (rate->kdiv << PLL46XX_KDIV_SHIFT) |
642 (rate->mfr << PLL46XX_MFR_SHIFT) |
643 (rate->mrr << PLL46XX_MRR_SHIFT);
808 const struct samsung_pll_rate_table *rate;
811 /* Get required rate settings from table */
812 rate = samsung_get_pll_settings(pll, drate);
813 if (!rate) {
814 pr_err("%s: Invalid rate : %lu for pll clk %s\n", __func__,
825 tmp |= (rate->mdiv << PLLS3C2410_MDIV_SHIFT) |
826 (rate->pdiv << PLLS3C2410_PDIV_SHIFT) |
827 (rate->sdiv << PLLS3C2410_SDIV_SHIFT);
1004 const struct samsung_pll_rate_table *rate;
1007 /* Get required rate settings from table */
1008 rate = samsung_get_pll_settings(pll, drate);
1009 if (!rate) {
1010 pr_err("%s: Invalid rate : %lu for pll clk %s\n", __func__,
1017 if (!(samsung_pll2550xx_mp_change(rate->mdiv, rate->pdiv, tmp))) {
1020 tmp |= rate->sdiv << PLL2550XX_S_SHIFT;
1027 writel_relaxed(rate->pdiv * PLL2550XX_LOCK_FACTOR, pll->lock_reg);
1033 tmp |= (rate->mdiv << PLL2550XX_M_SHIFT) |
1034 (rate->pdiv << PLL2550XX_P_SHIFT) |
1035 (rate->sdiv << PLL2550XX_S_SHIFT);
1104 const struct samsung_pll_rate_table *rate;
1107 /* Get required rate settings from table */
1108 rate = samsung_get_pll_settings(pll, drate);
1109 if (!rate) {
1110 pr_err("%s: Invalid rate : %lu for pll clk %s\n", __func__,
1119 writel_relaxed(rate->pdiv * PLL2650X_LOCK_FACTOR, pll->lock_reg);
1125 con0 |= (rate->mdiv << PLL2650X_M_SHIFT) |
1126 (rate->pdiv << PLL2650X_P_SHIFT) |
1127 (rate->sdiv << PLL2650X_S_SHIFT);
1132 con1 |= ((rate->kdiv & PLL2650X_K_MASK) << PLL2650X_K_SHIFT);
1200 const struct samsung_pll_rate_table *rate;
1202 rate = samsung_get_pll_settings(pll, drate);
1203 if (!rate) {
1204 pr_err("%s: Invalid rate : %lu for pll clk %s\n", __func__,
1216 pll_con0 |= rate->mdiv << PLL2650XX_MDIV_SHIFT;
1217 pll_con0 |= rate->pdiv << PLL2650XX_PDIV_SHIFT;
1218 pll_con0 |= rate->sdiv << PLL2650XX_SDIV_SHIFT;
1223 pll_con2 |= ((~(rate->kdiv) + 1) & PLL2650XX_KDIV_MASK)
1227 writel_relaxed(PLL2650XX_LOCK_FACTOR * rate->pdiv, pll->lock_reg);
1271 for (len = 0; pll_clk->rate_table[len].rate != 0; )
1280 "%s: could not allocate rate table for %s\n",