diff options
author | Viresh Kumar <viresh.kumar@st.com> | 2012-04-11 12:33:42 +0200 |
---|---|---|
committer | Mike Turquette <mturquette@linaro.org> | 2012-05-02 03:13:38 +0200 |
commit | 0e1c03017549a9df513622b3f15ff38eb8d35a62 (patch) | |
tree | f2fc7de20e598493916a27fbb7b6ba8104850a2f /drivers/clk | |
parent | clk: Use a separate struct for holding init data. (diff) | |
download | linux-0e1c03017549a9df513622b3f15ff38eb8d35a62.tar.xz linux-0e1c03017549a9df513622b3f15ff38eb8d35a62.zip |
clk: clk_set_rate() must fail if CLK_SET_RATE_GATE is set and clk is enabled
This is well documented but isn't implemented. clk_set_rate() must check if
flags have CLK_SET_RATE_GATE bit set and is enabled too.
Signed-off-by: Viresh Kumar <viresh.kumar@st.com>
Signed-off-by: Mike Turquette <mturquette@linaro.org>
Diffstat (limited to 'drivers/clk')
-rw-r--r-- | drivers/clk/clk.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index c81803b9ba35..8149764f8438 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -900,6 +900,11 @@ int clk_set_rate(struct clk *clk, unsigned long rate) if (rate == clk->rate) goto out; + if ((clk->flags & CLK_SET_RATE_GATE) && __clk_is_enabled(clk)) { + ret = -EBUSY; + goto out; + } + /* calculate new rates and get the topmost changed clock */ top = clk_calc_new_rates(clk, rate); if (!top) { |