ARM: tegra: acer-a500: Improve thermal zones
authorDmitry Osipenko <digetx@gmail.com>
Mon, 2 Aug 2021 21:19:46 +0000 (00:19 +0300)
committerThierry Reding <treding@nvidia.com>
Fri, 13 Aug 2021 11:11:47 +0000 (13:11 +0200)
Use skin temperature for maintaining temperature that is suitable
specifically for A500. 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/tegra20-acer-a500-picasso.dts

index 87fef4c..2280d75 100644 (file)
        };
 
        thermal-zones {
+               /*
+                * NCT1008 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 A500 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 = <0>; /* milliseconds */
+                       polling-delay = <5000>; /* milliseconds */
 
                        thermal-sensors = <&nct1008 0>;
+
+                       trips {
+                               trip0: skin-alert {
+                                       /* start throttling at 60C */
+                                       temperature = <60000>;
+                                       hysteresis = <200>;
+                                       type = "passive";
+                               };
+
+                               trip1: skin-crit {
+                                       /* shut down at 70C */
+                                       temperature = <70000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&trip0>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
                };
 
                cpu-thermal {
                        thermal-sensors = <&nct1008 1>;
 
                        trips {
-                               trip0: cpu-alert0 {
-                                       /* start throttling at 60C */
-                                       temperature = <60000>;
+                               trip2: cpu-alert {
+                                       /* throttle at 85C until temperature drops to 84.8C */
+                                       temperature = <85000>;
                                        hysteresis = <200>;
                                        type = "passive";
                                };
 
-                               trip1: cpu-crit {
-                                       /* shut down at 70C */
-                                       temperature = <70000>;
+                               trip3: cpu-crit {
+                                       /* shut down at 90C */
+                                       temperature = <90000>;
                                        hysteresis = <2000>;
                                        type = "critical";
                                };
                        };
 
                        cooling-maps {
-                               map0 {
-                                       trip = <&trip0>;
+                               map1 {
+                                       trip = <&trip2>;
                                        cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                         <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                                };