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

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
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -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();
+1 −0
Original line number Diff line number Diff line
@@ -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;