Merge branch 'address-masking'
[linux-2.6-block.git] / include / linux / cpu_cooling.h
CommitLineData
873e65bc 1/* SPDX-License-Identifier: GPL-2.0-only */
02361418
ADK
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 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
02361418
ADK
9 *
10 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11 */
12
13#ifndef __CPU_COOLING_H__
14#define __CPU_COOLING_H__
15
39d99cff 16#include <linux/of.h>
02361418
ADK
17#include <linux/thermal.h>
18
4d753aa7
VK
19struct cpufreq_policy;
20
2b586fea 21#ifdef CONFIG_CPU_FREQ_THERMAL
02361418
ADK
22/**
23 * cpufreq_cooling_register - function to create cpufreq cooling device.
4d753aa7 24 * @policy: cpufreq policy.
02361418 25 */
d44ada51 26struct thermal_cooling_device *
4d753aa7 27cpufreq_cooling_register(struct cpufreq_policy *policy);
02361418
ADK
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);
57df8106 34
0cac7559
DL
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
2b586fea 42#else /* !CONFIG_CPU_FREQ_THERMAL */
d44ada51 43static inline struct thermal_cooling_device *
4d753aa7 44cpufreq_cooling_register(struct cpufreq_policy *policy)
02361418 45{
503ccc3f 46 return ERR_PTR(-ENOSYS);
02361418 47}
c36cf071 48
3ebb62ff
VK
49static inline
50void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev)
39d99cff 51{
3ebb62ff 52 return;
39d99cff 53}
c36cf071
JM
54
55static inline struct thermal_cooling_device *
3ebb62ff 56of_cpufreq_cooling_register(struct cpufreq_policy *policy)
c36cf071
JM
57{
58 return NULL;
59}
2b586fea 60#endif /* CONFIG_CPU_FREQ_THERMAL */
02361418 61
a4c428e5
DL
62struct cpuidle_driver;
63
64#ifdef CONFIG_CPU_IDLE_THERMAL
dfd0bda3 65void cpuidle_cooling_register(struct cpuidle_driver *drv);
a4c428e5 66#else /* CONFIG_CPU_IDLE_THERMAL */
dfd0bda3 67static inline void cpuidle_cooling_register(struct cpuidle_driver *drv)
a4c428e5 68{
a4c428e5
DL
69}
70#endif /* CONFIG_CPU_IDLE_THERMAL */
71
02361418 72#endif /* __CPU_COOLING_H__ */