Lines Matching full:divider
4 * Base on code in drivers/clk/clk-divider.c.
5 * See clk-divider.c for further copyright information.
28 struct clk_regmap_divider *divider = to_clk_regmap_divider(hw); in clk_regmap_divider_recalc_rate() local
31 regmap_read(divider->regmap, divider->reg, &val); in clk_regmap_divider_recalc_rate()
33 div = val >> divider->shift; in clk_regmap_divider_recalc_rate()
34 div &= div_mask(divider->width); in clk_regmap_divider_recalc_rate()
37 CLK_DIVIDER_ROUND_CLOSEST, divider->width); in clk_regmap_divider_recalc_rate()
44 struct clk_regmap_divider *divider = to_clk_regmap_divider(hw); in clk_regmap_divider_round_rate() local
46 return divider_round_rate(hw, rate, prate, NULL, divider->width, in clk_regmap_divider_round_rate()
68 struct clk_regmap_divider *divider = to_clk_regmap_divider(hw); in clk_regmap_divider_set_rate() local
73 dev_dbg(divider->dev, "%s: parent_rate=%ld, div=%d, rate=%ld\n", in clk_regmap_divider_set_rate()
76 val = div_mask(divider->width) << (divider->shift + 16); in clk_regmap_divider_set_rate()
77 val |= (div - 1) << divider->shift; in clk_regmap_divider_set_rate()
79 return regmap_write(divider->regmap, divider->reg, val); in clk_regmap_divider_set_rate()
95 struct clk_regmap_divider *divider; in devm_clk_regmap_register_divider() local
98 divider = devm_kzalloc(dev, sizeof(*divider), GFP_KERNEL); in devm_clk_regmap_register_divider()
99 if (!divider) in devm_clk_regmap_register_divider()
108 divider->dev = dev; in devm_clk_regmap_register_divider()
109 divider->regmap = regmap; in devm_clk_regmap_register_divider()
110 divider->reg = reg; in devm_clk_regmap_register_divider()
111 divider->shift = shift; in devm_clk_regmap_register_divider()
112 divider->width = width; in devm_clk_regmap_register_divider()
113 divider->hw.init = &init; in devm_clk_regmap_register_divider()
115 return devm_clk_register(dev, ÷r->hw); in devm_clk_regmap_register_divider()