Commit 32b9b109 authored by Lee Jones's avatar Lee Jones Committed by Michael Turquette

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: default avatarLee Jones <lee.jones@linaro.org>
Signed-off-by: default avatarMichael Turquette <mturquette@baylibre.com>
Link: lkml.kernel.org/r/1455225554-13267-2-git-send-email-mturquette@baylibre.com
parent c0553d04
...@@ -2397,6 +2397,11 @@ static int __clk_core_init(struct clk_core *core) ...@@ -2397,6 +2397,11 @@ static int __clk_core_init(struct clk_core *core)
if (core->ops->init) if (core->ops->init)
core->ops->init(core->hw); core->ops->init(core->hw);
if (core->flags & CLK_IS_CRITICAL) {
clk_core_prepare(core);
clk_core_enable(core);
}
kref_init(&core->ref); kref_init(&core->ref);
out: out:
clk_prepare_unlock(); clk_prepare_unlock();
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#define CLK_GET_ACCURACY_NOCACHE BIT(8) /* do not use the cached clk accuracy */ #define CLK_GET_ACCURACY_NOCACHE BIT(8) /* do not use the cached clk accuracy */
#define CLK_RECALC_NEW_RATES BIT(9) /* recalc rates after notifications */ #define CLK_RECALC_NEW_RATES BIT(9) /* recalc rates after notifications */
#define CLK_SET_RATE_UNGATE BIT(10) /* clock needs to run to set rate */ #define CLK_SET_RATE_UNGATE BIT(10) /* clock needs to run to set rate */
#define CLK_IS_CRITICAL BIT(11) /* do not gate, ever */
struct clk; struct clk;
struct clk_hw; struct clk_hw;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment