cpu_cooling: Drop static-power related stuff

No one has used it for the last two and half years (since it was
introduced by commit c36cf07176 (thermal: cpu_cooling: implement the
power cooling device API), get rid of it.

Acked-by: Eduardo Valentin <edubezval@gmail.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
Viresh Kumar 2017-12-05 11:02:46 +05:30 committed by Rafael J. Wysocki
parent 3ebb62ffc4
commit 84fe2cab48
3 changed files with 16 additions and 103 deletions

View File

@ -88,7 +88,6 @@ struct time_in_idle {
* @policy: cpufreq policy. * @policy: cpufreq policy.
* @node: list_head to link all cpufreq_cooling_device together. * @node: list_head to link all cpufreq_cooling_device together.
* @idle_time: idle time stats * @idle_time: idle time stats
* @plat_get_static_power: callback to calculate the static power
* *
* This structure is required for keeping information of each registered * This structure is required for keeping information of each registered
* cpufreq_cooling_device. * cpufreq_cooling_device.
@ -104,7 +103,6 @@ struct cpufreq_cooling_device {
struct cpufreq_policy *policy; struct cpufreq_policy *policy;
struct list_head node; struct list_head node;
struct time_in_idle *idle_time; struct time_in_idle *idle_time;
get_static_t plat_get_static_power;
}; };
static DEFINE_IDA(cpufreq_ida); static DEFINE_IDA(cpufreq_ida);
@ -318,60 +316,6 @@ static u32 get_load(struct cpufreq_cooling_device *cpufreq_cdev, int cpu,
return load; return load;
} }
/**
* get_static_power() - calculate the static power consumed by the cpus
* @cpufreq_cdev: struct &cpufreq_cooling_device for this cpu cdev
* @tz: thermal zone device in which we're operating
* @freq: frequency in KHz
* @power: pointer in which to store the calculated static power
*
* Calculate the static power consumed by the cpus described by
* @cpu_actor running at frequency @freq. This function relies on a
* platform specific function that should have been provided when the
* actor was registered. If it wasn't, the static power is assumed to
* be negligible. The calculated static power is stored in @power.
*
* Return: 0 on success, -E* on failure.
*/
static int get_static_power(struct cpufreq_cooling_device *cpufreq_cdev,
struct thermal_zone_device *tz, unsigned long freq,
u32 *power)
{
struct dev_pm_opp *opp;
unsigned long voltage;
struct cpufreq_policy *policy = cpufreq_cdev->policy;
struct cpumask *cpumask = policy->related_cpus;
unsigned long freq_hz = freq * 1000;
struct device *dev;
if (!cpufreq_cdev->plat_get_static_power) {
*power = 0;
return 0;
}
dev = get_cpu_device(policy->cpu);
WARN_ON(!dev);
opp = dev_pm_opp_find_freq_exact(dev, freq_hz, true);
if (IS_ERR(opp)) {
dev_warn_ratelimited(dev, "Failed to find OPP for frequency %lu: %ld\n",
freq_hz, PTR_ERR(opp));
return -EINVAL;
}
voltage = dev_pm_opp_get_voltage(opp);
dev_pm_opp_put(opp);
if (voltage == 0) {
dev_err_ratelimited(dev, "Failed to get voltage for frequency %lu\n",
freq_hz);
return -EINVAL;
}
return cpufreq_cdev->plat_get_static_power(cpumask, tz->passive_delay,
voltage, power);
}
/** /**
* get_dynamic_power() - calculate the dynamic power * get_dynamic_power() - calculate the dynamic power
* @cpufreq_cdev: &cpufreq_cooling_device for this cdev * @cpufreq_cdev: &cpufreq_cooling_device for this cdev
@ -491,8 +435,8 @@ static int cpufreq_get_requested_power(struct thermal_cooling_device *cdev,
u32 *power) u32 *power)
{ {
unsigned long freq; unsigned long freq;
int i = 0, cpu, ret; int i = 0, cpu;
u32 static_power, dynamic_power, total_load = 0; u32 total_load = 0;
struct cpufreq_cooling_device *cpufreq_cdev = cdev->devdata; struct cpufreq_cooling_device *cpufreq_cdev = cdev->devdata;
struct cpufreq_policy *policy = cpufreq_cdev->policy; struct cpufreq_policy *policy = cpufreq_cdev->policy;
u32 *load_cpu = NULL; u32 *load_cpu = NULL;
@ -522,22 +466,15 @@ static int cpufreq_get_requested_power(struct thermal_cooling_device *cdev,
cpufreq_cdev->last_load = total_load; cpufreq_cdev->last_load = total_load;
dynamic_power = get_dynamic_power(cpufreq_cdev, freq); *power = get_dynamic_power(cpufreq_cdev, freq);
ret = get_static_power(cpufreq_cdev, tz, freq, &static_power);
if (ret) {
kfree(load_cpu);
return ret;
}
if (load_cpu) { if (load_cpu) {
trace_thermal_power_cpu_get_power(policy->related_cpus, freq, trace_thermal_power_cpu_get_power(policy->related_cpus, freq,
load_cpu, i, dynamic_power, load_cpu, i, *power);
static_power);
kfree(load_cpu); kfree(load_cpu);
} }
*power = static_power + dynamic_power;
return 0; return 0;
} }
@ -561,8 +498,6 @@ static int cpufreq_state2power(struct thermal_cooling_device *cdev,
unsigned long state, u32 *power) unsigned long state, u32 *power)
{ {
unsigned int freq, num_cpus; unsigned int freq, num_cpus;
u32 static_power, dynamic_power;
int ret;
struct cpufreq_cooling_device *cpufreq_cdev = cdev->devdata; struct cpufreq_cooling_device *cpufreq_cdev = cdev->devdata;
/* Request state should be less than max_level */ /* Request state should be less than max_level */
@ -572,13 +507,9 @@ static int cpufreq_state2power(struct thermal_cooling_device *cdev,
num_cpus = cpumask_weight(cpufreq_cdev->policy->cpus); num_cpus = cpumask_weight(cpufreq_cdev->policy->cpus);
freq = cpufreq_cdev->freq_table[state].frequency; freq = cpufreq_cdev->freq_table[state].frequency;
dynamic_power = cpu_freq_to_power(cpufreq_cdev, freq) * num_cpus; *power = cpu_freq_to_power(cpufreq_cdev, freq) * num_cpus;
ret = get_static_power(cpufreq_cdev, tz, freq, &static_power);
if (ret)
return ret;
*power = static_power + dynamic_power; return 0;
return ret;
} }
/** /**
@ -606,21 +537,14 @@ static int cpufreq_power2state(struct thermal_cooling_device *cdev,
unsigned long *state) unsigned long *state)
{ {
unsigned int cur_freq, target_freq; unsigned int cur_freq, target_freq;
int ret; u32 last_load, normalised_power;
s32 dyn_power;
u32 last_load, normalised_power, static_power;
struct cpufreq_cooling_device *cpufreq_cdev = cdev->devdata; struct cpufreq_cooling_device *cpufreq_cdev = cdev->devdata;
struct cpufreq_policy *policy = cpufreq_cdev->policy; struct cpufreq_policy *policy = cpufreq_cdev->policy;
cur_freq = cpufreq_quick_get(policy->cpu); cur_freq = cpufreq_quick_get(policy->cpu);
ret = get_static_power(cpufreq_cdev, tz, cur_freq, &static_power); power = power > 0 ? power : 0;
if (ret)
return ret;
dyn_power = power - static_power;
dyn_power = dyn_power > 0 ? dyn_power : 0;
last_load = cpufreq_cdev->last_load ?: 1; last_load = cpufreq_cdev->last_load ?: 1;
normalised_power = (dyn_power * 100) / last_load; normalised_power = (power * 100) / last_load;
target_freq = cpu_power_to_freq(cpufreq_cdev, normalised_power); target_freq = cpu_power_to_freq(cpufreq_cdev, normalised_power);
*state = get_level(cpufreq_cdev, target_freq); *state = get_level(cpufreq_cdev, target_freq);
@ -671,8 +595,6 @@ static unsigned int find_next_max(struct cpufreq_frequency_table *table,
* @policy: cpufreq policy * @policy: cpufreq policy
* Normally this should be same as cpufreq policy->related_cpus. * Normally this should be same as cpufreq policy->related_cpus.
* @capacitance: dynamic power coefficient for these cpus * @capacitance: dynamic power coefficient for these cpus
* @plat_static_func: function to calculate the static power consumed by these
* cpus (optional)
* *
* This interface function registers the cpufreq cooling device with the name * This interface function registers the cpufreq cooling device with the name
* "thermal-cpufreq-%x". This api can support multiple instances of cpufreq * "thermal-cpufreq-%x". This api can support multiple instances of cpufreq
@ -684,8 +606,7 @@ static unsigned int find_next_max(struct cpufreq_frequency_table *table,
*/ */
static struct thermal_cooling_device * static struct thermal_cooling_device *
__cpufreq_cooling_register(struct device_node *np, __cpufreq_cooling_register(struct device_node *np,
struct cpufreq_policy *policy, u32 capacitance, struct cpufreq_policy *policy, u32 capacitance)
get_static_t plat_static_func)
{ {
struct thermal_cooling_device *cdev; struct thermal_cooling_device *cdev;
struct cpufreq_cooling_device *cpufreq_cdev; struct cpufreq_cooling_device *cpufreq_cdev;
@ -755,8 +676,6 @@ __cpufreq_cooling_register(struct device_node *np,
} }
if (capacitance) { if (capacitance) {
cpufreq_cdev->plat_get_static_power = plat_static_func;
ret = update_freq_table(cpufreq_cdev, capacitance); ret = update_freq_table(cpufreq_cdev, capacitance);
if (ret) { if (ret) {
cdev = ERR_PTR(ret); cdev = ERR_PTR(ret);
@ -813,7 +732,7 @@ __cpufreq_cooling_register(struct device_node *np,
struct thermal_cooling_device * struct thermal_cooling_device *
cpufreq_cooling_register(struct cpufreq_policy *policy) cpufreq_cooling_register(struct cpufreq_policy *policy)
{ {
return __cpufreq_cooling_register(NULL, policy, 0, NULL); return __cpufreq_cooling_register(NULL, policy, 0);
} }
EXPORT_SYMBOL_GPL(cpufreq_cooling_register); EXPORT_SYMBOL_GPL(cpufreq_cooling_register);
@ -853,8 +772,7 @@ of_cpufreq_cooling_register(struct cpufreq_policy *policy)
of_property_read_u32(np, "dynamic-power-coefficient", of_property_read_u32(np, "dynamic-power-coefficient",
&capacitance); &capacitance);
cdev = __cpufreq_cooling_register(np, policy, capacitance, cdev = __cpufreq_cooling_register(np, policy, capacitance);
NULL);
if (IS_ERR(cdev)) { if (IS_ERR(cdev)) {
pr_err("cpu_cooling: cpu%d is not running as cooling device: %ld\n", pr_err("cpu_cooling: cpu%d is not running as cooling device: %ld\n",
policy->cpu, PTR_ERR(cdev)); policy->cpu, PTR_ERR(cdev));

View File

@ -30,9 +30,6 @@
struct cpufreq_policy; struct cpufreq_policy;
typedef int (*get_static_t)(cpumask_t *cpumask, int interval,
unsigned long voltage, u32 *power);
#ifdef CONFIG_CPU_THERMAL #ifdef CONFIG_CPU_THERMAL
/** /**
* cpufreq_cooling_register - function to create cpufreq cooling device. * cpufreq_cooling_register - function to create cpufreq cooling device.

View File

@ -94,9 +94,9 @@ TRACE_EVENT(thermal_zone_trip,
#ifdef CONFIG_CPU_THERMAL #ifdef CONFIG_CPU_THERMAL
TRACE_EVENT(thermal_power_cpu_get_power, TRACE_EVENT(thermal_power_cpu_get_power,
TP_PROTO(const struct cpumask *cpus, unsigned long freq, u32 *load, TP_PROTO(const struct cpumask *cpus, unsigned long freq, u32 *load,
size_t load_len, u32 dynamic_power, u32 static_power), size_t load_len, u32 dynamic_power),
TP_ARGS(cpus, freq, load, load_len, dynamic_power, static_power), TP_ARGS(cpus, freq, load, load_len, dynamic_power),
TP_STRUCT__entry( TP_STRUCT__entry(
__bitmask(cpumask, num_possible_cpus()) __bitmask(cpumask, num_possible_cpus())
@ -104,7 +104,6 @@ TRACE_EVENT(thermal_power_cpu_get_power,
__dynamic_array(u32, load, load_len) __dynamic_array(u32, load, load_len)
__field(size_t, load_len ) __field(size_t, load_len )
__field(u32, dynamic_power ) __field(u32, dynamic_power )
__field(u32, static_power )
), ),
TP_fast_assign( TP_fast_assign(
@ -115,13 +114,12 @@ TRACE_EVENT(thermal_power_cpu_get_power,
load_len * sizeof(*load)); load_len * sizeof(*load));
__entry->load_len = load_len; __entry->load_len = load_len;
__entry->dynamic_power = dynamic_power; __entry->dynamic_power = dynamic_power;
__entry->static_power = static_power;
), ),
TP_printk("cpus=%s freq=%lu load={%s} dynamic_power=%d static_power=%d", TP_printk("cpus=%s freq=%lu load={%s} dynamic_power=%d",
__get_bitmask(cpumask), __entry->freq, __get_bitmask(cpumask), __entry->freq,
__print_array(__get_dynamic_array(load), __entry->load_len, 4), __print_array(__get_dynamic_array(load), __entry->load_len, 4),
__entry->dynamic_power, __entry->static_power) __entry->dynamic_power)
); );
TRACE_EVENT(thermal_power_cpu_limit, TRACE_EVENT(thermal_power_cpu_limit,