diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/clk-provider.h | 17 | ||||
-rw-r--r-- | include/linux/clk.h | 28 | ||||
-rw-r--r-- | include/linux/clk/ti.h | 4 |
3 files changed, 46 insertions, 3 deletions
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index 12f13b0673af..17dd6e9439d1 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h | |||
@@ -175,9 +175,12 @@ struct clk_ops { | |||
175 | unsigned long parent_rate); | 175 | unsigned long parent_rate); |
176 | long (*round_rate)(struct clk_hw *hw, unsigned long rate, | 176 | long (*round_rate)(struct clk_hw *hw, unsigned long rate, |
177 | unsigned long *parent_rate); | 177 | unsigned long *parent_rate); |
178 | long (*determine_rate)(struct clk_hw *hw, unsigned long rate, | 178 | long (*determine_rate)(struct clk_hw *hw, |
179 | unsigned long *best_parent_rate, | 179 | unsigned long rate, |
180 | struct clk_hw **best_parent_hw); | 180 | unsigned long min_rate, |
181 | unsigned long max_rate, | ||
182 | unsigned long *best_parent_rate, | ||
183 | struct clk_hw **best_parent_hw); | ||
181 | int (*set_parent)(struct clk_hw *hw, u8 index); | 184 | int (*set_parent)(struct clk_hw *hw, u8 index); |
182 | u8 (*get_parent)(struct clk_hw *hw); | 185 | u8 (*get_parent)(struct clk_hw *hw); |
183 | int (*set_rate)(struct clk_hw *hw, unsigned long rate, | 186 | int (*set_rate)(struct clk_hw *hw, unsigned long rate, |
@@ -573,9 +576,17 @@ bool __clk_is_prepared(struct clk *clk); | |||
573 | bool __clk_is_enabled(struct clk *clk); | 576 | bool __clk_is_enabled(struct clk *clk); |
574 | struct clk *__clk_lookup(const char *name); | 577 | struct clk *__clk_lookup(const char *name); |
575 | long __clk_mux_determine_rate(struct clk_hw *hw, unsigned long rate, | 578 | long __clk_mux_determine_rate(struct clk_hw *hw, unsigned long rate, |
579 | unsigned long min_rate, | ||
580 | unsigned long max_rate, | ||
576 | unsigned long *best_parent_rate, | 581 | unsigned long *best_parent_rate, |
577 | struct clk_hw **best_parent_p); | 582 | struct clk_hw **best_parent_p); |
583 | unsigned long __clk_determine_rate(struct clk_hw *core, | ||
584 | unsigned long rate, | ||
585 | unsigned long min_rate, | ||
586 | unsigned long max_rate); | ||
578 | long __clk_mux_determine_rate_closest(struct clk_hw *hw, unsigned long rate, | 587 | long __clk_mux_determine_rate_closest(struct clk_hw *hw, unsigned long rate, |
588 | unsigned long min_rate, | ||
589 | unsigned long max_rate, | ||
579 | unsigned long *best_parent_rate, | 590 | unsigned long *best_parent_rate, |
580 | struct clk_hw **best_parent_p); | 591 | struct clk_hw **best_parent_p); |
581 | 592 | ||
diff --git a/include/linux/clk.h b/include/linux/clk.h index ba7e9eda4347..8381bbfbc308 100644 --- a/include/linux/clk.h +++ b/include/linux/clk.h | |||
@@ -314,6 +314,34 @@ int clk_set_rate(struct clk *clk, unsigned long rate); | |||
314 | bool clk_has_parent(struct clk *clk, struct clk *parent); | 314 | bool clk_has_parent(struct clk *clk, struct clk *parent); |
315 | 315 | ||
316 | /** | 316 | /** |
317 | * clk_set_rate_range - set a rate range for a clock source | ||
318 | * @clk: clock source | ||
319 | * @min: desired minimum clock rate in Hz, inclusive | ||
320 | * @max: desired maximum clock rate in Hz, inclusive | ||
321 | * | ||
322 | * Returns success (0) or negative errno. | ||
323 | */ | ||
324 | int clk_set_rate_range(struct clk *clk, unsigned long min, unsigned long max); | ||
325 | |||
326 | /** | ||
327 | * clk_set_min_rate - set a minimum clock rate for a clock source | ||
328 | * @clk: clock source | ||
329 | * @rate: desired minimum clock rate in Hz, inclusive | ||
330 | * | ||
331 | * Returns success (0) or negative errno. | ||
332 | */ | ||
333 | int clk_set_min_rate(struct clk *clk, unsigned long rate); | ||
334 | |||
335 | /** | ||
336 | * clk_set_max_rate - set a maximum clock rate for a clock source | ||
337 | * @clk: clock source | ||
338 | * @rate: desired maximum clock rate in Hz, inclusive | ||
339 | * | ||
340 | * Returns success (0) or negative errno. | ||
341 | */ | ||
342 | int clk_set_max_rate(struct clk *clk, unsigned long rate); | ||
343 | |||
344 | /** | ||
317 | * clk_set_parent - set the parent clock source for this clock | 345 | * clk_set_parent - set the parent clock source for this clock |
318 | * @clk: clock source | 346 | * @clk: clock source |
319 | * @parent: parent clock source | 347 | * @parent: parent clock source |
diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h index 310122dcd9b5..0eac65054283 100644 --- a/include/linux/clk/ti.h +++ b/include/linux/clk/ti.h | |||
@@ -271,6 +271,8 @@ int omap3_noncore_dpll_set_rate_and_parent(struct clk_hw *hw, | |||
271 | u8 index); | 271 | u8 index); |
272 | long omap3_noncore_dpll_determine_rate(struct clk_hw *hw, | 272 | long omap3_noncore_dpll_determine_rate(struct clk_hw *hw, |
273 | unsigned long rate, | 273 | unsigned long rate, |
274 | unsigned long min_rate, | ||
275 | unsigned long max_rate, | ||
274 | unsigned long *best_parent_rate, | 276 | unsigned long *best_parent_rate, |
275 | struct clk_hw **best_parent_clk); | 277 | struct clk_hw **best_parent_clk); |
276 | unsigned long omap4_dpll_regm4xen_recalc(struct clk_hw *hw, | 278 | unsigned long omap4_dpll_regm4xen_recalc(struct clk_hw *hw, |
@@ -280,6 +282,8 @@ long omap4_dpll_regm4xen_round_rate(struct clk_hw *hw, | |||
280 | unsigned long *parent_rate); | 282 | unsigned long *parent_rate); |
281 | long omap4_dpll_regm4xen_determine_rate(struct clk_hw *hw, | 283 | long omap4_dpll_regm4xen_determine_rate(struct clk_hw *hw, |
282 | unsigned long rate, | 284 | unsigned long rate, |
285 | unsigned long min_rate, | ||
286 | unsigned long max_rate, | ||
283 | unsigned long *best_parent_rate, | 287 | unsigned long *best_parent_rate, |
284 | struct clk_hw **best_parent_clk); | 288 | struct clk_hw **best_parent_clk); |
285 | u8 omap2_init_dpll_parent(struct clk_hw *hw); | 289 | u8 omap2_init_dpll_parent(struct clk_hw *hw); |