lkml.org 
[lkml]   [2023]   [Jun]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[RFC PATCH 2/2] clk: qcom: gdsc: Add support for set_hwmode_dev
Date
Implement the GDSC specific genpd set_hwmode_dev callback in order to
switch the HW control on or off. For any GDSC that supports HW control
set this callback in order to allow its consumers to control it.

Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
---
drivers/clk/qcom/gdsc.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c
index 5358e28122ab..9a04bf2e4379 100644
--- a/drivers/clk/qcom/gdsc.c
+++ b/drivers/clk/qcom/gdsc.c
@@ -314,6 +314,26 @@ static int gdsc_enable(struct generic_pm_domain *domain)
return 0;
}

+static int gdsc_set_hwmode_dev(struct generic_pm_domain *domain,
+ struct device *dev, bool enable)
+{
+ int ret = gdsc_hwctrl(domain_to_gdsc(domain), enable);
+
+ if (ret)
+ goto out;
+
+ /*
+ * Wait for the GDSC to go through a power down and
+ * up cycle. In case there is a status polling going on
+ * before the power cycle is completed it might read an
+ * wrong status value.
+ */
+ udelay(1);
+
+out:
+ return ret;
+}
+
static int gdsc_disable(struct generic_pm_domain *domain)
{
struct gdsc *sc = domain_to_gdsc(domain);
@@ -451,6 +471,8 @@ static int gdsc_init(struct gdsc *sc)
sc->pd.power_off = gdsc_disable;
if (!sc->pd.power_on)
sc->pd.power_on = gdsc_enable;
+ if (sc->flags & HW_CTRL)
+ sc->pd.set_hwmode_dev = gdsc_set_hwmode_dev;

ret = pm_genpd_init(&sc->pd, NULL, !on);
if (ret)
--
2.34.1
\
 
 \ /
  Last update: 2023-06-27 12:41    [W:0.095 / U:0.440 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site