at master 1.9 kB view raw
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 19struct cpufreq_policy; 20 21#ifdef CONFIG_CPU_FREQ_THERMAL 22/** 23 * cpufreq_cooling_register - function to create cpufreq cooling device. 24 * @policy: cpufreq policy. 25 */ 26struct thermal_cooling_device * 27cpufreq_cooling_register(struct cpufreq_policy *policy); 28 29/** 30 * cpufreq_cooling_unregister - function to remove cpufreq cooling device. 31 * @cdev: thermal cooling device pointer. 32 */ 33void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev); 34 35/** 36 * of_cpufreq_cooling_register - create cpufreq cooling device based on DT. 37 * @policy: cpufreq policy. 38 */ 39struct thermal_cooling_device * 40of_cpufreq_cooling_register(struct cpufreq_policy *policy); 41 42#else /* !CONFIG_CPU_FREQ_THERMAL */ 43static inline struct thermal_cooling_device * 44cpufreq_cooling_register(struct cpufreq_policy *policy) 45{ 46 return ERR_PTR(-ENOSYS); 47} 48 49static inline 50void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev) 51{ 52 return; 53} 54 55static inline struct thermal_cooling_device * 56of_cpufreq_cooling_register(struct cpufreq_policy *policy) 57{ 58 return NULL; 59} 60#endif /* CONFIG_CPU_FREQ_THERMAL */ 61 62struct cpuidle_driver; 63 64#ifdef CONFIG_CPU_IDLE_THERMAL 65void cpuidle_cooling_register(struct cpuidle_driver *drv); 66#else /* CONFIG_CPU_IDLE_THERMAL */ 67static inline void cpuidle_cooling_register(struct cpuidle_driver *drv) 68{ 69} 70#endif /* CONFIG_CPU_IDLE_THERMAL */ 71 72#endif /* __CPU_COOLING_H__ */