mmc: msm_sdcc: put regulator in HPM before enabling it.
If regulator is enabled when it's in LPM (Low Power Mode),
it takes ~400us to enable it where as if regulator is
enabled when it's in HPM mode, it take < 200us to enable
it. This means immediately after enabling the regulator,
it's usable as it was already in HPM mode.
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
diff --git a/drivers/mmc/host/msm_sdcc.c b/drivers/mmc/host/msm_sdcc.c
index cb96e0d..f05647d 100644
--- a/drivers/mmc/host/msm_sdcc.c
+++ b/drivers/mmc/host/msm_sdcc.c
@@ -1667,6 +1667,11 @@
{
int rc = 0;
+ /* Put regulator in HPM (high power mode) */
+ rc = msmsdcc_vreg_set_optimum_mode(vreg, vreg->hpm_uA);
+ if (rc < 0)
+ goto out;
+
if (!vreg->is_enabled) {
/* Set voltage level */
rc = msmsdcc_vreg_set_voltage(vreg, vreg->level,
@@ -1683,16 +1688,6 @@
vreg->is_enabled = true;
}
- /* Put regulator in HPM (high power mode) */
- rc = msmsdcc_vreg_set_optimum_mode(vreg, vreg->hpm_uA);
- if (rc < 0)
- goto vreg_disable;
-
- goto out;
-
-vreg_disable:
- regulator_disable(vreg->reg);
- vreg->is_enabled = false;
out:
return rc;
}