mvebu: LS421DE: use automatic fan control with thermal zones
[openwrt/staging/dedeckeh.git] / target / linux / mvebu / files / arch / arm / boot / dts / armada-370-buffalo-ls421de.dts
index 4d2760eb72aabc59362e1fc4a40addd56df38444..ea392f9e415b4fda3a3983b1e9900059612c680d 100644 (file)
@@ -11,6 +11,7 @@
 #include "mvebu-linkstation-fan.dtsi"
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
+#include <dt-bindings/thermal/thermal.h>
 
 / {
        model = "Buffalo LinkStation LS421DE";
                          MBUS_ID(0x09, 0x01) 0 0xf1100000 0x10000>;
        };
 
-       gpio_fan {
+       system_fan: gpio_fan {
                gpios = <&gpio0 13 GPIO_ACTIVE_HIGH
                         &gpio0 14 GPIO_ACTIVE_HIGH>;
                alarm-gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>;
+
+               #cooling-cells = <2>;
+       };
+
+       thermal-zones {
+               chassis-thermal {
+                       polling-delay = <20000>;
+                       polling-delay-passive = <2000>;
+
+                       thermal-sensors = <&hdd0_temp>, <&hdd1_temp>;
+                       coefficients = <1 1>;
+
+                       trips {
+                               chassis_alert1: chassis-alert1 {
+                                       temperature = <36000>;
+                                       hysteresis = <2000>;
+                                       type = "active";
+                               };
+                               chassis_alert2: chassis-alert2 {
+                                       temperature = <46000>;
+                                       hysteresis = <2000>;
+                                       type = "active";
+                               };
+                               chassis_alert3: chassis-alert3 {
+                                       temperature = <56000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               chassis_crit: chassis-crit {
+                                       temperature = <66000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map1 {
+                                       trip = <&chassis_alert1>;
+                                       cooling-device = <&system_fan THERMAL_NO_LIMIT 1>;
+                               };
+                               map2 {
+                                       trip = <&chassis_alert2>;
+                                       cooling-device = <&system_fan 2 2>;
+                               };
+                               map3 {
+                                       trip = <&chassis_alert3>;
+                                       cooling-device = <&system_fan 3 THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
        };
 
        gpio_keys {
 &sata {
        nr-ports = <2>;
        status = "okay";
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       hdd0_temp: sata-port@0 {
+               reg = <0>;
+               #thermal-sensor-cells = <0>;
+       };
+
+       hdd1_temp: sata-port@1 {
+               reg = <1>;
+               #thermal-sensor-cells = <0>;
+       };
 };
 
 &sdio {