diff options
author | Rajendra Nayak <rnayak@codeaurora.org> | 2016-08-29 14:33:34 +0530 |
---|---|---|
committer | Srinivas Kandagatla <srinivas.kandagatla@linaro.org> | 2016-09-27 17:18:40 +0100 |
commit | d01c650b5723289bda4861efdbf6f5875f0b394e (patch) | |
tree | a6bb927c399673bf696401c6ad9d3a91f99b233a | |
parent | 508ea3f3c5a41aacbc45faebcc5215c512195998 (diff) |
clk: qcom: Add support to enable a gdsc at boot
Add a ENABLE_AT_BOOT flag which can be used to mark gdscs which will
be turned on at boot.
Not for merge: mainly for testing.
Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
-rw-r--r-- | drivers/clk/qcom/gdsc.c | 9 | ||||
-rw-r--r-- | drivers/clk/qcom/gdsc.h | 1 |
2 files changed, 9 insertions, 1 deletions
diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c index 2cd8767e034da..ba6d196652ce0 100644 --- a/drivers/clk/qcom/gdsc.c +++ b/drivers/clk/qcom/gdsc.c @@ -42,7 +42,7 @@ #define RETAIN_MEM BIT(14) #define RETAIN_PERIPH BIT(13) -#define TIMEOUT_US 100 +#define TIMEOUT_US 500 #define domain_to_gdsc(domain) container_of(domain, struct gdsc, pd) @@ -104,6 +104,8 @@ static int gdsc_toggle_logic(struct gdsc *sc, bool en) if (gdsc_is_enabled(sc, status_reg) == en) return 0; + pr_err("Timedout %sabling gdsc %s\n", en ? "en" : "dis", sc->pd.name); + return -ETIMEDOUT; } @@ -242,11 +244,16 @@ static int gdsc_init(struct gdsc *sc) if (sc->clk_hw) sc->clk = qcom_clk_hw_get_clk(sc->clk_hw); + if (sc->flags & ENABLE_AT_BOOT) + gdsc_enable(&sc->pd); + reg = sc->gds_hw_ctrl ? sc->gds_hw_ctrl : sc->gdscr; on = gdsc_is_enabled(sc, reg); if (on < 0) return on; + if (on) + pr_err("gdsc %s is ON\n", sc->pd.name); /* * Votable GDSCs can be ON due to Vote from other masters. * If a Votable GDSC is ON, make sure we have a Vote. diff --git a/drivers/clk/qcom/gdsc.h b/drivers/clk/qcom/gdsc.h index a9e23fc81f8e1..ddb411757ffb9 100644 --- a/drivers/clk/qcom/gdsc.h +++ b/drivers/clk/qcom/gdsc.h @@ -54,6 +54,7 @@ struct gdsc { const u8 flags; #define VOTABLE BIT(0) #define CLK_TOGGLE BIT(1) +#define ENABLE_AT_BOOT BIT(2) struct reset_controller_dev *rcdev; unsigned int *resets; unsigned int reset_count; |