Lines Matching refs:rate
205 unsigned long parent_rate, unsigned long rate, in _div_round_up() argument
208 int div = DIV_ROUND_UP(parent_rate, rate); in _div_round_up()
219 unsigned long parent_rate, unsigned long rate, in _div_round_closest() argument
225 up = DIV_ROUND_UP(parent_rate, rate); in _div_round_closest()
226 down = parent_rate / rate; in _div_round_closest()
239 return (rate - up_rate) <= (down_rate - rate) ? up : down; in _div_round_closest()
243 unsigned long parent_rate, unsigned long rate, in _div_round() argument
247 return _div_round_closest(table, parent_rate, rate, flags); in _div_round()
249 return _div_round_up(table, parent_rate, rate, flags); in _div_round()
252 static bool _is_best_div(unsigned long rate, unsigned long now, in _is_best_div() argument
256 return abs(rate - now) < abs(rate - best); in _is_best_div()
258 return now <= rate && now > best; in _is_best_div()
274 static int clk_divider_bestdiv(struct clk_hw *hw, unsigned long rate, in clk_divider_bestdiv() argument
283 if (!rate) in clk_divider_bestdiv()
284 rate = 1; in clk_divider_bestdiv()
290 bestdiv = _div_round(table, parent_rate, rate, flags); in clk_divider_bestdiv()
300 maxdiv = min(ULONG_MAX / rate, maxdiv); in clk_divider_bestdiv()
305 if (rate * i == parent_rate_saved) { in clk_divider_bestdiv()
315 rate * i); in clk_divider_bestdiv()
317 if (_is_best_div(rate, now, best, flags)) { in clk_divider_bestdiv()
332 long divider_round_rate(struct clk_hw *hw, unsigned long rate, in divider_round_rate() argument
338 div = clk_divider_bestdiv(hw, rate, prate, table, width, flags); in divider_round_rate()
344 static long clk_divider_round_rate(struct clk_hw *hw, unsigned long rate, in clk_divider_round_rate() argument
358 return divider_round_rate(hw, rate, prate, divider->table, in clk_divider_round_rate()
362 int divider_get_val(unsigned long rate, unsigned long parent_rate, in divider_get_val() argument
368 div = DIV_ROUND_UP(parent_rate, rate); in divider_get_val()
379 static int clk_divider_set_rate(struct clk_hw *hw, unsigned long rate, in clk_divider_set_rate() argument
387 value = divider_get_val(rate, parent_rate, divider->table, in clk_divider_set_rate()