Lines Matching refs:div

90 	struct cv1800_clk_div *div = hw_to_cv1800_clk_div(hw);  in div_enable()  local
92 return cv1800_clk_setbit(&div->common, &div->gate); in div_enable()
97 struct cv1800_clk_div *div = hw_to_cv1800_clk_div(hw); in div_disable() local
99 cv1800_clk_clearbit(&div->common, &div->gate); in div_disable()
104 struct cv1800_clk_div *div = hw_to_cv1800_clk_div(hw); in div_is_enabled() local
106 return cv1800_clk_checkbit(&div->common, &div->gate); in div_is_enabled()
110 struct cv1800_clk_regfield *div, in div_helper_set_rate() argument
116 if (div->width == 0) in div_helper_set_rate()
121 reg = readl(common->base + div->reg); in div_helper_set_rate()
122 reg = cv1800_clk_regfield_set(reg, val, div); in div_helper_set_rate()
123 if (div->initval > 0) in div_helper_set_rate()
126 writel(reg, common->base + div->reg); in div_helper_set_rate()
134 struct cv1800_clk_regfield *div) in div_helper_get_clockdiv() argument
139 if (!div || div->initval < 0 || (div->width == 0 && div->initval <= 0)) in div_helper_get_clockdiv()
142 if (div->width == 0 && div->initval > 0) in div_helper_get_clockdiv()
143 return div->initval; in div_helper_get_clockdiv()
145 reg = readl(common->base + div->reg); in div_helper_get_clockdiv()
147 if (div->initval == 0 || DIV_GET_EN_CLK_DIV_FACTOR(reg)) in div_helper_get_clockdiv()
148 clockdiv = cv1800_clk_regfield_get(reg, div); in div_helper_get_clockdiv()
149 else if (div->initval > 0) in div_helper_get_clockdiv()
150 clockdiv = div->initval; in div_helper_get_clockdiv()
155 static u32 div_helper_round_rate(struct cv1800_clk_regfield *div, in div_helper_round_rate() argument
159 if (div->width == 0) { in div_helper_round_rate()
160 if (div->initval <= 0) in div_helper_round_rate()
163 return DIV_ROUND_UP_ULL(*prate, div->initval); in div_helper_round_rate()
167 div->width, div->flags); in div_helper_round_rate()
173 struct cv1800_clk_div *div = data; in div_round_rate() local
175 return div_helper_round_rate(&div->div, &div->common.hw, parent, in div_round_rate()
254 struct cv1800_clk_div *div = hw_to_cv1800_clk_div(hw); in div_determine_rate() local
256 return mux_helper_determine_rate(&div->common, req, in div_determine_rate()
257 div_round_rate, div); in div_determine_rate()
263 struct cv1800_clk_div *div = hw_to_cv1800_clk_div(hw); in div_recalc_rate() local
266 val = div_helper_get_clockdiv(&div->common, &div->div); in div_recalc_rate()
271 div->div.flags, div->div.width); in div_recalc_rate()
277 struct cv1800_clk_div *div = hw_to_cv1800_clk_div(hw); in div_set_rate() local
281 div->div.width, div->div.flags); in div_set_rate()
283 return div_helper_set_rate(&div->common, &div->div, val); in div_set_rate()
299 struct cv1800_clk_div *div = hw_to_cv1800_clk_div(hw); in hw_to_cv1800_clk_bypass_div() local
301 return container_of(div, struct cv1800_clk_bypass_div, div); in hw_to_cv1800_clk_bypass_div()
308 struct cv1800_clk_bypass_div *div = data; in bypass_div_round_rate() local
311 if (cv1800_clk_checkbit(&div->div.common, &div->bypass)) in bypass_div_round_rate()
315 -1, &div->div); in bypass_div_round_rate()
321 return div_round_rate(parent, parent_rate, rate, id - 1, &div->div); in bypass_div_round_rate()
327 struct cv1800_clk_bypass_div *div = hw_to_cv1800_clk_bypass_div(hw); in bypass_div_determine_rate() local
329 return mux_helper_determine_rate(&div->div.common, req, in bypass_div_determine_rate()
330 bypass_div_round_rate, div); in bypass_div_determine_rate()
336 struct cv1800_clk_bypass_div *div = hw_to_cv1800_clk_bypass_div(hw); in bypass_div_recalc_rate() local
338 if (cv1800_clk_checkbit(&div->div.common, &div->bypass)) in bypass_div_recalc_rate()
347 struct cv1800_clk_bypass_div *div = hw_to_cv1800_clk_bypass_div(hw); in bypass_div_set_rate() local
349 if (cv1800_clk_checkbit(&div->div.common, &div->bypass)) in bypass_div_set_rate()
357 struct cv1800_clk_bypass_div *div = hw_to_cv1800_clk_bypass_div(hw); in bypass_div_get_parent() local
359 if (cv1800_clk_checkbit(&div->div.common, &div->bypass)) in bypass_div_get_parent()
367 struct cv1800_clk_bypass_div *div = hw_to_cv1800_clk_bypass_div(hw); in bypass_div_set_parent() local
370 return cv1800_clk_clearbit(&div->div.common, &div->bypass); in bypass_div_set_parent()
372 return cv1800_clk_setbit(&div->div.common, &div->bypass); in bypass_div_set_parent()
422 return div_helper_round_rate(&mux->div, &mux->common.hw, parent, in mux_round_rate()
441 val = div_helper_get_clockdiv(&mux->common, &mux->div); in mux_recalc_rate()
446 mux->div.flags, mux->div.width); in mux_recalc_rate()
456 mux->div.width, mux->div.flags); in mux_set_rate()
458 return div_helper_set_rate(&mux->common, &mux->div, val); in mux_set_rate()
660 return div_helper_round_rate(&mmux->div[div_id], in mmux_round_rate()
679 struct cv1800_clk_regfield *div; in mmux_recalc_rate() local
685 div = &mmux->div[0]; in mmux_recalc_rate()
687 div = &mmux->div[1]; in mmux_recalc_rate()
689 val = div_helper_get_clockdiv(&mmux->common, div); in mmux_recalc_rate()
694 div->flags, div->width); in mmux_recalc_rate()
701 struct cv1800_clk_regfield *div; in mmux_set_rate() local
708 div = &mmux->div[0]; in mmux_set_rate()
710 div = &mmux->div[1]; in mmux_set_rate()
713 div->width, div->flags); in mmux_set_rate()
715 return div_helper_set_rate(&mmux->common, div, val); in mmux_set_rate()