Lines Matching refs:rate
270 unsigned long rate;
273 rate = parent_rate;
276 rate /= 8;
279 rate /= 4;
282 rate /= 2;
290 dev_dbg(&drvdata->client->dev, "%s - clkin div = %d, rate = %lu\n",
291 __func__, (1 << (idiv >> 6)), rate);
293 return rate;
326 static int si5351_vxco_set_rate(struct clk_hw *hw, unsigned long rate,
421 unsigned long long rate;
430 rate = hwdata->params.p1 * hwdata->params.p3;
431 rate += 512 * hwdata->params.p3;
432 rate += hwdata->params.p2;
433 rate *= parent_rate;
434 do_div(rate, 128 * hwdata->params.p3);
437 "%s - %s: p1 = %lu, p2 = %lu, p3 = %lu, parent_rate = %lu, rate = %lu\n",
440 parent_rate, (unsigned long)rate);
442 return (unsigned long)rate;
445 static long si5351_pll_round_rate(struct clk_hw *hw, unsigned long rate,
453 if (rate < SI5351_PLL_VCO_MIN)
454 rate = SI5351_PLL_VCO_MIN;
455 if (rate > SI5351_PLL_VCO_MAX)
456 rate = SI5351_PLL_VCO_MAX;
459 a = rate / *parent_rate;
462 rate = *parent_rate * SI5351_PLL_A_MIN;
464 rate = *parent_rate * SI5351_PLL_A_MAX;
468 lltmp = rate % (*parent_rate);
486 /* recalculate rate by fIN * (a + b/c) */
491 rate = (unsigned long)lltmp;
492 rate += *parent_rate * a;
495 "%s - %s: a = %lu, b = %lu, c = %lu, parent_rate = %lu, rate = %lu\n",
497 *parent_rate, rate);
499 return rate;
502 static int si5351_pll_set_rate(struct clk_hw *hw, unsigned long rate,
524 "%s - %s: p1 = %lu, p2 = %lu, p3 = %lu, parent_rate = %lu, rate = %lu\n",
527 parent_rate, rate);
605 unsigned long long rate;
615 rate = parent_rate;
624 rate *= 128 * hwdata->params.p3;
632 do_div(rate, m);
635 "%s - %s: p1 = %lu, p2 = %lu, p3 = %lu, m = %lu, parent_rate = %lu, rate = %lu\n",
638 m, parent_rate, (unsigned long)rate);
640 return (unsigned long)rate;
643 static long si5351_msynth_round_rate(struct clk_hw *hw, unsigned long rate,
653 if (hwdata->num >= 6 && rate > SI5351_MULTISYNTH67_MAX_FREQ)
654 rate = SI5351_MULTISYNTH67_MAX_FREQ;
657 if (rate > SI5351_MULTISYNTH_MAX_FREQ)
658 rate = SI5351_MULTISYNTH_MAX_FREQ;
659 if (rate < SI5351_MULTISYNTH_MIN_FREQ)
660 rate = SI5351_MULTISYNTH_MIN_FREQ;
663 if (rate > SI5351_MULTISYNTH_DIVBY4_FREQ)
670 * vco frequency and given target rate
674 do_div(lltmp, rate);
682 *parent_rate = a * rate;
685 a = DIV_ROUND_CLOSEST(*parent_rate, rate);
698 rate = SI5351_MULTISYNTH_DIVBY4_FREQ;
703 a = *parent_rate / rate;
711 lltmp = (*parent_rate) % rate;
713 do_div(lltmp, rate);
724 /* recalculate rate by fOUT = fIN / (a + b/c) */
728 rate = (unsigned long)lltmp;
748 "%s - %s: a = %lu, b = %lu, c = %lu, divby4 = %d, parent_rate = %lu, rate = %lu\n",
750 *parent_rate, rate);
752 return rate;
755 static int si5351_msynth_set_rate(struct clk_hw *hw, unsigned long rate,
766 if (rate > SI5351_MULTISYNTH_DIVBY4_FREQ)
780 "%s - %s: p1 = %lu, p2 = %lu, p3 = %lu, divby4 = %d, parent_rate = %lu, rate = %lu\n",
783 divby4, parent_rate, rate);
1028 static long si5351_clkout_round_rate(struct clk_hw *hw, unsigned long rate,
1036 if (hwdata->num >= 6 && rate > SI5351_CLKOUT67_MAX_FREQ)
1037 rate = SI5351_CLKOUT67_MAX_FREQ;
1040 if (rate > SI5351_CLKOUT_MAX_FREQ)
1041 rate = SI5351_CLKOUT_MAX_FREQ;
1042 if (rate < SI5351_CLKOUT_MIN_FREQ)
1043 rate = SI5351_CLKOUT_MIN_FREQ;
1049 while (rate < SI5351_MULTISYNTH_MIN_FREQ &&
1052 rate *= 2;
1054 *parent_rate = rate;
1061 err = abs(new_rate - rate);
1064 new_err = abs(new_rate - rate);
1071 rate = *parent_rate >> rdiv;
1074 "%s - %s: rdiv = %u, parent_rate = %lu, rate = %lu\n",
1076 *parent_rate, rate);
1078 return rate;
1081 static int si5351_clkout_set_rate(struct clk_hw *hw, unsigned long rate,
1092 err = abs(new_rate - rate);
1095 new_err = abs(new_rate - rate);
1125 "%s - %s: rdiv = %u, parent_rate = %lu, rate = %lu\n",
1127 parent_rate, rate);
1321 pdata->clkout[num].rate = val;
1616 /* set initial clkout rate */
1617 if (pdata->clkout[n].rate != 0) {
1620 pdata->clkout[n].rate);
1622 dev_err(&client->dev, "Cannot set rate : %d\n",