linux/include/linux/clock_cooling.h
<<
>>
Prefs
   1/*
   2 *  linux/include/linux/clock_cooling.h
   3 *
   4 *  Copyright (C) 2014 Eduardo Valentin <edubezval@gmail.com>
   5 *
   6 *  Copyright (C) 2013  Texas Instruments Inc.
   7 *  Contact:  Eduardo Valentin <eduardo.valentin@ti.com>
   8 *
   9 *  Highly based on cpu_cooling.c.
  10 *  Copyright (C) 2012  Samsung Electronics Co., Ltd(http://www.samsung.com)
  11 *  Copyright (C) 2012  Amit Daniel <amit.kachhap@linaro.org>
  12 *
  13 *  This program is free software; you can redistribute it and/or modify
  14 *  it under the terms of the GNU General Public License as published by
  15 *  the Free Software Foundation; version 2 of the License.
  16 *
  17 *  This program is distributed in the hope that it will be useful, but
  18 *  WITHOUT ANY WARRANTY; without even the implied warranty of
  19 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  20 *  General Public License for more details.
  21 */
  22
  23#ifndef __CPU_COOLING_H__
  24#define __CPU_COOLING_H__
  25
  26#include <linux/of.h>
  27#include <linux/thermal.h>
  28#include <linux/cpumask.h>
  29
  30#ifdef CONFIG_CLOCK_THERMAL
  31/**
  32 * clock_cooling_register - function to create clock cooling device.
  33 * @dev: struct device pointer to the device used as clock cooling device.
  34 * @clock_name: string containing the clock used as cooling mechanism.
  35 */
  36struct thermal_cooling_device *
  37clock_cooling_register(struct device *dev, const char *clock_name);
  38
  39/**
  40 * clock_cooling_unregister - function to remove clock cooling device.
  41 * @cdev: thermal cooling device pointer.
  42 */
  43void clock_cooling_unregister(struct thermal_cooling_device *cdev);
  44
  45unsigned long clock_cooling_get_level(struct thermal_cooling_device *cdev,
  46                                      unsigned long freq);
  47#else /* !CONFIG_CLOCK_THERMAL */
  48static inline struct thermal_cooling_device *
  49clock_cooling_register(struct device *dev, const char *clock_name)
  50{
  51        return NULL;
  52}
  53static inline
  54void clock_cooling_unregister(struct thermal_cooling_device *cdev)
  55{
  56}
  57static inline
  58unsigned long clock_cooling_get_level(struct thermal_cooling_device *cdev,
  59                                      unsigned long freq)
  60{
  61        return THERMAL_CSTATE_INVALID;
  62}
  63#endif  /* CONFIG_CLOCK_THERMAL */
  64
  65#endif /* __CPU_COOLING_H__ */
  66