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

Commit 027f6d58 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

Merge branch 'cpufreq-fix-notification-arm' of...

Merge branch 'cpufreq-fix-notification-arm' of git://git.linaro.org/people/vireshk/linux into pm-cpufreq-arm

Pull ARM cpufreq updates from Viresh Kumar.

* 'cpufreq-fix-notification-arm' of git://git.linaro.org/people/vireshk/linux:
  cpufreq: tegra: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: s3c64xx: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: omap: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: imx6q: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: exynos: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: dbx500: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: davinci: call CPUFREQ_POSTCHANGE notfier in error cases
  cpufreq: arm-big-little: call CPUFREQ_POSTCHANGE notfier in error cases
parents 9b77df5c f56cc99e
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -84,11 +84,9 @@ static int bL_cpufreq_set_target(struct cpufreq_policy *policy,
	ret = clk_set_rate(clk[cur_cluster], freqs.new * 1000);
	if (ret) {
		pr_err("clk_set_rate failed: %d\n", ret);
		return ret;
		freqs.new = freqs.old;
	}

	policy->cur = freqs.new;

	cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);

	return ret;
+3 −0
Original line number Diff line number Diff line
@@ -114,6 +114,9 @@ static int davinci_target(struct cpufreq_policy *policy,
		pdata->set_voltage(idx);

out:
	if (ret)
		freqs.new = freqs.old;

	cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);

	return ret;
+2 −2
Original line number Diff line number Diff line
@@ -57,13 +57,13 @@ static int dbx500_cpufreq_target(struct cpufreq_policy *policy,
	if (ret) {
		pr_err("dbx500-cpufreq: Failed to set armss_clk to %d Hz: error %d\n",
		       freqs.new * 1000, ret);
		return ret;
		freqs.new = freqs.old;
	}

	/* post change notification */
	cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);

	return 0;
	return ret;
}

static unsigned int dbx500_cpufreq_getspeed(unsigned int cpu)
+8 −2
Original line number Diff line number Diff line
@@ -113,7 +113,8 @@ static int exynos_cpufreq_scale(unsigned int target_freq)
		if (ret) {
			pr_err("%s: failed to set cpu voltage to %d\n",
				__func__, arm_volt);
			goto out;
			freqs.new = freqs.old;
			goto post_notify;
		}
	}

@@ -123,14 +124,19 @@ static int exynos_cpufreq_scale(unsigned int target_freq)
		if (ret) {
			pr_err("%s: failed to set cpu voltage to %d\n",
				__func__, safe_arm_volt);
			goto out;
			freqs.new = freqs.old;
			goto post_notify;
		}
	}

	exynos_info->set_freq(old_index, index);

post_notify:
	cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);

	if (ret)
		goto out;

	/* When the new frequency is lower than current frequency */
	if ((freqs.new < freqs.old) ||
	   ((freqs.new > freqs.old) && safe_arm_volt)) {
+11 −6
Original line number Diff line number Diff line
@@ -68,8 +68,6 @@ static int imx6q_set_target(struct cpufreq_policy *policy,
	if (freqs.old == freqs.new)
		return 0;

	cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);

	rcu_read_lock();
	opp = opp_find_freq_ceil(cpu_dev, &freq_hz);
	if (IS_ERR(opp)) {
@@ -86,13 +84,16 @@ static int imx6q_set_target(struct cpufreq_policy *policy,
		freqs.old / 1000, volt_old / 1000,
		freqs.new / 1000, volt / 1000);

	cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);

	/* scaling up?  scale voltage before frequency */
	if (freqs.new > freqs.old) {
		ret = regulator_set_voltage_tol(arm_reg, volt, 0);
		if (ret) {
			dev_err(cpu_dev,
				"failed to scale vddarm up: %d\n", ret);
			return ret;
			freqs.new = freqs.old;
			goto post_notify;
		}

		/*
@@ -145,15 +146,18 @@ static int imx6q_set_target(struct cpufreq_policy *policy,
	if (ret) {
		dev_err(cpu_dev, "failed to set clock rate: %d\n", ret);
		regulator_set_voltage_tol(arm_reg, volt_old, 0);
		return ret;
		freqs.new = freqs.old;
		goto post_notify;
	}

	/* scaling down?  scale voltage after frequency */
	if (freqs.new < freqs.old) {
		ret = regulator_set_voltage_tol(arm_reg, volt, 0);
		if (ret)
		if (ret) {
			dev_warn(cpu_dev,
				 "failed to scale vddarm down: %d\n", ret);
			ret = 0;
		}

		if (freqs.old == FREQ_1P2_GHZ / 1000) {
			regulator_set_voltage_tol(pu_reg,
@@ -163,9 +167,10 @@ static int imx6q_set_target(struct cpufreq_policy *policy,
		}
	}

post_notify:
	cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);

	return 0;
	return ret;
}

static int imx6q_cpufreq_init(struct cpufreq_policy *policy)
Loading