mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-04 01:49:36 +00:00
![Daniel Lezcano](/assets/img/avatar_default.png)
Today, there is no user for the cpuidle cooling device. The targetted platform is ARM and ARM64. The cpuidle and the cpufreq cooling device are based on the device tree. As the cpuidle cooling device can have its own configuration depending on the platform and the available idle states. The DT node description will give the optional properties to set the cooling device up. Do no longer rely on the CPU node which is prone to error and will lead to a confusion in the DT because the cpufreq cooling device is also using it. Let initialize the cpuidle cooling device with the DT binding. This was tested on: - hikey960 - hikey6220 - rock960 - db845c Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com> Reviewed-by: Amit Kucheria <amit.kucheria@linaro.org> Tested-by: Amit Kucheria <amit.kucheria@linaro.org> Link: https://lore.kernel.org/r/20200429103644.5492-3-daniel.lezcano@linaro.org
73 lines
1.9 KiB
C
73 lines
1.9 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* linux/include/linux/cpu_cooling.h
|
|
*
|
|
* Copyright (C) 2012 Samsung Electronics Co., Ltd(http://www.samsung.com)
|
|
* Copyright (C) 2012 Amit Daniel <amit.kachhap@linaro.org>
|
|
*
|
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
*
|
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
*/
|
|
|
|
#ifndef __CPU_COOLING_H__
|
|
#define __CPU_COOLING_H__
|
|
|
|
#include <linux/of.h>
|
|
#include <linux/thermal.h>
|
|
#include <linux/cpumask.h>
|
|
|
|
struct cpufreq_policy;
|
|
|
|
#ifdef CONFIG_CPU_FREQ_THERMAL
|
|
/**
|
|
* cpufreq_cooling_register - function to create cpufreq cooling device.
|
|
* @policy: cpufreq policy.
|
|
*/
|
|
struct thermal_cooling_device *
|
|
cpufreq_cooling_register(struct cpufreq_policy *policy);
|
|
|
|
/**
|
|
* cpufreq_cooling_unregister - function to remove cpufreq cooling device.
|
|
* @cdev: thermal cooling device pointer.
|
|
*/
|
|
void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev);
|
|
|
|
/**
|
|
* of_cpufreq_cooling_register - create cpufreq cooling device based on DT.
|
|
* @policy: cpufreq policy.
|
|
*/
|
|
struct thermal_cooling_device *
|
|
of_cpufreq_cooling_register(struct cpufreq_policy *policy);
|
|
|
|
#else /* !CONFIG_CPU_FREQ_THERMAL */
|
|
static inline struct thermal_cooling_device *
|
|
cpufreq_cooling_register(struct cpufreq_policy *policy)
|
|
{
|
|
return ERR_PTR(-ENOSYS);
|
|
}
|
|
|
|
static inline
|
|
void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev)
|
|
{
|
|
return;
|
|
}
|
|
|
|
static inline struct thermal_cooling_device *
|
|
of_cpufreq_cooling_register(struct cpufreq_policy *policy)
|
|
{
|
|
return NULL;
|
|
}
|
|
#endif /* CONFIG_CPU_FREQ_THERMAL */
|
|
|
|
struct cpuidle_driver;
|
|
|
|
#ifdef CONFIG_CPU_IDLE_THERMAL
|
|
void cpuidle_cooling_register(struct cpuidle_driver *drv);
|
|
#else /* CONFIG_CPU_IDLE_THERMAL */
|
|
static inline void cpuidle_cooling_register(struct cpuidle_driver *drv)
|
|
{
|
|
}
|
|
#endif /* CONFIG_CPU_IDLE_THERMAL */
|
|
|
|
#endif /* __CPU_COOLING_H__ */
|