Lines Matching refs:div
50 for (clkt = table; clkt->div; clkt++)
51 if (clkt->div > maxdiv && clkt->val <= mask)
52 maxdiv = clkt->div;
61 for (clkt = table; clkt->div; clkt++)
62 if (clkt->div < mindiv)
63 mindiv = clkt->div;
84 for (clkt = table; clkt->div; clkt++)
86 return clkt->div;
105 unsigned int div)
109 for (clkt = table; clkt->div; clkt++)
110 if (clkt->div == div)
116 unsigned int div, unsigned long flags, u8 width)
119 return div;
121 return __ffs(div);
123 return (div == clk_div_mask(width) + 1) ? 0 : div;
125 return _get_table_val(table, div);
126 return div - 1;
134 unsigned int div;
136 div = _get_div(table, val, flags, width);
137 if (!div) {
144 return DIV_ROUND_UP_ULL((u64)parent_rate, div);
162 unsigned int div)
166 for (clkt = table; clkt->div; clkt++)
167 if (clkt->div == div)
172 static bool _is_valid_div(const struct clk_div_table *table, unsigned int div,
176 return is_power_of_2(div);
178 return _is_valid_table_div(table, div);
182 static int _round_up_table(const struct clk_div_table *table, int div)
187 for (clkt = table; clkt->div; clkt++) {
188 if (clkt->div == div)
189 return clkt->div;
190 else if (clkt->div < div)
193 if ((clkt->div - div) < (up - div))
194 up = clkt->div;
200 static int _round_down_table(const struct clk_div_table *table, int div)
205 for (clkt = table; clkt->div; clkt++) {
206 if (clkt->div == div)
207 return clkt->div;
208 else if (clkt->div > div)
211 if ((div - clkt->div) < (div - down))
212 down = clkt->div;
222 int div = DIV_ROUND_UP_ULL((u64)parent_rate, rate);
225 div = __roundup_pow_of_two(div);
227 div = _round_up_table(table, div);
229 return div;
275 static int _next_div(const struct clk_div_table *table, int div,
278 div++;
281 return __roundup_pow_of_two(div);
283 return _round_up_table(table, div);
285 return div;
350 int div;
352 div = clk_divider_bestdiv(hw, parent, rate, prate, table, width, flags);
354 return DIV_ROUND_UP_ULL((u64)*prate, div);
363 int div;
365 div = _get_div(table, val, flags, width);
372 *prate = clk_hw_round_rate(parent, rate * div);
375 return DIV_ROUND_UP_ULL((u64)*prate, div);
405 unsigned int div, value;
407 div = DIV_ROUND_UP_ULL((u64)parent_rate, rate);
409 if (!_is_valid_div(table, div, flags))
412 value = _get_val(table, div, flags, width);
473 struct clk_divider *div;
486 div = kzalloc(sizeof(*div), GFP_KERNEL);
487 if (!div)
505 div->reg = reg;
506 div->shift = shift;
507 div->width = width;
508 div->flags = clk_divider_flags;
509 div->lock = lock;
510 div->hw.init = &init;
511 div->table = table;
514 hw = &div->hw;
517 kfree(div);
536 * @table: array of divider/value pairs ending with a div set to 0
558 struct clk_divider *div;
565 div = to_clk_divider(hw);
568 kfree(div);
578 struct clk_divider *div;
580 div = to_clk_divider(hw);
583 kfree(div);