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

Commit be5fd56b authored by Dhaval Patel's avatar Dhaval Patel Committed by Gerrit - the friendly Code Review server
Browse files

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: default avatarDhaval Patel <pdhaval@codeaurora.org>
parent 881b3044
Loading
Loading
Loading
Loading
+12 −6
Original line number Original line Diff line number Diff line
@@ -223,7 +223,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);
			need_sleep = !regulator_is_enabled(in_vreg[i].vreg);
			if (in_vreg[i].pre_on_sleep && need_sleep)
			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_optimum_mode(in_vreg[i].vreg,
			rc = regulator_set_optimum_mode(in_vreg[i].vreg,
				in_vreg[i].enable_load);
				in_vreg[i].enable_load);
			if (rc < 0) {
			if (rc < 0) {
@@ -234,7 +235,8 @@ int msm_dss_enable_vreg(struct dss_vreg *in_vreg, int num_vreg, int enable)
			}
			}
			rc = regulator_enable(in_vreg[i].vreg);
			rc = regulator_enable(in_vreg[i].vreg);
			if (in_vreg[i].post_on_sleep && need_sleep)
			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) {
			if (rc < 0) {
				DEV_ERR("%pS->%s: %s enable failed\n",
				DEV_ERR("%pS->%s: %s enable failed\n",
					__builtin_return_address(0), __func__,
					__builtin_return_address(0), __func__,
@@ -245,12 +247,14 @@ int msm_dss_enable_vreg(struct dss_vreg *in_vreg, int num_vreg, int enable)
	} else {
	} else {
		for (i = num_vreg-1; i >= 0; i--) {
		for (i = num_vreg-1; i >= 0; i--) {
			if (in_vreg[i].pre_off_sleep)
			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_optimum_mode(in_vreg[i].vreg,
			regulator_set_optimum_mode(in_vreg[i].vreg,
				in_vreg[i].disable_load);
				in_vreg[i].disable_load);
			regulator_disable(in_vreg[i].vreg);
			regulator_disable(in_vreg[i].vreg);
			if (in_vreg[i].post_off_sleep)
			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;
	return rc;
@@ -261,12 +265,14 @@ disable_vreg:
vreg_set_opt_mode_fail:
vreg_set_opt_mode_fail:
	for (i--; i >= 0; i--) {
	for (i--; i >= 0; i--) {
		if (in_vreg[i].pre_off_sleep)
		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_optimum_mode(in_vreg[i].vreg,
		regulator_set_optimum_mode(in_vreg[i].vreg,
			in_vreg[i].disable_load);
			in_vreg[i].disable_load);
		regulator_disable(in_vreg[i].vreg);
		regulator_disable(in_vreg[i].vreg);
		if (in_vreg[i].post_off_sleep)
		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;
	return rc;