aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/gemini/patches-5.4/0004-ARM-dts-gemini-Add-thermal-zone-to-DIR-685.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/gemini/patches-5.4/0004-ARM-dts-gemini-Add-thermal-zone-to-DIR-685.patch')
-rw-r--r--target/linux/gemini/patches-5.4/0004-ARM-dts-gemini-Add-thermal-zone-to-DIR-685.patch101
1 files changed, 101 insertions, 0 deletions
diff --git a/target/linux/gemini/patches-5.4/0004-ARM-dts-gemini-Add-thermal-zone-to-DIR-685.patch b/target/linux/gemini/patches-5.4/0004-ARM-dts-gemini-Add-thermal-zone-to-DIR-685.patch
new file mode 100644
index 0000000000..5949b92be1
--- /dev/null
+++ b/target/linux/gemini/patches-5.4/0004-ARM-dts-gemini-Add-thermal-zone-to-DIR-685.patch
@@ -0,0 +1,101 @@
+From 2b2e9d0e1ee4765b21c648235489028c6dc7e336 Mon Sep 17 00:00:00 2001
+From: Linus Walleij <linus.walleij@linaro.org>
+Date: Tue, 31 Dec 2019 18:18:08 +0100
+Subject: [PATCH 4/7] ARM: dts: gemini: Add thermal zone to DIR-685
+
+The DIR-685 can now exploit the thermal zone added by the
+drive temperature sensor inside the hard drive. We have
+patched the libata subsystem to assign the device nodes
+properly to the SCSI devices and this is what the drivetemp
+driver will use to populate the sensor and the thermal
+zone, so pick that up into the thermal zone and let this
+control the fan.
+
+The hardware lacks an embedded temperature sensor so the
+D-Link vendor firmware uses this method to control the
+temperature of the NAS enclosure using the thermal sensor
+inside the hard drive.
+
+The drive temperature trigger points to be used comes from
+the vendor firmware.
+
+Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
+---
+ arch/arm/boot/dts/gemini-dlink-dir-685.dts | 48 ++++++++++++++++++++--
+ 1 file changed, 45 insertions(+), 3 deletions(-)
+
+--- a/arch/arm/boot/dts/gemini-dlink-dir-685.dts
++++ b/arch/arm/boot/dts/gemini-dlink-dir-685.dts
+@@ -119,13 +119,11 @@
+
+ /*
+ * This is a Sunon Maglev GM0502PFV2-8 cooling fan @10000 RPM.
+- * Since the platform has no temperature sensor, this is controlled
+- * from userspace by using the hard disks S.M.A.R.T. temperature
+ * sensor. It is turned on when the temperature exceeds 46 degrees
+ * and turned off when the temperatures goes below 41 degrees
+ * (celsius).
+ */
+- gpio-fan {
++ fan0: gpio-fan {
+ compatible = "gpio-fan";
+ /* Collides with IDE */
+ gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
+@@ -133,6 +131,40 @@
+ #cooling-cells = <2>;
+ };
+
++ thermal-zones {
++ chassis-thermal {
++ /* Poll every 20 seconds */
++ polling-delay = <20000>;
++ /* Poll every 2nd second when cooling */
++ polling-delay-passive = <2000>;
++ /* Use the thermal sensor in the hard drive */
++ thermal-sensors = <&drive0>;
++
++ /* Tripping points from the fan.script in the rootfs */
++ trips {
++ alert: chassis-alert {
++ /* At 43 degrees turn on the fan */
++ temperature = <43000>;
++ hysteresis = <3000>;
++ type = "active";
++ };
++ crit: chassis-crit {
++ /* Just shut down at 60 degrees */
++ temperature = <60000>;
++ hysteresis = <2000>;
++ type = "critical";
++ };
++ };
++
++ cooling-maps {
++ map0 {
++ trip = <&alert>;
++ cooling-device = <&fan0 1 1>;
++ };
++ };
++ };
++ };
++
+ /*
+ * The touchpad input is connected to a GPIO bit-banged
+ * I2C bus.
+@@ -445,6 +477,16 @@
+
+ ide@63000000 {
+ status = "okay";
++
++ /*
++ * This drive may have a temperature sensor with a
++ * thermal zone we can use for thermal control of the
++ * chassis temperature using the fan.
++ */
++ drive0: ide-port@0 {
++ reg = <0>;
++ #thermal-sensor-cells = <0>;
++ };
+ };
+
+ display-controller@6a000000 {