Support CLK_IS_CRITICAL flag. Simply do not disable the clock even when the enable count is zero. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- drivers/clk/clk.c | 3 +++ include/linux/clk.h | 1 + 2 files changed, 4 insertions(+) diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 6a2d8ad178..ea3304bc7c 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -87,6 +87,9 @@ void clk_disable(struct clk *clk) clk->enable_count--; if (!clk->enable_count) { + if (clk->flags & CLK_IS_CRITICAL) + return; + if (clk->ops->disable) clk->ops->disable(clk); diff --git a/include/linux/clk.h b/include/linux/clk.h index 5b0a93095d..5ad12c571c 100644 --- a/include/linux/clk.h +++ b/include/linux/clk.h @@ -286,6 +286,7 @@ static inline void clk_put(struct clk *clk) #define CLK_SET_RATE_PARENT (1 << 0) /* propagate rate change up one level */ #define CLK_IGNORE_UNUSED (1 << 3) /* do not gate even if unused */ +#define CLK_IS_CRITICAL (1 << 11) /* do not gate, ever */ /* parents need enable during gate/ungate, set rate and re-parent */ #define CLK_OPS_PARENT_ENABLE (1 << 12) -- 2.20.1 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox