forked from mirrors/linux
		
	 dfd0bda370
			
		
	
	
		dfd0bda370
		
	
	
	
	
		
			
			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__ */
 |