projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cpufreq: dt: Rename 'need_update' to 'opp_v1'
[firefly-linux-kernel-4.4.55.git]
/
drivers
/
cpufreq
/
cpufreq-dt.c
diff --git
a/drivers/cpufreq/cpufreq-dt.c
b/drivers/cpufreq/cpufreq-dt.c
index 90d64081ddb34ee8ba7a06372a269defdcf07a97..0047d20803db79f3e71a503870c8e63e287f1280 100644
(file)
--- a/
drivers/cpufreq/cpufreq-dt.c
+++ b/
drivers/cpufreq/cpufreq-dt.c
@@
-50,7
+50,8
@@
static int set_target(struct cpufreq_policy *policy, unsigned int index)
struct private_data *priv = policy->driver_data;
struct device *cpu_dev = priv->cpu_dev;
struct regulator *cpu_reg = priv->cpu_reg;
struct private_data *priv = policy->driver_data;
struct device *cpu_dev = priv->cpu_dev;
struct regulator *cpu_reg = priv->cpu_reg;
- unsigned long volt = 0, volt_old = 0, tol = 0;
+ unsigned long volt = 0, tol = 0;
+ int volt_old = 0;
unsigned int old_freq, new_freq;
long freq_Hz, freq_exact;
int ret;
unsigned int old_freq, new_freq;
long freq_Hz, freq_exact;
int ret;
@@
-83,7
+84,7
@@
static int set_target(struct cpufreq_policy *policy, unsigned int index)
opp_freq / 1000, volt);
}
opp_freq / 1000, volt);
}
- dev_dbg(cpu_dev, "%u MHz, %
l
d mV --> %u MHz, %ld mV\n",
+ dev_dbg(cpu_dev, "%u MHz, %d mV --> %u MHz, %ld mV\n",
old_freq / 1000, (volt_old > 0) ? volt_old / 1000 : -1,
new_freq / 1000, volt ? volt / 1000 : -1);
old_freq / 1000, (volt_old > 0) ? volt_old / 1000 : -1,
new_freq / 1000, volt ? volt / 1000 : -1);
@@
-141,15
+142,16
@@
static int allocate_resources(int cpu, struct device **cdev,
try_again:
cpu_reg = regulator_get_optional(cpu_dev, reg);
try_again:
cpu_reg = regulator_get_optional(cpu_dev, reg);
- if (IS_ERR(cpu_reg)) {
+ ret = PTR_ERR_OR_ZERO(cpu_reg);
+ if (ret) {
/*
* If cpu's regulator supply node is present, but regulator is
* not yet registered, we should try defering probe.
*/
/*
* If cpu's regulator supply node is present, but regulator is
* not yet registered, we should try defering probe.
*/
- if (
PTR_ERR(cpu_reg)
== -EPROBE_DEFER) {
+ if (
ret
== -EPROBE_DEFER) {
dev_dbg(cpu_dev, "cpu%d regulator not ready, retry\n",
cpu);
dev_dbg(cpu_dev, "cpu%d regulator not ready, retry\n",
cpu);
- return
-EPROBE_DEFER
;
+ return
ret
;
}
/* Try with "cpu-supply" */
}
/* Try with "cpu-supply" */
@@
-158,18
+160,16
@@
try_again:
goto try_again;
}
goto try_again;
}
- dev_dbg(cpu_dev, "no regulator for cpu%d: %ld\n",
- cpu, PTR_ERR(cpu_reg));
+ dev_dbg(cpu_dev, "no regulator for cpu%d: %d\n", cpu, ret);
}
cpu_clk = clk_get(cpu_dev, NULL);
}
cpu_clk = clk_get(cpu_dev, NULL);
- if (IS_ERR(cpu_clk)) {
+ ret = PTR_ERR_OR_ZERO(cpu_clk);
+ if (ret) {
/* put regulator */
if (!IS_ERR(cpu_reg))
regulator_put(cpu_reg);
/* put regulator */
if (!IS_ERR(cpu_reg))
regulator_put(cpu_reg);
- ret = PTR_ERR(cpu_clk);
-
/*
* If cpu's clk node is present, but clock is not yet
* registered, we should try defering probe.
/*
* If cpu's clk node is present, but clock is not yet
* registered, we should try defering probe.
@@
-199,7
+199,7
@@
static int cpufreq_init(struct cpufreq_policy *policy)
struct dev_pm_opp *suspend_opp;
unsigned long min_uV = ~0, max_uV = 0;
unsigned int transition_latency;
struct dev_pm_opp *suspend_opp;
unsigned long min_uV = ~0, max_uV = 0;
unsigned int transition_latency;
- bool
need_update
= false;
+ bool
opp_v1
= false;
int ret;
ret = allocate_resources(policy->cpu, &cpu_dev, &cpu_reg, &cpu_clk);
int ret;
ret = allocate_resources(policy->cpu, &cpu_dev, &cpu_reg, &cpu_clk);
@@
-223,7
+223,7
@@
static int cpufreq_init(struct cpufreq_policy *policy)
* finding shared-OPPs for backward compatibility.
*/
if (ret == -ENOENT)
* finding shared-OPPs for backward compatibility.
*/
if (ret == -ENOENT)
-
need_update
= true;
+
opp_v1
= true;
else
goto out_node_put;
}
else
goto out_node_put;
}
@@
-246,12
+246,12
@@
static int cpufreq_init(struct cpufreq_policy *policy)
*/
ret = dev_pm_opp_get_opp_count(cpu_dev);
if (ret <= 0) {
*/
ret = dev_pm_opp_get_opp_count(cpu_dev);
if (ret <= 0) {
-
pr_debug(
"OPP table is not ready, deferring probe\n");
+
dev_dbg(cpu_dev,
"OPP table is not ready, deferring probe\n");
ret = -EPROBE_DEFER;
goto out_free_opp;
}
ret = -EPROBE_DEFER;
goto out_free_opp;
}
- if (
need_update
) {
+ if (
opp_v1
) {
struct cpufreq_dt_platform_data *pd = cpufreq_get_driver_data();
if (!pd || !pd->independent_clocks)
struct cpufreq_dt_platform_data *pd = cpufreq_get_driver_data();
if (!pd || !pd->independent_clocks)
@@
-325,7
+325,7
@@
static int cpufreq_init(struct cpufreq_policy *policy)
ret = dev_pm_opp_init_cpufreq_table(cpu_dev, &freq_table);
if (ret) {
ret = dev_pm_opp_init_cpufreq_table(cpu_dev, &freq_table);
if (ret) {
-
pr_err(
"failed to init cpufreq table: %d\n", ret);
+
dev_err(cpu_dev,
"failed to init cpufreq table: %d\n", ret);
goto out_free_priv;
}
goto out_free_priv;
}
@@
-407,8
+407,13
@@
static void cpufreq_ready(struct cpufreq_policy *policy)
* thermal DT code takes care of matching them.
*/
if (of_find_property(np, "#cooling-cells", NULL)) {
* thermal DT code takes care of matching them.
*/
if (of_find_property(np, "#cooling-cells", NULL)) {
- priv->cdev = of_cpufreq_cooling_register(np,
- policy->related_cpus);
+ u32 power_coefficient = 0;
+
+ of_property_read_u32(np, "dynamic-power-coefficient",
+ &power_coefficient);
+
+ priv->cdev = of_cpufreq_power_cooling_register(np,
+ policy->related_cpus, power_coefficient, NULL);
if (IS_ERR(priv->cdev)) {
dev_err(priv->cpu_dev,
"running cpufreq without cooling device: %ld\n",
if (IS_ERR(priv->cdev)) {
dev_err(priv->cpu_dev,
"running cpufreq without cooling device: %ld\n",