Lines Matching refs:divider

44 static unsigned int _get_maxdiv(struct clk_divider *divider)  in _get_maxdiv()  argument
46 if (divider->flags & CLK_DIVIDER_ONE_BASED) in _get_maxdiv()
47 return div_mask(divider); in _get_maxdiv()
48 if (divider->flags & CLK_DIVIDER_POWER_OF_TWO) in _get_maxdiv()
49 return 1 << div_mask(divider); in _get_maxdiv()
50 if (divider->table) in _get_maxdiv()
51 return _get_table_maxdiv(divider->table); in _get_maxdiv()
52 return div_mask(divider) + 1; in _get_maxdiv()
66 static unsigned int _get_div(struct clk_divider *divider, unsigned int val) in _get_div() argument
68 if (divider->flags & CLK_DIVIDER_ONE_BASED) in _get_div()
70 if (divider->flags & CLK_DIVIDER_POWER_OF_TWO) in _get_div()
72 if (divider->table) in _get_div()
73 return _get_table_div(divider->table, val); in _get_div()
88 static unsigned int _get_val(struct clk_divider *divider, u8 div) in _get_val() argument
90 if (divider->flags & CLK_DIVIDER_ONE_BASED) in _get_val()
92 if (divider->flags & CLK_DIVIDER_POWER_OF_TWO) in _get_val()
94 if (divider->table) in _get_val()
95 return _get_table_val(divider->table, div); in _get_val()
102 struct clk_divider *divider = to_clk_divider(hw); in ti_clk_divider_recalc_rate() local
105 val = ti_clk_ll_ops->clk_readl(divider->reg) >> divider->shift; in ti_clk_divider_recalc_rate()
106 val &= div_mask(divider); in ti_clk_divider_recalc_rate()
108 div = _get_div(divider, val); in ti_clk_divider_recalc_rate()
110 WARN(!(divider->flags & CLK_DIVIDER_ALLOW_ZERO), in ti_clk_divider_recalc_rate()
136 static bool _is_valid_div(struct clk_divider *divider, unsigned int div) in _is_valid_div() argument
138 if (divider->flags & CLK_DIVIDER_POWER_OF_TWO) in _is_valid_div()
140 if (divider->table) in _is_valid_div()
141 return _is_valid_table_div(divider->table, div); in _is_valid_div()
148 struct clk_divider *divider = to_clk_divider(hw); in ti_clk_divider_bestdiv() local
156 maxdiv = _get_maxdiv(divider); in ti_clk_divider_bestdiv()
173 if (!_is_valid_div(divider, i)) in ti_clk_divider_bestdiv()
195 bestdiv = _get_maxdiv(divider); in ti_clk_divider_bestdiv()
215 struct clk_divider *divider; in ti_clk_divider_set_rate() local
222 divider = to_clk_divider(hw); in ti_clk_divider_set_rate()
225 value = _get_val(divider, div); in ti_clk_divider_set_rate()
227 if (value > div_mask(divider)) in ti_clk_divider_set_rate()
228 value = div_mask(divider); in ti_clk_divider_set_rate()
230 if (divider->flags & CLK_DIVIDER_HIWORD_MASK) { in ti_clk_divider_set_rate()
231 val = div_mask(divider) << (divider->shift + 16); in ti_clk_divider_set_rate()
233 val = ti_clk_ll_ops->clk_readl(divider->reg); in ti_clk_divider_set_rate()
234 val &= ~(div_mask(divider) << divider->shift); in ti_clk_divider_set_rate()
236 val |= value << divider->shift; in ti_clk_divider_set_rate()
237 ti_clk_ll_ops->clk_writel(val, divider->reg); in ti_clk_divider_set_rate()