1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * linux/include/linux/cpu_cooling.h 4 * 5 * Copyright (C) 2012 Samsung Electronics Co., Ltd(http://www.samsung.com) 6 * Copyright (C) 2012 Amit Daniel <amit.kachhap@linaro.org> 7 * 8 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 9 * 10 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 11 */ 12 13 #ifndef __CPU_COOLING_H__ 14 #define __CPU_COOLING_H__ 15 16 #include <linux/of.h> 17 #include <linux/thermal.h> 18 #include <linux/cpumask.h> 19 20 struct cpufreq_policy; 21 22 #ifdef CONFIG_CPU_FREQ_THERMAL 23 /** 24 * cpufreq_cooling_register - function to create cpufreq cooling device. 25 * @policy: cpufreq policy. 26 */ 27 struct thermal_cooling_device * 28 cpufreq_cooling_register(struct cpufreq_policy *policy); 29 30 /** 31 * cpufreq_cooling_unregister - function to remove cpufreq cooling device. 32 * @cdev: thermal cooling device pointer. 33 */ 34 void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev); 35 36 /** 37 * of_cpufreq_cooling_register - create cpufreq cooling device based on DT. 38 * @policy: cpufreq policy. 39 */ 40 struct thermal_cooling_device * 41 of_cpufreq_cooling_register(struct cpufreq_policy *policy); 42 43 #else /* !CONFIG_CPU_FREQ_THERMAL */ 44 static inline struct thermal_cooling_device * cpufreq_cooling_register(struct cpufreq_policy * policy)45cpufreq_cooling_register(struct cpufreq_policy *policy) 46 { 47 return ERR_PTR(-ENOSYS); 48 } 49 50 static inline cpufreq_cooling_unregister(struct thermal_cooling_device * cdev)51void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev) 52 { 53 return; 54 } 55 56 static inline struct thermal_cooling_device * of_cpufreq_cooling_register(struct cpufreq_policy * policy)57of_cpufreq_cooling_register(struct cpufreq_policy *policy) 58 { 59 return NULL; 60 } 61 #endif /* CONFIG_CPU_FREQ_THERMAL */ 62 63 struct cpuidle_driver; 64 65 #ifdef CONFIG_CPU_IDLE_THERMAL 66 void cpuidle_cooling_register(struct cpuidle_driver *drv); 67 #else /* CONFIG_CPU_IDLE_THERMAL */ cpuidle_cooling_register(struct cpuidle_driver * drv)68static inline void cpuidle_cooling_register(struct cpuidle_driver *drv) 69 { 70 } 71 #endif /* CONFIG_CPU_IDLE_THERMAL */ 72 73 #endif /* __CPU_COOLING_H__ */ 74