diff options
author | Shawn Guo <shawn.guo@linaro.org> | 2012-04-12 08:50:18 -0400 |
---|---|---|
committer | Mike Turquette <mturquette@linaro.org> | 2012-04-24 19:37:40 -0400 |
commit | 1c0035d710dd3bfa86d58f851b8737c7f11a9bbc (patch) | |
tree | 37ebd1a44c408aecf7df5331d2b5a32e81818baf /drivers/clk | |
parent | 81536e072b54e30bbfd1a9a6b8094f7b3dd5321c (diff) |
clk: pass parent_rate into .set_rate
For most of .set_rate implementation, parent_rate will be used, so just
like passing parent_rate into .recalc_rate, let's pass parent_rate into
.set_rate too.
It also updates the kernel doc for .set_rate ops.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Mike Turquette <mturquette@linaro.org>
Diffstat (limited to 'drivers/clk')
-rw-r--r-- | drivers/clk/clk-divider.c | 5 | ||||
-rw-r--r-- | drivers/clk/clk.c | 2 |
2 files changed, 4 insertions, 3 deletions
diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c index 03b127c0313b..90627e4069af 100644 --- a/drivers/clk/clk-divider.c +++ b/drivers/clk/clk-divider.c | |||
@@ -111,14 +111,15 @@ static long clk_divider_round_rate(struct clk_hw *hw, unsigned long rate, | |||
111 | return *prate / div; | 111 | return *prate / div; |
112 | } | 112 | } |
113 | 113 | ||
114 | static int clk_divider_set_rate(struct clk_hw *hw, unsigned long rate) | 114 | static int clk_divider_set_rate(struct clk_hw *hw, unsigned long rate, |
115 | unsigned long parent_rate) | ||
115 | { | 116 | { |
116 | struct clk_divider *divider = to_clk_divider(hw); | 117 | struct clk_divider *divider = to_clk_divider(hw); |
117 | unsigned int div; | 118 | unsigned int div; |
118 | unsigned long flags = 0; | 119 | unsigned long flags = 0; |
119 | u32 val; | 120 | u32 val; |
120 | 121 | ||
121 | div = __clk_get_rate(__clk_get_parent(hw->clk)) / rate; | 122 | div = parent_rate / rate; |
122 | 123 | ||
123 | if (!(divider->flags & CLK_DIVIDER_ONE_BASED)) | 124 | if (!(divider->flags & CLK_DIVIDER_ONE_BASED)) |
124 | div--; | 125 | div--; |
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 1ab4f7e5c7ef..62ecac53b0a2 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c | |||
@@ -848,7 +848,7 @@ static void clk_change_rate(struct clk *clk) | |||
848 | old_rate = clk->rate; | 848 | old_rate = clk->rate; |
849 | 849 | ||
850 | if (clk->ops->set_rate) | 850 | if (clk->ops->set_rate) |
851 | clk->ops->set_rate(clk->hw, clk->new_rate); | 851 | clk->ops->set_rate(clk->hw, clk->new_rate, clk->parent->rate); |
852 | 852 | ||
853 | if (clk->ops->recalc_rate) | 853 | if (clk->ops->recalc_rate) |
854 | clk->rate = clk->ops->recalc_rate(clk->hw, | 854 | clk->rate = clk->ops->recalc_rate(clk->hw, |