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 {
 |