aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mvebu/files
diff options
context:
space:
mode:
authorDaniel González Cabanelas <dgcbueu@gmail.com>2020-06-28 23:52:10 +0200
committerHauke Mehrtens <hauke@hauke-m.de>2020-07-04 21:12:42 +0200
commita902e6a657e0807da0bb5d154db2e208b7f567ef (patch)
tree639fbcfa7d6368539ecef8fd30e9932c87711c13 /target/linux/mvebu/files
parent68d9cb82143b864d70e4fb3d7cbb7068f82216a1 (diff)
downloadupstream-a902e6a657e0807da0bb5d154db2e208b7f567ef.tar.gz
upstream-a902e6a657e0807da0bb5d154db2e208b7f567ef.tar.bz2
upstream-a902e6a657e0807da0bb5d154db2e208b7f567ef.zip
mvebu: LS421DE: use automatic fan control with thermal zones
The Buffalo Linkstation LS421DE has a chassis fan for cooling two internal hard drives. Currently there is no control over this fan, running always at fixed medium speed. With the recent jump to the kernel 5.4, now we can monitor the hard drive temperature and control the fan with thermal zones. Install the kmod-hwmon-drivetemp module and wire up a thermal zone on the dts file to allow automatic fan control by the kernel. Tested succesfully using a single Crucial BX500 SSD drive. Signed-off-by: Daniel González Cabanelas <dgcbueu@gmail.com>
Diffstat (limited to 'target/linux/mvebu/files')
-rw-r--r--target/linux/mvebu/files/arch/arm/boot/dts/armada-370-buffalo-ls421de.dts65
1 files changed, 64 insertions, 1 deletions
diff --git a/target/linux/mvebu/files/arch/arm/boot/dts/armada-370-buffalo-ls421de.dts b/target/linux/mvebu/files/arch/arm/boot/dts/armada-370-buffalo-ls421de.dts
index 4d2760eb72..ea392f9e41 100644
--- a/target/linux/mvebu/files/arch/arm/boot/dts/armada-370-buffalo-ls421de.dts
+++ b/target/linux/mvebu/files/arch/arm/boot/dts/armada-370-buffalo-ls421de.dts
@@ -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";
@@ -40,10 +41,60 @@
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 {
@@ -225,6 +276,18 @@
&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 {