Lines Matching refs:cpufreq_cdev

121 static unsigned long get_level(struct cpufreq_cooling_device *cpufreq_cdev,  in get_level()  argument
124 struct freq_table *freq_table = cpufreq_cdev->freq_table; in get_level()
127 for (level = 1; level <= cpufreq_cdev->max_level; level++) in get_level()
151 struct cpufreq_cooling_device *cpufreq_cdev; in cpufreq_thermal_notifier() local
157 list_for_each_entry(cpufreq_cdev, &cpufreq_cdev_list, node) { in cpufreq_thermal_notifier()
162 if (policy->cpu != cpufreq_cdev->policy->cpu) in cpufreq_thermal_notifier()
176 clipped_freq = cpufreq_cdev->clipped_freq; in cpufreq_thermal_notifier()
200 static int update_freq_table(struct cpufreq_cooling_device *cpufreq_cdev, in update_freq_table() argument
203 struct freq_table *freq_table = cpufreq_cdev->freq_table; in update_freq_table()
206 int num_opps = 0, cpu = cpufreq_cdev->policy->cpu, i; in update_freq_table()
210 dev_warn(&cpufreq_cdev->cdev->device, in update_freq_table()
223 if (num_opps != cpufreq_cdev->max_level + 1) { in update_freq_table()
228 for (i = 0; i <= cpufreq_cdev->max_level; i++) { in update_freq_table()
262 static u32 cpu_freq_to_power(struct cpufreq_cooling_device *cpufreq_cdev, in cpu_freq_to_power() argument
266 struct freq_table *freq_table = cpufreq_cdev->freq_table; in cpu_freq_to_power()
268 for (i = 1; i <= cpufreq_cdev->max_level; i++) in cpu_freq_to_power()
275 static u32 cpu_power_to_freq(struct cpufreq_cooling_device *cpufreq_cdev, in cpu_power_to_freq() argument
279 struct freq_table *freq_table = cpufreq_cdev->freq_table; in cpu_power_to_freq()
281 for (i = 1; i <= cpufreq_cdev->max_level; i++) in cpu_power_to_freq()
297 static u32 get_load(struct cpufreq_cooling_device *cpufreq_cdev, int cpu, in get_load() argument
302 struct time_in_idle *idle_time = &cpufreq_cdev->idle_time[cpu_idx]; in get_load()
327 static u32 get_dynamic_power(struct cpufreq_cooling_device *cpufreq_cdev, in get_dynamic_power() argument
332 raw_cpu_power = cpu_freq_to_power(cpufreq_cdev, freq); in get_dynamic_power()
333 return (raw_cpu_power * cpufreq_cdev->last_load) / 100; in get_dynamic_power()
351 struct cpufreq_cooling_device *cpufreq_cdev = cdev->devdata; in cpufreq_get_max_state() local
353 *state = cpufreq_cdev->max_level; in cpufreq_get_max_state()
370 struct cpufreq_cooling_device *cpufreq_cdev = cdev->devdata; in cpufreq_get_cur_state() local
372 *state = cpufreq_cdev->cpufreq_state; in cpufreq_get_cur_state()
390 struct cpufreq_cooling_device *cpufreq_cdev = cdev->devdata; in cpufreq_set_cur_state() local
394 if (WARN_ON(state > cpufreq_cdev->max_level)) in cpufreq_set_cur_state()
398 if (cpufreq_cdev->cpufreq_state == state) in cpufreq_set_cur_state()
401 clip_freq = cpufreq_cdev->freq_table[state].frequency; in cpufreq_set_cur_state()
402 cpufreq_cdev->cpufreq_state = state; in cpufreq_set_cur_state()
403 cpufreq_cdev->clipped_freq = clip_freq; in cpufreq_set_cur_state()
405 cpufreq_update_policy(cpufreq_cdev->policy->cpu); in cpufreq_set_cur_state()
440 struct cpufreq_cooling_device *cpufreq_cdev = cdev->devdata; in cpufreq_get_requested_power() local
441 struct cpufreq_policy *policy = cpufreq_cdev->policy; in cpufreq_get_requested_power()
456 load = get_load(cpufreq_cdev, cpu, i); in cpufreq_get_requested_power()
467 cpufreq_cdev->last_load = total_load; in cpufreq_get_requested_power()
469 *power = get_dynamic_power(cpufreq_cdev, freq); in cpufreq_get_requested_power()
501 struct cpufreq_cooling_device *cpufreq_cdev = cdev->devdata; in cpufreq_state2power() local
504 if (WARN_ON(state > cpufreq_cdev->max_level)) in cpufreq_state2power()
507 num_cpus = cpumask_weight(cpufreq_cdev->policy->cpus); in cpufreq_state2power()
509 freq = cpufreq_cdev->freq_table[state].frequency; in cpufreq_state2power()
510 *power = cpu_freq_to_power(cpufreq_cdev, freq) * num_cpus; in cpufreq_state2power()
541 struct cpufreq_cooling_device *cpufreq_cdev = cdev->devdata; in cpufreq_power2state() local
542 struct cpufreq_policy *policy = cpufreq_cdev->policy; in cpufreq_power2state()
546 last_load = cpufreq_cdev->last_load ?: 1; in cpufreq_power2state()
548 target_freq = cpu_power_to_freq(cpufreq_cdev, normalised_power); in cpufreq_power2state()
550 *state = get_level(cpufreq_cdev, target_freq); in cpufreq_power2state()
612 struct cpufreq_cooling_device *cpufreq_cdev; in __cpufreq_cooling_register() local
631 cpufreq_cdev = kzalloc(sizeof(*cpufreq_cdev), GFP_KERNEL); in __cpufreq_cooling_register()
632 if (!cpufreq_cdev) in __cpufreq_cooling_register()
635 cpufreq_cdev->policy = policy; in __cpufreq_cooling_register()
637 cpufreq_cdev->idle_time = kcalloc(num_cpus, in __cpufreq_cooling_register()
638 sizeof(*cpufreq_cdev->idle_time), in __cpufreq_cooling_register()
640 if (!cpufreq_cdev->idle_time) { in __cpufreq_cooling_register()
646 cpufreq_cdev->max_level = i - 1; in __cpufreq_cooling_register()
648 cpufreq_cdev->freq_table = kmalloc_array(i, in __cpufreq_cooling_register()
649 sizeof(*cpufreq_cdev->freq_table), in __cpufreq_cooling_register()
651 if (!cpufreq_cdev->freq_table) { in __cpufreq_cooling_register()
661 cpufreq_cdev->id = ret; in __cpufreq_cooling_register()
664 cpufreq_cdev->id); in __cpufreq_cooling_register()
667 for (i = 0, freq = -1; i <= cpufreq_cdev->max_level; i++) { in __cpufreq_cooling_register()
669 cpufreq_cdev->freq_table[i].frequency = freq; in __cpufreq_cooling_register()
679 ret = update_freq_table(cpufreq_cdev, capacitance); in __cpufreq_cooling_register()
690 cdev = thermal_of_cooling_device_register(np, dev_name, cpufreq_cdev, in __cpufreq_cooling_register()
695 cpufreq_cdev->clipped_freq = cpufreq_cdev->freq_table[0].frequency; in __cpufreq_cooling_register()
696 cpufreq_cdev->cdev = cdev; in __cpufreq_cooling_register()
701 list_add(&cpufreq_cdev->node, &cpufreq_cdev_list); in __cpufreq_cooling_register()
711 ida_simple_remove(&cpufreq_ida, cpufreq_cdev->id); in __cpufreq_cooling_register()
713 kfree(cpufreq_cdev->freq_table); in __cpufreq_cooling_register()
715 kfree(cpufreq_cdev->idle_time); in __cpufreq_cooling_register()
717 kfree(cpufreq_cdev); in __cpufreq_cooling_register()
796 struct cpufreq_cooling_device *cpufreq_cdev; in cpufreq_cooling_unregister() local
802 cpufreq_cdev = cdev->devdata; in cpufreq_cooling_unregister()
805 list_del(&cpufreq_cdev->node); in cpufreq_cooling_unregister()
814 thermal_cooling_device_unregister(cpufreq_cdev->cdev); in cpufreq_cooling_unregister()
815 ida_simple_remove(&cpufreq_ida, cpufreq_cdev->id); in cpufreq_cooling_unregister()
816 kfree(cpufreq_cdev->idle_time); in cpufreq_cooling_unregister()
817 kfree(cpufreq_cdev->freq_table); in cpufreq_cooling_unregister()
818 kfree(cpufreq_cdev); in cpufreq_cooling_unregister()