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>
19 struct cpufreq_policy
;
21 #ifdef CONFIG_CPU_FREQ_THERMAL
23 * cpufreq_cooling_register - function to create cpufreq cooling device.
24 * @policy: cpufreq policy.
26 struct thermal_cooling_device
*
27 cpufreq_cooling_register(struct cpufreq_policy
*policy
);
30 * cpufreq_cooling_unregister - function to remove cpufreq cooling device.
31 * @cdev: thermal cooling device pointer.
33 void cpufreq_cooling_unregister(struct thermal_cooling_device
*cdev
);
36 * of_cpufreq_cooling_register - create cpufreq cooling device based on DT.
37 * @policy: cpufreq policy.
39 struct thermal_cooling_device
*
40 of_cpufreq_cooling_register(struct cpufreq_policy
*policy
);
42 #else /* !CONFIG_CPU_FREQ_THERMAL */
43 static inline struct thermal_cooling_device
*
44 cpufreq_cooling_register(struct cpufreq_policy
*policy
)
46 return ERR_PTR(-ENOSYS
);
50 void cpufreq_cooling_unregister(struct thermal_cooling_device
*cdev
)
55 static inline struct thermal_cooling_device
*
56 of_cpufreq_cooling_register(struct cpufreq_policy
*policy
)
60 #endif /* CONFIG_CPU_FREQ_THERMAL */
62 struct cpuidle_driver
;
64 #ifdef CONFIG_CPU_IDLE_THERMAL
65 void cpuidle_cooling_register(struct cpuidle_driver
*drv
);
66 #else /* CONFIG_CPU_IDLE_THERMAL */
67 static inline void cpuidle_cooling_register(struct cpuidle_driver
*drv
)
70 #endif /* CONFIG_CPU_IDLE_THERMAL */
72 #endif /* __CPU_COOLING_H__ */