• Home
  • Raw
  • Download

Lines Matching +full:clk +full:- +full:div

11 #include <linux/clk-provider.h>
21 * prepare - clk_prepare only ensures that parents are prepared
22 * enable - clk_enable only ensures that parents are enabled
23 * rate - rate is fixed. clk->rate = parent->rate / div * mult
24 * parent - fixed parent. No clk_set_parent support
33 rate = (unsigned long long int)parent_rate * fix->mult; in clk_factor_recalc_rate()
34 do_div(rate, fix->div); in clk_factor_recalc_rate()
46 best_parent = (rate / fix->mult) * fix->div; in clk_factor_round_rate()
50 return (*prate / fix->div) * fix->mult; in clk_factor_round_rate()
74 unsigned int mult, unsigned int div) in clk_hw_register_fixed_factor() argument
83 return ERR_PTR(-ENOMEM); in clk_hw_register_fixed_factor()
86 fix->mult = mult; in clk_hw_register_fixed_factor()
87 fix->div = div; in clk_hw_register_fixed_factor()
88 fix->hw.init = &init; in clk_hw_register_fixed_factor()
96 hw = &fix->hw; in clk_hw_register_fixed_factor()
107 struct clk *clk_register_fixed_factor(struct device *dev, const char *name, in clk_register_fixed_factor()
109 unsigned int mult, unsigned int div) in clk_register_fixed_factor() argument
114 div); in clk_register_fixed_factor()
117 return hw->clk; in clk_register_fixed_factor()
121 void clk_unregister_fixed_factor(struct clk *clk) in clk_unregister_fixed_factor() argument
125 hw = __clk_get_hw(clk); in clk_unregister_fixed_factor()
129 clk_unregister(clk); in clk_unregister_fixed_factor()
147 { .compatible = "allwinner,sun4i-a10-pll3-2x-clk" },
151 static struct clk *_of_fixed_factor_clk_setup(struct device_node *node) in _of_fixed_factor_clk_setup()
153 struct clk *clk; in _of_fixed_factor_clk_setup() local
154 const char *clk_name = node->name; in _of_fixed_factor_clk_setup()
157 u32 div, mult; in _of_fixed_factor_clk_setup() local
160 if (of_property_read_u32(node, "clock-div", &div)) { in _of_fixed_factor_clk_setup()
161 pr_err("%s Fixed factor clock <%s> must have a clock-div property\n", in _of_fixed_factor_clk_setup()
162 __func__, node->name); in _of_fixed_factor_clk_setup()
163 return ERR_PTR(-EIO); in _of_fixed_factor_clk_setup()
166 if (of_property_read_u32(node, "clock-mult", &mult)) { in _of_fixed_factor_clk_setup()
167 pr_err("%s Fixed factor clock <%s> must have a clock-mult property\n", in _of_fixed_factor_clk_setup()
168 __func__, node->name); in _of_fixed_factor_clk_setup()
169 return ERR_PTR(-EIO); in _of_fixed_factor_clk_setup()
172 of_property_read_string(node, "clock-output-names", &clk_name); in _of_fixed_factor_clk_setup()
178 clk = clk_register_fixed_factor(NULL, clk_name, parent_name, flags, in _of_fixed_factor_clk_setup()
179 mult, div); in _of_fixed_factor_clk_setup()
180 if (IS_ERR(clk)) { in _of_fixed_factor_clk_setup()
187 return clk; in _of_fixed_factor_clk_setup()
190 ret = of_clk_add_provider(node, of_clk_src_simple_get, clk); in _of_fixed_factor_clk_setup()
192 clk_unregister(clk); in _of_fixed_factor_clk_setup()
196 return clk; in _of_fixed_factor_clk_setup()
200 * of_fixed_factor_clk_setup() - Setup function for simple fixed factor clock
206 CLK_OF_DECLARE(fixed_factor_clk, "fixed-factor-clock",
211 struct clk *clk = platform_get_drvdata(pdev); in of_fixed_factor_clk_remove() local
213 of_clk_del_provider(pdev->dev.of_node); in of_fixed_factor_clk_remove()
214 clk_unregister_fixed_factor(clk); in of_fixed_factor_clk_remove()
221 struct clk *clk; in of_fixed_factor_clk_probe() local
227 clk = _of_fixed_factor_clk_setup(pdev->dev.of_node); in of_fixed_factor_clk_probe()
228 if (IS_ERR(clk)) in of_fixed_factor_clk_probe()
229 return PTR_ERR(clk); in of_fixed_factor_clk_probe()
231 platform_set_drvdata(pdev, clk); in of_fixed_factor_clk_probe()
237 { .compatible = "fixed-factor-clock" },