linux-stable/drivers/thermal
Eduardo Valentin f9df89d897 thermal: introduce clock cooling device
This patch introduces a new thermal cooling device based on common clock
framework. The original motivation to write this cooling device is to be
able to cool down thermal zones using clocks that feed co-processors, such
as GPUs, DSPs, Image Processing Co-processors, etc. But it is written
in a way that it can be used on top of any clock.

The implementation is pretty straight forward. The code creates
a thermal cooling device based on a pair of a struct device and a clock name.
The struct device is assumed to be usable by the OPP layer. The OPP layer
is used as source of the list of possible frequencies. The (cpufreq) frequency
table is then used as a map from frequencies to cooling states. Cooling
states are indexes to the frequency table.

The logic sits on top of common clock framework, specifically on clock
pre notifications. Any PRE_RATE_CHANGE is hijacked, and the transition is
only allowed when the new rate is within the thermal limit (cooling state -> freq).

When a thermal cooling device state transition is requested, the clock
is also checked to verify if the current clock rate is within the new
thermal limit.

Cc: Zhang Rui <rui.zhang@intel.com>
Cc: Mike Turquette <mturquette@linaro.org>
Cc: Nishanth Menon <nm@ti.com>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Len Brown <len.brown@intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-pm@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
2014-11-20 10:43:16 -04:00
..
int340x_thermal Thermal/int3403: Fix thermal hysteresis unit conversion 2014-11-04 19:17:32 -04:00
samsung thermal: exynos: use correct offset for TMU_CONTROL register on Exynos5260 2014-11-07 14:52:42 -04:00
st thermal: sti: Add support for ST's Memory Mapped based Thermal controller 2014-07-15 22:06:57 +08:00
ti-soc-thermal thermal: ti-soc-thermal: ti-bandgap.c: Cleaning up wrong address is checked 2014-07-01 09:52:35 +08:00
armada_thermal.c thermal: armada: Support Armada 380 SoC 2014-05-15 17:12:49 +08:00
clock_cooling.c thermal: introduce clock cooling device 2014-11-20 10:43:16 -04:00
cpu_cooling.c thermal: cpu_cooling: fix typo highjack -> hijack 2014-07-22 10:12:05 +08:00
db8500_cpufreq_cooling.c thermal: db8500_cpufreq_cooling: remove usage of IS_ERR_OR_NULL() 2013-04-27 09:28:38 +08:00
db8500_thermal.c thermal: db8500: Fix missing mutex_unlock() in probe error paths 2013-03-26 22:08:08 +08:00
dove_thermal.c Merge branches 'misc', 'drv_cleanup', 'devm-cleanup' and 'ti-soc' of .git into next 2013-05-28 10:46:46 +08:00
fair_share.c thermal: trace: Trace when temperature is above a trip point 2014-07-29 09:28:43 -04:00
gov_bang_bang.c thermal: Added Bang-bang thermal governor 2014-08-27 15:45:58 +08:00
imx_thermal.c imx: thermal: imx_get_temp might be called before sensor clock is prepared 2014-11-09 15:42:53 -04:00
intel_powerclamp.c thermal/intel_powerclamp: add newer cpu ids 2014-05-15 17:02:18 +08:00
intel_soc_dts_thermal.c thermal: Intel SoC DTS thermal 2014-05-15 16:37:24 +08:00
Kconfig thermal: introduce clock cooling device 2014-11-20 10:43:16 -04:00
kirkwood_thermal.c Merge branches 'misc', 'drv_cleanup', 'devm-cleanup' and 'ti-soc' of .git into next 2013-05-28 10:46:46 +08:00
Makefile thermal: introduce clock cooling device 2014-11-20 10:43:16 -04:00
of-thermal.c thermal: fix multiple disbalanced device node counters 2014-11-02 23:02:49 -04:00
rcar_thermal.c thermal: rcar: remove unnecessary OOM messages 2014-05-15 17:15:26 +08:00
spear_thermal.c thermal: spear: remove unnecessary OOM messages 2014-05-15 17:15:26 +08:00
step_wise.c Merge branch 'thermal-core-fix' of .git into next 2014-10-11 09:28:13 +08:00
thermal_core.c Thermal:Remove usless if(!result) before return tz 2014-11-03 18:59:50 -04:00
thermal_core.h thermal: Added Bang-bang thermal governor 2014-08-27 15:45:58 +08:00
thermal_hwmon.c thermal: hwmon: Make the check for critical temp valid consistent 2014-06-30 10:17:27 +08:00
thermal_hwmon.h thermal: hwmon: move hwmon support to single file 2013-09-03 09:09:12 -04:00
user_space.c Thermal: build thermal governors into thermal_sys module 2013-04-14 23:28:43 +08:00
x86_pkg_temp_thermal.c thermal, x86-pkg-temp: Fix CPU hotplug callback registration 2014-03-20 13:43:47 +01:00