msm: mdss: use usleep_range instead of msleep in mdss util
msleep API runs in atomic context and can add extra delay after sleep timeout. This can add extra delays for panel regulator turn on/off sequence which affects device suspend/resume timing. Moving to usleep_range enables the delay backed by hrtimers. Change-Id: Id9e50ab02c0166de41316eeb948e93cdce432e15 Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org> [cip@codeaurora.org: Resolved merge conflicts] Signed-off-by: Clarence Ip <cip@codeaurora.org>
This commit is contained in:
parent
5214f4a020
commit
07c71c6ce4
1 changed files with 12 additions and 6 deletions
|
@ -224,7 +224,8 @@ int msm_dss_enable_vreg(struct dss_vreg *in_vreg, int num_vreg, int enable)
|
|||
}
|
||||
need_sleep = !regulator_is_enabled(in_vreg[i].vreg);
|
||||
if (in_vreg[i].pre_on_sleep && need_sleep)
|
||||
msleep(in_vreg[i].pre_on_sleep);
|
||||
usleep_range(in_vreg[i].pre_on_sleep,
|
||||
in_vreg[i].pre_on_sleep);
|
||||
rc = regulator_set_load(in_vreg[i].vreg,
|
||||
in_vreg[i].enable_load);
|
||||
if (rc < 0) {
|
||||
|
@ -235,7 +236,8 @@ int msm_dss_enable_vreg(struct dss_vreg *in_vreg, int num_vreg, int enable)
|
|||
}
|
||||
rc = regulator_enable(in_vreg[i].vreg);
|
||||
if (in_vreg[i].post_on_sleep && need_sleep)
|
||||
msleep(in_vreg[i].post_on_sleep);
|
||||
usleep_range(in_vreg[i].post_on_sleep,
|
||||
in_vreg[i].post_on_sleep);
|
||||
if (rc < 0) {
|
||||
DEV_ERR("%pS->%s: %s enable failed\n",
|
||||
__builtin_return_address(0), __func__,
|
||||
|
@ -246,12 +248,14 @@ int msm_dss_enable_vreg(struct dss_vreg *in_vreg, int num_vreg, int enable)
|
|||
} else {
|
||||
for (i = num_vreg-1; i >= 0; i--) {
|
||||
if (in_vreg[i].pre_off_sleep)
|
||||
msleep(in_vreg[i].pre_off_sleep);
|
||||
usleep_range(in_vreg[i].pre_off_sleep,
|
||||
in_vreg[i].pre_off_sleep);
|
||||
regulator_set_load(in_vreg[i].vreg,
|
||||
in_vreg[i].disable_load);
|
||||
regulator_disable(in_vreg[i].vreg);
|
||||
if (in_vreg[i].post_off_sleep)
|
||||
msleep(in_vreg[i].post_off_sleep);
|
||||
usleep_range(in_vreg[i].post_off_sleep,
|
||||
in_vreg[i].post_off_sleep);
|
||||
}
|
||||
}
|
||||
return rc;
|
||||
|
@ -262,12 +266,14 @@ disable_vreg:
|
|||
vreg_set_opt_mode_fail:
|
||||
for (i--; i >= 0; i--) {
|
||||
if (in_vreg[i].pre_off_sleep)
|
||||
msleep(in_vreg[i].pre_off_sleep);
|
||||
usleep_range(in_vreg[i].pre_off_sleep,
|
||||
in_vreg[i].pre_off_sleep);
|
||||
regulator_set_load(in_vreg[i].vreg,
|
||||
in_vreg[i].disable_load);
|
||||
regulator_disable(in_vreg[i].vreg);
|
||||
if (in_vreg[i].post_off_sleep)
|
||||
msleep(in_vreg[i].post_off_sleep);
|
||||
usleep_range(in_vreg[i].post_off_sleep,
|
||||
in_vreg[i].post_off_sleep);
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
|
Loading…
Add table
Reference in a new issue