ARM: tegra: nexus7: Improve thermal zones
authorDmitry Osipenko <digetx@gmail.com>
Mon, 2 Aug 2021 21:19:47 +0000 (00:19 +0300)
committerThierry Reding <treding@nvidia.com>
Fri, 13 Aug 2021 11:11:49 +0000 (13:11 +0200)
Use skin temperature for maintaining temperature that is suitable
specifically for Nexus 7. Add CPU thermal zone that protects silicon.
All these changes don't make a significant difference, but it is a
more correct definition of thermal zones.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
arch/arm/boot/dts/tegra30-asus-nexus7-grouper-common.dtsi

index 33985fca956fb38713a7e51c40020b735a6dfd69..9732cd6f20b7d1395b7012bc5908b2baf9bd0a10 100644 (file)
        };
 
        thermal-zones {
-               cpu-thermal {
+               /*
+                * NCT72 has two sensors:
+                *
+                *      0: internal that monitors ambient/skin temperature
+                *      1: external that is connected to the CPU's diode
+                *
+                * Ideally we should use userspace thermal governor,
+                * but it's a much more complex solution.  The "skin"
+                * zone is a simpler solution which prevents Nexus 7
+                * from getting too hot from a user's tactile perspective.
+                * The CPU zone is intended to protect silicon from damage.
+                */
+
+               skin-thermal {
                        polling-delay-passive = <1000>; /* milliseconds */
                        polling-delay = <5000>; /* milliseconds */
 
-                       thermal-sensors = <&nct72 1>;
+                       thermal-sensors = <&nct72 0>;
 
                        trips {
-                               trip0: cpu-alert0 {
+                               trip0: skin-alert {
                                        /* throttle at 57C until temperature drops to 56.8C */
                                        temperature = <57000>;
                                        hysteresis = <200>;
                                        type = "passive";
                                };
 
-                               trip1: cpu-crit {
+                               trip1: skin-crit {
                                        /* shut down at 65C */
                                        temperature = <65000>;
                                        hysteresis = <2000>;
                                };
                        };
                };
+
+               cpu-thermal {
+                       polling-delay-passive = <1000>; /* milliseconds */
+                       polling-delay = <5000>; /* milliseconds */
+
+                       thermal-sensors = <&nct72 1>;
+
+                       trips {
+                               trip2: cpu-alert {
+                                       /* throttle at 85C until temperature drops to 84.8C */
+                                       temperature = <85000>;
+                                       hysteresis = <200>;
+                                       type = "passive";
+                               };
+
+                               trip3: cpu-crit {
+                                       /* shut down at 90C */
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map1 {
+                                       trip = <&trip2>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&actmon THERMAL_NO_LIMIT
+                                                                 THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
        };
 };