diff options
author | Lee Jones <lee.jones@linaro.org> | 2016-02-11 22:19:09 +0100 |
---|---|---|
committer | Michael Turquette <mturquette@baylibre.com> | 2016-04-09 20:58:10 +0200 |
commit | 32b9b10961860860268961d9aad0c56a73018c37 (patch) | |
tree | 11f87cde0a2b51009dac9bd872421c95cb487009 /drivers/clk/clk.c | |
parent | dt-bindings: arm: add DT binding for Marvell AP806 system controller (diff) | |
download | linux-32b9b10961860860268961d9aad0c56a73018c37.tar.xz linux-32b9b10961860860268961d9aad0c56a73018c37.zip |
clk: Allow clocks to be marked as CRITICAL
Critical clocks are those which must not be gated, else undefined
or catastrophic failure would occur. Here we have chosen to
ensure the prepare/enable counts are correctly incremented, so as
not to confuse users with enabled clocks with no visible users.
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Michael Turquette <mturquette@baylibre.com>
Link: lkml.kernel.org/r/1455225554-13267-2-git-send-email-mturquette@baylibre.com
Diffstat (limited to 'drivers/clk/clk.c')
-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 fb74dc1f7520..275201fd7b01 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -2397,6 +2397,11 @@ static int __clk_core_init(struct clk_core *core) if (core->ops->init) core->ops->init(core->hw); + if (core->flags & CLK_IS_CRITICAL) { + clk_core_prepare(core); + clk_core_enable(core); + } + kref_init(&core->ref); out: clk_prepare_unlock(); |