diff options
author | Ulf Hansson <ulf.hansson@linaro.org> | 2012-10-10 07:42:27 -0400 |
---|---|---|
committer | Mike Turquette <mturquette@ti.com> | 2012-11-09 19:47:06 -0500 |
commit | a816d250e866b01bd18b0dd2bcbe5f1951310094 (patch) | |
tree | cbb6ebfcdea25ed695a6f78064e80136858c8e6b | |
parent | b2302c873bb7959958ffad4625a0876fc9294640 (diff) |
clk: ux500: Support for prcmu_scalable_rate clock
The prcmu_scalable_rate clock can change rate but is not gateable.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Mike Turquette <mturquette@linaro.org>
-rw-r--r-- | drivers/clk/ux500/clk-prcmu.c | 17 | ||||
-rw-r--r-- | drivers/clk/ux500/clk.h | 6 |
2 files changed, 23 insertions, 0 deletions
diff --git a/drivers/clk/ux500/clk-prcmu.c b/drivers/clk/ux500/clk-prcmu.c index 04577ca6a308..74faa7e3cf59 100644 --- a/drivers/clk/ux500/clk-prcmu.c +++ b/drivers/clk/ux500/clk-prcmu.c | |||
@@ -187,6 +187,13 @@ static struct clk_ops clk_prcmu_gate_ops = { | |||
187 | .recalc_rate = clk_prcmu_recalc_rate, | 187 | .recalc_rate = clk_prcmu_recalc_rate, |
188 | }; | 188 | }; |
189 | 189 | ||
190 | static struct clk_ops clk_prcmu_scalable_rate_ops = { | ||
191 | .is_enabled = clk_prcmu_is_enabled, | ||
192 | .recalc_rate = clk_prcmu_recalc_rate, | ||
193 | .round_rate = clk_prcmu_round_rate, | ||
194 | .set_rate = clk_prcmu_set_rate, | ||
195 | }; | ||
196 | |||
190 | static struct clk_ops clk_prcmu_rate_ops = { | 197 | static struct clk_ops clk_prcmu_rate_ops = { |
191 | .is_enabled = clk_prcmu_is_enabled, | 198 | .is_enabled = clk_prcmu_is_enabled, |
192 | .recalc_rate = clk_prcmu_recalc_rate, | 199 | .recalc_rate = clk_prcmu_recalc_rate, |
@@ -278,6 +285,16 @@ struct clk *clk_reg_prcmu_gate(const char *name, | |||
278 | &clk_prcmu_gate_ops); | 285 | &clk_prcmu_gate_ops); |
279 | } | 286 | } |
280 | 287 | ||
288 | struct clk *clk_reg_prcmu_scalable_rate(const char *name, | ||
289 | const char *parent_name, | ||
290 | u8 cg_sel, | ||
291 | unsigned long rate, | ||
292 | unsigned long flags) | ||
293 | { | ||
294 | return clk_reg_prcmu(name, parent_name, cg_sel, rate, flags, | ||
295 | &clk_prcmu_scalable_rate_ops); | ||
296 | } | ||
297 | |||
281 | struct clk *clk_reg_prcmu_rate(const char *name, | 298 | struct clk *clk_reg_prcmu_rate(const char *name, |
282 | const char *parent_name, | 299 | const char *parent_name, |
283 | u8 cg_sel, | 300 | u8 cg_sel, |
diff --git a/drivers/clk/ux500/clk.h b/drivers/clk/ux500/clk.h index f36eeedca493..c3e449169a83 100644 --- a/drivers/clk/ux500/clk.h +++ b/drivers/clk/ux500/clk.h | |||
@@ -35,6 +35,12 @@ struct clk *clk_reg_prcmu_gate(const char *name, | |||
35 | u8 cg_sel, | 35 | u8 cg_sel, |
36 | unsigned long flags); | 36 | unsigned long flags); |
37 | 37 | ||
38 | struct clk *clk_reg_prcmu_scalable_rate(const char *name, | ||
39 | const char *parent_name, | ||
40 | u8 cg_sel, | ||
41 | unsigned long rate, | ||
42 | unsigned long flags); | ||
43 | |||
38 | struct clk *clk_reg_prcmu_rate(const char *name, | 44 | struct clk *clk_reg_prcmu_rate(const char *name, |
39 | const char *parent_name, | 45 | const char *parent_name, |
40 | u8 cg_sel, | 46 | u8 cg_sel, |