mirror of https://gitee.com/openkylin/linux.git
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
This commit is contained in:
parent
c0553d04f8
commit
32b9b10961
|
@ -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();
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#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_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_hw;
|
||||
|
|
Loading…
Reference in New Issue