173c46acfSAmit Kucheria# SPDX-License-Identifier: (GPL-2.0) 273c46acfSAmit Kucheria# Copyright 2020 Linaro Ltd. 373c46acfSAmit Kucheria%YAML 1.2 473c46acfSAmit Kucheria--- 573c46acfSAmit Kucheria$id: http://devicetree.org/schemas/thermal/thermal-cooling-devices.yaml# 673c46acfSAmit Kucheria$schema: http://devicetree.org/meta-schemas/core.yaml# 773c46acfSAmit Kucheria 8*84e85359SKrzysztof Kozlowskititle: Thermal cooling device 973c46acfSAmit Kucheria 1073c46acfSAmit Kucheriamaintainers: 1173c46acfSAmit Kucheria - Amit Kucheria <amitk@kernel.org> 1273c46acfSAmit Kucheria 1373c46acfSAmit Kucheriadescription: | 1473c46acfSAmit Kucheria Thermal management is achieved in devicetree by describing the sensor hardware 1573c46acfSAmit Kucheria and the software abstraction of cooling devices and thermal zones required to 1673c46acfSAmit Kucheria take appropriate action to mitigate thermal overload. 1773c46acfSAmit Kucheria 1873c46acfSAmit Kucheria The following node types are used to completely describe a thermal management 1973c46acfSAmit Kucheria system in devicetree: 2073c46acfSAmit Kucheria - thermal-sensor: device that measures temperature, has SoC-specific bindings 2173c46acfSAmit Kucheria - cooling-device: device used to dissipate heat either passively or actively 2273c46acfSAmit Kucheria - thermal-zones: a container of the following node types used to describe all 2373c46acfSAmit Kucheria thermal data for the platform 2473c46acfSAmit Kucheria 2573c46acfSAmit Kucheria This binding describes the cooling devices. 2673c46acfSAmit Kucheria 2773c46acfSAmit Kucheria There are essentially two ways to provide control on power dissipation: 2873c46acfSAmit Kucheria - Passive cooling: by means of regulating device performance. A typical 2973c46acfSAmit Kucheria passive cooling mechanism is a CPU that has dynamic voltage and frequency 3073c46acfSAmit Kucheria scaling (DVFS), and uses lower frequencies as cooling states. 3173c46acfSAmit Kucheria - Active cooling: by means of activating devices in order to remove the 3273c46acfSAmit Kucheria dissipated heat, e.g. regulating fan speeds. 3373c46acfSAmit Kucheria 3473c46acfSAmit Kucheria Any cooling device has a range of cooling states (i.e. different levels of 3573c46acfSAmit Kucheria heat dissipation). They also have a way to determine the state of cooling in 3673c46acfSAmit Kucheria which the device is. For example, a fan's cooling states correspond to the 3773c46acfSAmit Kucheria different fan speeds possible. Cooling states are referred to by single 3873c46acfSAmit Kucheria unsigned integers, where larger numbers mean greater heat dissipation. The 3973c46acfSAmit Kucheria precise set of cooling states associated with a device should be defined in 4073c46acfSAmit Kucheria a particular device's binding. 4173c46acfSAmit Kucheria 4273c46acfSAmit Kucheriaselect: true 4373c46acfSAmit Kucheria 4473c46acfSAmit Kucheriaproperties: 4573c46acfSAmit Kucheria "#cooling-cells": 4673c46acfSAmit Kucheria description: 4773c46acfSAmit Kucheria Must be 2, in order to specify minimum and maximum cooling state used in 4873c46acfSAmit Kucheria the cooling-maps reference. The first cell is the minimum cooling state 4973c46acfSAmit Kucheria and the second cell is the maximum cooling state requested. 5073c46acfSAmit Kucheria const: 2 5173c46acfSAmit Kucheria 526a0e321eSRob HerringadditionalProperties: true 536a0e321eSRob Herring 5473c46acfSAmit Kucheriaexamples: 5573c46acfSAmit Kucheria - | 5673c46acfSAmit Kucheria #include <dt-bindings/interrupt-controller/arm-gic.h> 5773c46acfSAmit Kucheria #include <dt-bindings/thermal/thermal.h> 5873c46acfSAmit Kucheria 5973c46acfSAmit Kucheria // Example 1: Cpufreq cooling device on CPU0 6073c46acfSAmit Kucheria cpus { 6173c46acfSAmit Kucheria #address-cells = <2>; 6273c46acfSAmit Kucheria #size-cells = <0>; 6373c46acfSAmit Kucheria 6473c46acfSAmit Kucheria CPU0: cpu@0 { 6573c46acfSAmit Kucheria device_type = "cpu"; 6673c46acfSAmit Kucheria compatible = "qcom,kryo385"; 6773c46acfSAmit Kucheria reg = <0x0 0x0>; 6873c46acfSAmit Kucheria enable-method = "psci"; 6939bd2b6aSRob Herring cpu-idle-states = <&LITTLE_CPU_SLEEP_0>, 7039bd2b6aSRob Herring <&LITTLE_CPU_SLEEP_1>, 7139bd2b6aSRob Herring <&CLUSTER_SLEEP_0>; 7273c46acfSAmit Kucheria capacity-dmips-mhz = <607>; 7373c46acfSAmit Kucheria dynamic-power-coefficient = <100>; 7473c46acfSAmit Kucheria qcom,freq-domain = <&cpufreq_hw 0>; 7573c46acfSAmit Kucheria #cooling-cells = <2>; 7673c46acfSAmit Kucheria next-level-cache = <&L2_0>; 7773c46acfSAmit Kucheria L2_0: l2-cache { 7873c46acfSAmit Kucheria compatible = "cache"; 798119aabaSRob Herring cache-unified; 808119aabaSRob Herring cache-level = <2>; 8173c46acfSAmit Kucheria next-level-cache = <&L3_0>; 8273c46acfSAmit Kucheria L3_0: l3-cache { 8373c46acfSAmit Kucheria compatible = "cache"; 848119aabaSRob Herring cache-unified; 858119aabaSRob Herring cache-level = <3>; 8673c46acfSAmit Kucheria }; 8773c46acfSAmit Kucheria }; 8873c46acfSAmit Kucheria }; 8973c46acfSAmit Kucheria 9073c46acfSAmit Kucheria /* ... */ 9173c46acfSAmit Kucheria 9273c46acfSAmit Kucheria }; 9373c46acfSAmit Kucheria 9473c46acfSAmit Kucheria /* ... */ 9573c46acfSAmit Kucheria 9673c46acfSAmit Kucheria thermal-zones { 9773c46acfSAmit Kucheria cpu0-thermal { 9873c46acfSAmit Kucheria polling-delay-passive = <250>; 9973c46acfSAmit Kucheria polling-delay = <1000>; 10073c46acfSAmit Kucheria 10173c46acfSAmit Kucheria thermal-sensors = <&tsens0 1>; 10273c46acfSAmit Kucheria 10373c46acfSAmit Kucheria trips { 10473c46acfSAmit Kucheria cpu0_alert0: trip-point0 { 10573c46acfSAmit Kucheria temperature = <90000>; 10673c46acfSAmit Kucheria hysteresis = <2000>; 10773c46acfSAmit Kucheria type = "passive"; 10873c46acfSAmit Kucheria }; 10973c46acfSAmit Kucheria }; 11073c46acfSAmit Kucheria 11173c46acfSAmit Kucheria cooling-maps { 11273c46acfSAmit Kucheria map0 { 11373c46acfSAmit Kucheria trip = <&cpu0_alert0>; 11473c46acfSAmit Kucheria /* Corresponds to 1000MHz in OPP table */ 11573c46acfSAmit Kucheria cooling-device = <&CPU0 5 5>; 11673c46acfSAmit Kucheria }; 11773c46acfSAmit Kucheria }; 11873c46acfSAmit Kucheria }; 11973c46acfSAmit Kucheria 12073c46acfSAmit Kucheria /* ... */ 12173c46acfSAmit Kucheria }; 12273c46acfSAmit Kucheria... 123