Lines Matching refs:div
51 for (clkt = table; clkt->div; clkt++)
52 if (clkt->div > maxdiv && clkt->val <= mask)
53 maxdiv = clkt->div;
62 for (clkt = table; clkt->div; clkt++)
63 if (clkt->div < mindiv)
64 mindiv = clkt->div;
85 for (clkt = table; clkt->div; clkt++)
87 return clkt->div;
106 unsigned int div)
110 for (clkt = table; clkt->div; clkt++)
111 if (clkt->div == div)
117 unsigned int div, unsigned long flags, u8 width)
120 return div;
122 return __ffs(div);
124 return (div == clk_div_mask(width) + 1) ? 0 : div;
126 return _get_table_val(table, div);
127 return div - 1;
135 unsigned int div;
137 div = _get_div(table, val, flags, width);
138 if (!div) {
145 return DIV_ROUND_UP_ULL((u64)parent_rate, div);
163 unsigned int div)
167 for (clkt = table; clkt->div; clkt++)
168 if (clkt->div == div)
173 static bool _is_valid_div(const struct clk_div_table *table, unsigned int div,
177 return is_power_of_2(div);
179 return _is_valid_table_div(table, div);
183 static int _round_up_table(const struct clk_div_table *table, int div)
188 for (clkt = table; clkt->div; clkt++) {
189 if (clkt->div == div)
190 return clkt->div;
191 else if (clkt->div < div)
194 if ((clkt->div - div) < (up - div))
195 up = clkt->div;
201 static int _round_down_table(const struct clk_div_table *table, int div)
206 for (clkt = table; clkt->div; clkt++) {
207 if (clkt->div == div)
208 return clkt->div;
209 else if (clkt->div > div)
212 if ((div - clkt->div) < (div - down))
213 down = clkt->div;
223 int div = DIV_ROUND_UP_ULL((u64)parent_rate, rate);
226 div = __roundup_pow_of_two(div);
228 div = _round_up_table(table, div);
230 return div;
276 static int _next_div(const struct clk_div_table *table, int div,
279 div++;
282 return __roundup_pow_of_two(div);
284 return _round_up_table(table, div);
286 return div;
350 int div;
352 div = clk_divider_bestdiv(hw, req->best_parent_hw, req->rate,
355 req->rate = DIV_ROUND_UP_ULL((u64)req->best_parent_rate, div);
365 int div;
367 div = _get_div(table, val, flags, width);
375 req->rate * div);
378 req->rate = DIV_ROUND_UP_ULL((u64)req->best_parent_rate, div);
474 unsigned int div, value;
476 div = DIV_ROUND_UP_ULL((u64)parent_rate, rate);
478 if (!_is_valid_div(table, div, flags))
481 value = _get_val(table, div, flags, width);
544 struct clk_divider *div;
557 div = kzalloc(sizeof(*div), GFP_KERNEL);
558 if (!div)
576 div->reg = reg;
577 div->shift = shift;
578 div->width = width;
579 div->flags = clk_divider_flags;
580 div->lock = lock;
581 div->hw.init = &init;
582 div->table = table;
585 hw = &div->hw;
588 kfree(div);
607 * @table: array of divider/value pairs ending with a div set to 0
629 struct clk_divider *div;
636 div = to_clk_divider(hw);
639 kfree(div);
649 struct clk_divider *div;
651 div = to_clk_divider(hw);
654 kfree(div);