linux/include/linux/cpu_cooling.h
<<
>>
Prefs
   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
  20struct 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 */
  27struct thermal_cooling_device *
  28cpufreq_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 */
  34void 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 */
  40struct thermal_cooling_device *
  41of_cpufreq_cooling_register(struct cpufreq_policy *policy);
  42
  43#else /* !CONFIG_CPU_FREQ_THERMAL */
  44static inline struct thermal_cooling_device *
  45cpufreq_cooling_register(struct cpufreq_policy *policy)
  46{
  47        return ERR_PTR(-ENOSYS);
  48}
  49
  50static inline
  51void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev)
  52{
  53        return;
  54}
  55
  56static inline struct thermal_cooling_device *
  57of_cpufreq_cooling_register(struct cpufreq_policy *policy)
  58{
  59        return NULL;
  60}
  61#endif /* CONFIG_CPU_FREQ_THERMAL */
  62
  63struct cpuidle_driver;
  64
  65#ifdef CONFIG_CPU_IDLE_THERMAL
  66void cpuidle_cooling_register(struct cpuidle_driver *drv);
  67#else /* CONFIG_CPU_IDLE_THERMAL */
  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