]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
arm64: tegra: Enable PWM fan on the Jetson TX2 Devkit
authorAaron Kling <webgeek1234@gmail.com>
Sun, 27 Apr 2025 20:05:32 +0000 (15:05 -0500)
committerThierry Reding <treding@nvidia.com>
Thu, 8 May 2025 20:57:46 +0000 (22:57 +0200)
This is based on the existing configuration of the Jetson TX2 NX devkit.
The fan and thermal characteristics of the two devkits are similar, so
using the same configuration.

Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Link: https://lore.kernel.org/r/20250427-tx2-therm-v1-1-65ddb4314723@gmail.com
Signed-off-by: Thierry Reding <treding@nvidia.com>
arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts

index 15aa49fc450399c7bd525adcdb6e92a27a185805..a50fd205daa868d58baa6af085d6409560c5c740 100644 (file)
                };
        };
 
+       pwm@c340000 {
+               status = "okay";
+       };
+
        pcie@10003000 {
                status = "okay";
 
                };
        };
 
+       fan: pwm-fan {
+               compatible = "pwm-fan";
+               pwms = <&pwm4 0 45334>;
+               fan-supply = <&vdd_fan>;
+
+               /* cooling level (0, 1, 2, 3) - pwm inverted */
+               cooling-levels = <255 128 64 0>;
+               #cooling-cells = <2>;
+       };
+
        vdd_sd: regulator-vdd-sd {
                compatible = "regulator-fixed";
                regulator-name = "SD_CARD_SW_PWR";
                vin-supply = <&vdd_5v0_sys>;
        };
 
+       vdd_fan: regulator-vdd-fan {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_FAN";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+
+               gpio = <&exp1 4 GPIO_ACTIVE_LOW>;
+
+               vin-supply = <&vdd_5v0_sys>;
+       };
+
        sound {
                compatible = "nvidia,tegra186-audio-graph-card";
                status = "okay";
 
                label = "NVIDIA Jetson TX2 APE";
        };
+
+       thermal-zones {
+               cpu-thermal {
+                       polling-delay = <0>;
+                       polling-delay-passive = <500>;
+                       status = "okay";
+
+                       trips {
+                               cpu_trip_critical: critical {
+                                       temperature = <96500>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+
+                               cpu_trip_hot: hot {
+                                       temperature = <79000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               cpu_trip_active: active {
+                                       temperature = <62000>;
+                                       hysteresis = <2000>;
+                                       type = "active";
+                               };
+
+                               cpu_trip_passive: passive {
+                                       temperature = <45000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       cooling-device = <&fan 3 3>;
+                                       trip = <&cpu_trip_critical>;
+                               };
+
+                               map1 {
+                                       cooling-device = <&fan 2 2>;
+                                       trip = <&cpu_trip_hot>;
+                               };
+
+                               map2 {
+                                       cooling-device = <&fan 1 1>;
+                                       trip = <&cpu_trip_active>;
+                               };
+
+                               map3 {
+                                       cooling-device = <&fan 0 0>;
+                                       trip = <&cpu_trip_passive>;
+                               };
+                       };
+               };
+
+               aux-thermal {
+                       polling-delay = <0>;
+                       polling-delay-passive = <500>;
+                       status = "okay";
+
+                       trips {
+                               aux_alert0: critical {
+                                       temperature = <90000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               gpu-thermal {
+                       polling-delay = <0>;
+                       polling-delay-passive = <500>;
+                       status = "okay";
+
+                       trips {
+                               gpu_alert0: critical {
+                                       temperature = <99000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
 };