From ea2d284082b5fdea1c398d846dbc83b3fd2d398d Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Sat, 21 Mar 2020 14:05:53 +0100 Subject: gemini: Add v5.4 kernel patches 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 [use the drivetemp package over the backport] Signed-off-by: Christian Lamparter --- ...RM-dts-gemini-Add-thermal-zone-to-DIR-685.patch | 101 +++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 target/linux/gemini/patches-5.4/0004-ARM-dts-gemini-Add-thermal-zone-to-DIR-685.patch (limited to 'target/linux/gemini/patches-5.4/0004-ARM-dts-gemini-Add-thermal-zone-to-DIR-685.patch') 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 +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 +--- + 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 { -- cgit v1.2.3