From 6cf1bd40649c855b71e7345b2b5ad4e5a053c4ca Mon Sep 17 00:00:00 2001 From: Naveen Yadav Date: Tue, 12 May 2020 19:32:02 +0530 Subject: [PATCH] clk: qcom: gdsc-regulator: Update support to skip GDSC disable Update gdsc_is_enable and gdsc_enable to return 0 for the GDSC which needs only GDSC disable support from HLOS. Change-Id: Ie1e9faf806f504fc56419c5c557d3063d031d804 Signed-off-by: Naveen Yadav --- drivers/clk/qcom/gdsc-regulator.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/drivers/clk/qcom/gdsc-regulator.c b/drivers/clk/qcom/gdsc-regulator.c index 4db1666ea964..2c5e253f640b 100644 --- a/drivers/clk/qcom/gdsc-regulator.c +++ b/drivers/clk/qcom/gdsc-regulator.c @@ -163,6 +163,9 @@ static int gdsc_is_enabled(struct regulator_dev *rdev) if (!sc->toggle_logic) return !sc->resets_asserted; + if (sc->skip_disable_before_enable) + return false; + return sc->is_gdsc_enabled; } @@ -172,6 +175,9 @@ static int gdsc_enable(struct regulator_dev *rdev) uint32_t regval, hw_ctrl_regval = 0x0; int i, ret = 0; + if (sc->skip_disable_before_enable) + return 0; + if (sc->root_en || sc->force_root_en) { clk_prepare_enable(sc->clocks[sc->root_clk_idx]); sc->is_root_clk_voted = true; @@ -314,7 +320,6 @@ static int gdsc_enable(struct regulator_dev *rdev) } sc->is_gdsc_enabled = true; - sc->skip_disable_before_enable = false; return ret; } @@ -325,16 +330,6 @@ static int gdsc_disable(struct regulator_dev *rdev) uint32_t regval; int i, ret = 0, parent_enabled; - /* - * Protect GDSC against late_init disabling when the GDSC is enabled - * by an entity outside external to HLOS. - */ - if (sc->skip_disable_before_enable) { - dev_dbg(&rdev->dev, "Skip Disabling: %s\n", sc->rdesc.name); - sc->skip_disable_before_enable = false; - return 0; - } - if (rdev->supply) { regulator_lock(rdev->supply->rdev); parent_enabled = regulator_is_enabled(rdev->supply);