ea2d284082
This adds the kernel patches needed for the Gemini. Just 7 patches, 5 of them are already upstream. Notably we incorperate the temperature sensor on the hard drive to drive temperature control of the NAS chassis. This is required for the DIR-685 which has no external temperature sensor. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> [use the drivetemp package over the backport] Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
102 lines
2.9 KiB
Diff
102 lines
2.9 KiB
Diff
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 {
|