Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c1c79fe authored by Naveen Yadav's avatar Naveen Yadav
Browse files

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: default avatarNaveen Yadav <naveenky@codeaurora.org>
parent a7220f4d
Loading
Loading
Loading
Loading
+6 −11
Original line number Original line Diff line number Diff line
@@ -181,6 +181,9 @@ static int gdsc_is_enabled(struct regulator_dev *rdev)
	if (!sc->toggle_logic)
	if (!sc->toggle_logic)
		return !sc->resets_asserted;
		return !sc->resets_asserted;


	if (sc->skip_disable_before_enable)
		return false;

	regmap_read(sc->regmap, REG_OFFSET, &regval);
	regmap_read(sc->regmap, REG_OFFSET, &regval);


	if (regval & PWR_ON_MASK) {
	if (regval & PWR_ON_MASK) {
@@ -202,6 +205,9 @@ static int gdsc_enable(struct regulator_dev *rdev)
	uint32_t regval, cfg_regval, hw_ctrl_regval = 0x0;
	uint32_t regval, cfg_regval, hw_ctrl_regval = 0x0;
	int i, ret = 0;
	int i, ret = 0;


	if (sc->skip_disable_before_enable)
		return 0;

	if (sc->parent_regulator) {
	if (sc->parent_regulator) {
		ret = regulator_set_voltage(sc->parent_regulator,
		ret = regulator_set_voltage(sc->parent_regulator,
				RPMH_REGULATOR_LEVEL_LOW_SVS, INT_MAX);
				RPMH_REGULATOR_LEVEL_LOW_SVS, INT_MAX);
@@ -380,7 +386,6 @@ static int gdsc_enable(struct regulator_dev *rdev)
		clk_disable_unprepare(sc->clocks[sc->root_clk_idx]);
		clk_disable_unprepare(sc->clocks[sc->root_clk_idx]);


	sc->is_gdsc_enabled = true;
	sc->is_gdsc_enabled = true;
	sc->skip_disable_before_enable = false;


	mutex_unlock(&gdsc_seq_lock);
	mutex_unlock(&gdsc_seq_lock);


@@ -393,16 +398,6 @@ static int gdsc_disable(struct regulator_dev *rdev)
	uint32_t regval;
	uint32_t regval;
	int i, ret = 0;
	int i, ret = 0;


	/*
	 * 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;
	}

	mutex_lock(&gdsc_seq_lock);
	mutex_lock(&gdsc_seq_lock);


	if (sc->force_root_en)
	if (sc->force_root_en)