diff mbox series

[v2] clk: qcom: gdsc: Bump parent usage count when GDSC is found enabled

Message ID 20220713212818.130277-1-bjorn.andersson@linaro.org (mailing list archive)
State Awaiting Upstream, archived
Headers show
Series [v2] clk: qcom: gdsc: Bump parent usage count when GDSC is found enabled | expand

Commit Message

Bjorn Andersson July 13, 2022, 9:28 p.m. UTC
When a GDSC is found to be enabled at boot the pm_runtime state will
be unbalanced as the GDSC is later turned off. Fix this by increasing
the usage counter on the power-domain, in line with how we handled the
regulator state.

Fixes: 1b771839de05 ("clk: qcom: gdsc: enable optional power domain support")
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
---

Changes since v1:
- Added error handling

 drivers/clk/qcom/gdsc.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Stephen Boyd July 18, 2022, 7:15 p.m. UTC | #1
Quoting Bjorn Andersson (2022-07-13 14:28:18)
> When a GDSC is found to be enabled at boot the pm_runtime state will
> be unbalanced as the GDSC is later turned off. Fix this by increasing
> the usage counter on the power-domain, in line with how we handled the
> regulator state.
> 
> Fixes: 1b771839de05 ("clk: qcom: gdsc: enable optional power domain support")
> Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
> ---

Acked-by: Stephen Boyd <sboyd@kernel.org>
Bjorn Andersson July 19, 2022, 4:47 a.m. UTC | #2
On Wed, 13 Jul 2022 14:28:18 -0700, Bjorn Andersson wrote:
> When a GDSC is found to be enabled at boot the pm_runtime state will
> be unbalanced as the GDSC is later turned off. Fix this by increasing
> the usage counter on the power-domain, in line with how we handled the
> regulator state.
> 
> 

Applied, thanks!

[1/1] clk: qcom: gdsc: Bump parent usage count when GDSC is found enabled
      commit: 41fff779d7948147f2440c4bb134cdf8b45b22d7

Best regards,
diff mbox series

Patch

diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c
index 6f746158d28f..d3244006c661 100644
--- a/drivers/clk/qcom/gdsc.c
+++ b/drivers/clk/qcom/gdsc.c
@@ -437,6 +437,14 @@  static int gdsc_init(struct gdsc *sc)
 				return ret;
 		}
 
+		/* ...and the power-domain */
+		ret = gdsc_pm_runtime_get(sc);
+		if (ret) {
+			if (sc->rsupply)
+				regulator_disable(sc->rsupply);
+			return ret;
+		}
+
 		/*
 		 * Votable GDSCs can be ON due to Vote from other masters.
 		 * If a Votable GDSC is ON, make sure we have a Vote.