aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk/clk.c
diff options
context:
space:
mode:
authorSaravana Kannan <skannan@codeaurora.org>2012-05-15 16:43:42 -0400
committerMike Turquette <mturquette@linaro.org>2012-05-16 01:42:10 -0400
commit7e0fa1b5fa91d9aa456d102c273b2cf0f2e95d39 (patch)
treee9292f18566fa2289227d2c207a48c798e952618 /drivers/clk/clk.c
parent1df5c939f6d9dff7dfbe108d93133b9636baa607 (diff)
clk: Fix CLK_SET_RATE_GATE flag validation in clk_set_rate().
The clk_set_rate() code shouldn't check the clock's enable count when validating CLK_SET_RATE_GATE flag since the enable count could change after the validation. Similar to clk_set_parent(), it should instead check the prepare count. The prepare count should go to zero only when the end user expects the clock to not be enabled in the future. Since the code already grabs the prepare count before validation, it's not possible for prepare count to change after validation and by association not possible for a well behaving end user to enable the clock while the set rate is in progress. Signed-off-by: Saravana Kannan <skannan@codeaurora.org> Reviewed-by: Richard Zhao <richard.zhao@freescale.com> Signed-off-by: Mike Turquette <mturquette@linaro.org>
Diffstat (limited to 'drivers/clk/clk.c')
-rw-r--r--drivers/clk/clk.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index a7e5dd59e19d..687b00d67c8a 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -903,7 +903,7 @@ int clk_set_rate(struct clk *clk, unsigned long rate)
903 if (rate == clk->rate) 903 if (rate == clk->rate)
904 goto out; 904 goto out;
905 905
906 if ((clk->flags & CLK_SET_RATE_GATE) && __clk_is_enabled(clk)) { 906 if ((clk->flags & CLK_SET_RATE_GATE) && clk->prepare_count) {
907 ret = -EBUSY; 907 ret = -EBUSY;
908 goto out; 908 goto out;
909 } 909 }