• Home
  • Raw
  • Download

Lines Matching full:div

37 	for (clkt = table; clkt->div; clkt++)  in _get_table_maxdiv()
38 if (clkt->div > maxdiv && clkt->val <= mask) in _get_table_maxdiv()
39 maxdiv = clkt->div; in _get_table_maxdiv()
48 for (clkt = table; clkt->div; clkt++) in _get_table_mindiv()
49 if (clkt->div < mindiv) in _get_table_mindiv()
50 mindiv = clkt->div; in _get_table_mindiv()
71 for (clkt = table; clkt->div; clkt++) in _get_table_div()
73 return clkt->div; in _get_table_div()
92 unsigned int div) in _get_table_val() argument
96 for (clkt = table; clkt->div; clkt++) in _get_table_val()
97 if (clkt->div == div) in _get_table_val()
103 unsigned int div, unsigned long flags, u8 width) in _get_val() argument
106 return div; in _get_val()
108 return __ffs(div); in _get_val()
110 return (div == clk_div_mask(width) + 1) ? 0 : div; in _get_val()
112 return _get_table_val(table, div); in _get_val()
113 return div - 1; in _get_val()
121 unsigned int div; in divider_recalc_rate() local
123 div = _get_div(table, val, flags, width); in divider_recalc_rate()
124 if (!div) { in divider_recalc_rate()
131 return DIV_ROUND_UP_ULL((u64)parent_rate, div); in divider_recalc_rate()
149 unsigned int div) in _is_valid_table_div() argument
153 for (clkt = table; clkt->div; clkt++) in _is_valid_table_div()
154 if (clkt->div == div) in _is_valid_table_div()
159 static bool _is_valid_div(const struct clk_div_table *table, unsigned int div, in _is_valid_div() argument
163 return is_power_of_2(div); in _is_valid_div()
165 return _is_valid_table_div(table, div); in _is_valid_div()
169 static int _round_up_table(const struct clk_div_table *table, int div) in _round_up_table() argument
174 for (clkt = table; clkt->div; clkt++) { in _round_up_table()
175 if (clkt->div == div) in _round_up_table()
176 return clkt->div; in _round_up_table()
177 else if (clkt->div < div) in _round_up_table()
180 if ((clkt->div - div) < (up - div)) in _round_up_table()
181 up = clkt->div; in _round_up_table()
187 static int _round_down_table(const struct clk_div_table *table, int div) in _round_down_table() argument
192 for (clkt = table; clkt->div; clkt++) { in _round_down_table()
193 if (clkt->div == div) in _round_down_table()
194 return clkt->div; in _round_down_table()
195 else if (clkt->div > div) in _round_down_table()
198 if ((div - clkt->div) < (div - down)) in _round_down_table()
199 down = clkt->div; in _round_down_table()
209 int div = DIV_ROUND_UP_ULL((u64)parent_rate, rate); in _div_round_up() local
212 div = __roundup_pow_of_two(div); in _div_round_up()
214 div = _round_up_table(table, div); in _div_round_up()
216 return div; in _div_round_up()
262 static int _next_div(const struct clk_div_table *table, int div, in _next_div() argument
265 div++; in _next_div()
268 return __roundup_pow_of_two(div); in _next_div()
270 return _round_up_table(table, div); in _next_div()
272 return div; in _next_div()
337 int div; in divider_round_rate_parent() local
339 div = clk_divider_bestdiv(hw, parent, rate, prate, table, width, flags); in divider_round_rate_parent()
341 return DIV_ROUND_UP_ULL((u64)*prate, div); in divider_round_rate_parent()
350 int div; in divider_ro_round_rate_parent() local
352 div = _get_div(table, val, flags, width); in divider_ro_round_rate_parent()
359 *prate = clk_hw_round_rate(parent, rate * div); in divider_ro_round_rate_parent()
362 return DIV_ROUND_UP_ULL((u64)*prate, div); in divider_ro_round_rate_parent()
392 unsigned int div, value; in divider_get_val() local
394 div = DIV_ROUND_UP_ULL((u64)parent_rate, rate); in divider_get_val()
396 if (!_is_valid_div(table, div, flags)) in divider_get_val()
399 value = _get_val(table, div, flags, width); in divider_get_val()
459 struct clk_divider *div; in _register_divider() local
472 div = kzalloc(sizeof(*div), GFP_KERNEL); in _register_divider()
473 if (!div) in _register_divider()
486 div->reg = reg; in _register_divider()
487 div->shift = shift; in _register_divider()
488 div->width = width; in _register_divider()
489 div->flags = clk_divider_flags; in _register_divider()
490 div->lock = lock; in _register_divider()
491 div->hw.init = &init; in _register_divider()
492 div->table = table; in _register_divider()
495 hw = &div->hw; in _register_divider()
498 kfree(div); in _register_divider()
565 * @table: array of divider/value pairs ending with a div set to 0
595 * @table: array of divider/value pairs ending with a div set to 0
611 struct clk_divider *div; in clk_unregister_divider() local
618 div = to_clk_divider(hw); in clk_unregister_divider()
621 kfree(div); in clk_unregister_divider()
631 struct clk_divider *div; in clk_hw_unregister_divider() local
633 div = to_clk_divider(hw); in clk_hw_unregister_divider()
636 kfree(div); in clk_hw_unregister_divider()