1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * linux/include/linux/cpu_cooling.h
5 * Copyright (C) 2012 Samsung Electronics Co., Ltd(http://www.samsung.com)
6 * Copyright (C) 2012 Amit Daniel <amit.kachhap@linaro.org>
8 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13 #ifndef __CPU_COOLING_H__
14 #define __CPU_COOLING_H__
17 #include <linux/thermal.h>
18 #include <linux/cpumask.h>
20 struct cpufreq_policy;
22 #ifdef CONFIG_CPU_FREQ_THERMAL
24 * cpufreq_cooling_register - function to create cpufreq cooling device.
25 * @policy: cpufreq policy.
27 struct thermal_cooling_device *
28 cpufreq_cooling_register(struct cpufreq_policy *policy);
31 * cpufreq_cooling_unregister - function to remove cpufreq cooling device.
32 * @cdev: thermal cooling device pointer.
34 void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev);
37 * of_cpufreq_cooling_register - create cpufreq cooling device based on DT.
38 * @policy: cpufreq policy.
40 struct thermal_cooling_device *
41 of_cpufreq_cooling_register(struct cpufreq_policy *policy);
43 #else /* !CONFIG_CPU_FREQ_THERMAL */
44 static inline struct thermal_cooling_device *
45 cpufreq_cooling_register(struct cpufreq_policy *policy)
47 return ERR_PTR(-ENOSYS);
51 void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev)
56 static inline struct thermal_cooling_device *
57 of_cpufreq_cooling_register(struct cpufreq_policy *policy)
61 #endif /* CONFIG_CPU_FREQ_THERMAL */
63 struct cpuidle_driver;
65 #ifdef CONFIG_CPU_IDLE_THERMAL
66 void cpuidle_cooling_register(struct cpuidle_driver *drv);
67 #else /* CONFIG_CPU_IDLE_THERMAL */
68 static inline void cpuidle_cooling_register(struct cpuidle_driver *drv)
71 #endif /* CONFIG_CPU_IDLE_THERMAL */
73 #endif /* __CPU_COOLING_H__ */