diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-11-28 23:57:54 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-11-28 23:57:53 -0800 |
| commit | 52ce5dee286b172356869b5cec3c7c083498eb5b (patch) | |
| tree | e488f2feda13a14c4255109d0690982b90d9c5bd /drivers/clk | |
| parent | 608623f6b3bf3ca65e02bf4dd165f33f7ecf9141 (diff) | |
| parent | a2c13a4cc29640ab823a1e949b533385aeb7746b (diff) | |
Merge "clk: WARN_ON about to disable a critical clock"
Diffstat (limited to 'drivers/clk')
| -rw-r--r-- | drivers/clk/clk.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 25ab30063072..b42b68482279 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -825,6 +825,9 @@ static void clk_core_unprepare(struct clk_core *core) if (WARN_ON(core->prepare_count == 0)) return; + if (WARN_ON(core->prepare_count == 1 && core->flags & CLK_IS_CRITICAL)) + return; + if (--core->prepare_count > 0) return; @@ -940,6 +943,9 @@ static void clk_core_disable(struct clk_core *core) if (WARN_ON(core->enable_count == 0)) return; + if (WARN_ON(core->enable_count == 1 && core->flags & CLK_IS_CRITICAL)) + return; + if (--core->enable_count > 0) return; @@ -3121,6 +3127,11 @@ static int __clk_init(struct device *dev, struct clk *clk_user) 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(); |
