mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 14:34:27 -05:00 
			
		
		
		
	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 <linus.walleij@linaro.org> [use the drivetemp package over the backport] Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
This commit is contained in:
		
							parent
							
								
									711bd33cd1
								
							
						
					
					
						commit
						ea2d284082
					
				@ -0,0 +1,131 @@
 | 
				
			|||||||
 | 
					From 3aaff88a0f5e154aa5a489d59fd4015a2a937c23 Mon Sep 17 00:00:00 2001
 | 
				
			||||||
 | 
					From: Linus Walleij <linus.walleij@linaro.org>
 | 
				
			||||||
 | 
					Date: Fri, 21 Apr 2017 22:19:00 +0200
 | 
				
			||||||
 | 
					Subject: [PATCH 1/7] usb: host: fotg2: add Gemini-specific handling
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The Cortina Systems Gemini has bolted on a PHY inside the
 | 
				
			||||||
 | 
					silicon that can be handled by six bits in a MISC register in
 | 
				
			||||||
 | 
					the system controller.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If we are running on Gemini, look up a syscon regmap through
 | 
				
			||||||
 | 
					a phandle and enable VBUS and optionally the Mini-B connector.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If the device is flagged as "wakeup-source" using the standard
 | 
				
			||||||
 | 
					DT bindings, we also enable this in the global controller for
 | 
				
			||||||
 | 
					respective port.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					 drivers/usb/host/Kconfig       |  1 +
 | 
				
			||||||
 | 
					 drivers/usb/host/fotg210-hcd.c | 76 ++++++++++++++++++++++++++++++++++
 | 
				
			||||||
 | 
					 2 files changed, 77 insertions(+)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--- a/drivers/usb/host/Kconfig
 | 
				
			||||||
 | 
					+++ b/drivers/usb/host/Kconfig
 | 
				
			||||||
 | 
					@@ -363,6 +363,7 @@ config USB_ISP1362_HCD
 | 
				
			||||||
 | 
					 config USB_FOTG210_HCD
 | 
				
			||||||
 | 
					 	tristate "FOTG210 HCD support"
 | 
				
			||||||
 | 
					 	depends on USB && HAS_DMA && HAS_IOMEM
 | 
				
			||||||
 | 
					+	select MFD_SYSCON
 | 
				
			||||||
 | 
					 	---help---
 | 
				
			||||||
 | 
					 	  Faraday FOTG210 is an OTG controller which can be configured as
 | 
				
			||||||
 | 
					 	  an USB2.0 host. It is designed to meet USB2.0 EHCI specification
 | 
				
			||||||
 | 
					--- a/drivers/usb/host/fotg210-hcd.c
 | 
				
			||||||
 | 
					+++ b/drivers/usb/host/fotg210-hcd.c
 | 
				
			||||||
 | 
					@@ -33,6 +33,10 @@
 | 
				
			||||||
 | 
					 #include <linux/platform_device.h>
 | 
				
			||||||
 | 
					 #include <linux/io.h>
 | 
				
			||||||
 | 
					 #include <linux/clk.h>
 | 
				
			||||||
 | 
					+#include <linux/bitops.h>
 | 
				
			||||||
 | 
					+/* For Cortina Gemini */
 | 
				
			||||||
 | 
					+#include <linux/mfd/syscon.h>
 | 
				
			||||||
 | 
					+#include <linux/regmap.h>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 #include <asm/byteorder.h>
 | 
				
			||||||
 | 
					 #include <asm/irq.h>
 | 
				
			||||||
 | 
					@@ -5558,6 +5562,72 @@ static void fotg210_init(struct fotg210_
 | 
				
			||||||
 | 
					 	iowrite32(value, &fotg210->regs->otgcsr);
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+/*
 | 
				
			||||||
 | 
					+ * Gemini-specific initialization function, only executed on the
 | 
				
			||||||
 | 
					+ * Gemini SoC using the global misc control register.
 | 
				
			||||||
 | 
					+ */
 | 
				
			||||||
 | 
					+#define GEMINI_GLOBAL_MISC_CTRL		0x30
 | 
				
			||||||
 | 
					+#define GEMINI_MISC_USB0_WAKEUP		BIT(14)
 | 
				
			||||||
 | 
					+#define GEMINI_MISC_USB1_WAKEUP		BIT(15)
 | 
				
			||||||
 | 
					+#define GEMINI_MISC_USB0_VBUS_ON	BIT(22)
 | 
				
			||||||
 | 
					+#define GEMINI_MISC_USB1_VBUS_ON	BIT(23)
 | 
				
			||||||
 | 
					+#define GEMINI_MISC_USB0_MINI_B		BIT(29)
 | 
				
			||||||
 | 
					+#define GEMINI_MISC_USB1_MINI_B		BIT(30)
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+static int fotg210_gemini_init(struct device *dev, struct usb_hcd *hcd)
 | 
				
			||||||
 | 
					+{
 | 
				
			||||||
 | 
					+	struct device_node *np = dev->of_node;
 | 
				
			||||||
 | 
					+	struct regmap *map;
 | 
				
			||||||
 | 
					+	bool mini_b;
 | 
				
			||||||
 | 
					+	bool wakeup;
 | 
				
			||||||
 | 
					+	u32 mask, val;
 | 
				
			||||||
 | 
					+	int ret;
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+	map = syscon_regmap_lookup_by_phandle(np, "syscon");
 | 
				
			||||||
 | 
					+	if (IS_ERR(map)) {
 | 
				
			||||||
 | 
					+		dev_err(dev, "no syscon\n");
 | 
				
			||||||
 | 
					+		return PTR_ERR(map);
 | 
				
			||||||
 | 
					+	}
 | 
				
			||||||
 | 
					+	mini_b = of_property_read_bool(np, "cortina,gemini-mini-b");
 | 
				
			||||||
 | 
					+	wakeup = of_property_read_bool(np, "wakeup-source");
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+	/*
 | 
				
			||||||
 | 
					+	 * Figure out if this is USB0 or USB1 by simply checking the
 | 
				
			||||||
 | 
					+	 * physical base address.
 | 
				
			||||||
 | 
					+	 */
 | 
				
			||||||
 | 
					+	mask = 0;
 | 
				
			||||||
 | 
					+	if (hcd->rsrc_start == 0x69000000) {
 | 
				
			||||||
 | 
					+		val = GEMINI_MISC_USB1_VBUS_ON;
 | 
				
			||||||
 | 
					+		if (mini_b)
 | 
				
			||||||
 | 
					+			val |= GEMINI_MISC_USB1_MINI_B;
 | 
				
			||||||
 | 
					+		else
 | 
				
			||||||
 | 
					+			mask |= GEMINI_MISC_USB1_MINI_B;
 | 
				
			||||||
 | 
					+		if (wakeup)
 | 
				
			||||||
 | 
					+			val |= GEMINI_MISC_USB1_WAKEUP;
 | 
				
			||||||
 | 
					+		else
 | 
				
			||||||
 | 
					+			mask |= GEMINI_MISC_USB1_WAKEUP;
 | 
				
			||||||
 | 
					+	} else {
 | 
				
			||||||
 | 
					+		val = GEMINI_MISC_USB0_VBUS_ON;
 | 
				
			||||||
 | 
					+		if (mini_b)
 | 
				
			||||||
 | 
					+			val |= GEMINI_MISC_USB0_MINI_B;
 | 
				
			||||||
 | 
					+		else
 | 
				
			||||||
 | 
					+			mask |= GEMINI_MISC_USB0_MINI_B;
 | 
				
			||||||
 | 
					+		if (wakeup)
 | 
				
			||||||
 | 
					+			val |= GEMINI_MISC_USB0_WAKEUP;
 | 
				
			||||||
 | 
					+		else
 | 
				
			||||||
 | 
					+			mask |= GEMINI_MISC_USB0_WAKEUP;
 | 
				
			||||||
 | 
					+	}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+	ret = regmap_update_bits(map, GEMINI_GLOBAL_MISC_CTRL, mask, val);
 | 
				
			||||||
 | 
					+	if (ret) {
 | 
				
			||||||
 | 
					+		dev_err(dev, "failed to initialize Gemini PHY\n");
 | 
				
			||||||
 | 
					+		return ret;
 | 
				
			||||||
 | 
					+	}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+	dev_info(dev, "initialized Gemini PHY\n");
 | 
				
			||||||
 | 
					+	return 0;
 | 
				
			||||||
 | 
					+}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 /**
 | 
				
			||||||
 | 
					  * fotg210_hcd_probe - initialize faraday FOTG210 HCDs
 | 
				
			||||||
 | 
					  *
 | 
				
			||||||
 | 
					@@ -5635,6 +5705,12 @@ static int fotg210_hcd_probe(struct plat
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	fotg210_init(fotg210);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					+	if (of_device_is_compatible(dev->of_node, "cortina,gemini-usb")) {
 | 
				
			||||||
 | 
					+		retval = fotg210_gemini_init(dev, hcd);
 | 
				
			||||||
 | 
					+		if (retval)
 | 
				
			||||||
 | 
					+			goto failed_dis_clk;
 | 
				
			||||||
 | 
					+	}
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					 	retval = usb_add_hcd(hcd, irq, IRQF_SHARED);
 | 
				
			||||||
 | 
					 	if (retval) {
 | 
				
			||||||
 | 
					 		dev_err(dev, "failed to add hcd with err %d\n", retval);
 | 
				
			||||||
@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					From a2de8560885469f3d76c80207a669029e4fc8a45 Mon Sep 17 00:00:00 2001
 | 
				
			||||||
 | 
					From: Linus Walleij <linus.walleij@linaro.org>
 | 
				
			||||||
 | 
					Date: Mon, 11 Mar 2019 15:44:29 +0100
 | 
				
			||||||
 | 
					Subject: [PATCH 2/7] ARM: dts: Augment DIR-685 partition table for OpenWrt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Rename the firmware partition so that the firmware MTD
 | 
				
			||||||
 | 
					splitter will do its job, drop the rootfs arguments as
 | 
				
			||||||
 | 
					the MTD splitter will set this up automatically.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					 arch/arm/boot/dts/gemini-dlink-dir-685.dts | 6 +++---
 | 
				
			||||||
 | 
					 1 file changed, 3 insertions(+), 3 deletions(-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--- a/arch/arm/boot/dts/gemini-dlink-dir-685.dts
 | 
				
			||||||
 | 
					+++ b/arch/arm/boot/dts/gemini-dlink-dir-685.dts
 | 
				
			||||||
 | 
					@@ -20,7 +20,7 @@
 | 
				
			||||||
 | 
					 	};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	chosen {
 | 
				
			||||||
 | 
					-		bootargs = "console=ttyS0,19200n8 root=/dev/sda1 rw rootwait consoleblank=300";
 | 
				
			||||||
 | 
					+		bootargs = "console=ttyS0,19200n8 consoleblank=300";
 | 
				
			||||||
 | 
					 		stdout-path = "uart0:19200n8";
 | 
				
			||||||
 | 
					 	};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -285,9 +285,9 @@
 | 
				
			||||||
 | 
					 				 * this is called "upgrade" on the vendor system.
 | 
				
			||||||
 | 
					 				 */
 | 
				
			||||||
 | 
					 				partition@40000 {
 | 
				
			||||||
 | 
					-					label = "upgrade";
 | 
				
			||||||
 | 
					+					compatible = "wrg";
 | 
				
			||||||
 | 
					+					label = "firmware";
 | 
				
			||||||
 | 
					 					reg = <0x00040000 0x01f40000>;
 | 
				
			||||||
 | 
					-					read-only;
 | 
				
			||||||
 | 
					 				};
 | 
				
			||||||
 | 
					 				/* RGDB, Residental Gateway Database? */
 | 
				
			||||||
 | 
					 				partition@1f80000 {
 | 
				
			||||||
@ -0,0 +1,117 @@
 | 
				
			|||||||
 | 
					From 9b95b301b219df19c20f4a563f1da6338b09b0d0 Mon Sep 17 00:00:00 2001
 | 
				
			||||||
 | 
					From: Linus Walleij <linus.walleij@linaro.org>
 | 
				
			||||||
 | 
					Date: Tue, 31 Dec 2019 18:14:28 +0100
 | 
				
			||||||
 | 
					Subject: [PATCH 3/7] ARM: dts: gemini: Rename IDE nodes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					By renaming the ATA drive nodes to "ide@" we activate the
 | 
				
			||||||
 | 
					semantic checks to the DT schema for the controller and use
 | 
				
			||||||
 | 
					the correct notation for PATA drives.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					 arch/arm/boot/dts/gemini-dlink-dir-685.dts | 2 +-
 | 
				
			||||||
 | 
					 arch/arm/boot/dts/gemini-dlink-dns-313.dts | 2 +-
 | 
				
			||||||
 | 
					 arch/arm/boot/dts/gemini-nas4220b.dts      | 4 ++--
 | 
				
			||||||
 | 
					 arch/arm/boot/dts/gemini-sl93512r.dts      | 4 ++--
 | 
				
			||||||
 | 
					 arch/arm/boot/dts/gemini-sq201.dts         | 2 +-
 | 
				
			||||||
 | 
					 arch/arm/boot/dts/gemini.dtsi              | 8 ++++++--
 | 
				
			||||||
 | 
					 6 files changed, 13 insertions(+), 9 deletions(-)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--- a/arch/arm/boot/dts/gemini-dlink-dir-685.dts
 | 
				
			||||||
 | 
					+++ b/arch/arm/boot/dts/gemini-dlink-dir-685.dts
 | 
				
			||||||
 | 
					@@ -443,7 +443,7 @@
 | 
				
			||||||
 | 
					 			};
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-		ata@63000000 {
 | 
				
			||||||
 | 
					+		ide@63000000 {
 | 
				
			||||||
 | 
					 			status = "okay";
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					--- a/arch/arm/boot/dts/gemini-dlink-dns-313.dts
 | 
				
			||||||
 | 
					+++ b/arch/arm/boot/dts/gemini-dlink-dns-313.dts
 | 
				
			||||||
 | 
					@@ -297,7 +297,7 @@
 | 
				
			||||||
 | 
					 			};
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-		ata@63000000 {
 | 
				
			||||||
 | 
					+		ide@63000000 {
 | 
				
			||||||
 | 
					 			status = "okay";
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 	};
 | 
				
			||||||
 | 
					--- a/arch/arm/boot/dts/gemini-nas4220b.dts
 | 
				
			||||||
 | 
					+++ b/arch/arm/boot/dts/gemini-nas4220b.dts
 | 
				
			||||||
 | 
					@@ -170,11 +170,11 @@
 | 
				
			||||||
 | 
					 			};
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-		ata@63000000 {
 | 
				
			||||||
 | 
					+		ide@63000000 {
 | 
				
			||||||
 | 
					 			status = "okay";
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-		ata@63400000 {
 | 
				
			||||||
 | 
					+		ide@63400000 {
 | 
				
			||||||
 | 
					 			status = "okay";
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					--- a/arch/arm/boot/dts/gemini-sl93512r.dts
 | 
				
			||||||
 | 
					+++ b/arch/arm/boot/dts/gemini-sl93512r.dts
 | 
				
			||||||
 | 
					@@ -293,11 +293,11 @@
 | 
				
			||||||
 | 
					 			};
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-		ata@63000000 {
 | 
				
			||||||
 | 
					+		ide@63000000 {
 | 
				
			||||||
 | 
					 			status = "okay";
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-		ata@63400000 {
 | 
				
			||||||
 | 
					+		ide@63400000 {
 | 
				
			||||||
 | 
					 			status = "okay";
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					--- a/arch/arm/boot/dts/gemini-sq201.dts
 | 
				
			||||||
 | 
					+++ b/arch/arm/boot/dts/gemini-sq201.dts
 | 
				
			||||||
 | 
					@@ -289,7 +289,7 @@
 | 
				
			||||||
 | 
					 			};
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-		ata@63000000 {
 | 
				
			||||||
 | 
					+		ide@63000000 {
 | 
				
			||||||
 | 
					 			status = "okay";
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					--- a/arch/arm/boot/dts/gemini.dtsi
 | 
				
			||||||
 | 
					+++ b/arch/arm/boot/dts/gemini.dtsi
 | 
				
			||||||
 | 
					@@ -356,7 +356,7 @@
 | 
				
			||||||
 | 
					 			};
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-		ata@63000000 {
 | 
				
			||||||
 | 
					+		ide@63000000 {
 | 
				
			||||||
 | 
					 			compatible = "cortina,gemini-pata", "faraday,ftide010";
 | 
				
			||||||
 | 
					 			reg = <0x63000000 0x1000>;
 | 
				
			||||||
 | 
					 			interrupts = <4 IRQ_TYPE_EDGE_RISING>;
 | 
				
			||||||
 | 
					@@ -365,9 +365,11 @@
 | 
				
			||||||
 | 
					 			clock-names = "PCLK";
 | 
				
			||||||
 | 
					 			sata = <&sata>;
 | 
				
			||||||
 | 
					 			status = "disabled";
 | 
				
			||||||
 | 
					+			#address-cells = <1>;
 | 
				
			||||||
 | 
					+			#size-cells = <0>;
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-		ata@63400000 {
 | 
				
			||||||
 | 
					+		ide@63400000 {
 | 
				
			||||||
 | 
					 			compatible = "cortina,gemini-pata", "faraday,ftide010";
 | 
				
			||||||
 | 
					 			reg = <0x63400000 0x1000>;
 | 
				
			||||||
 | 
					 			interrupts = <5 IRQ_TYPE_EDGE_RISING>;
 | 
				
			||||||
 | 
					@@ -376,6 +378,8 @@
 | 
				
			||||||
 | 
					 			clock-names = "PCLK";
 | 
				
			||||||
 | 
					 			sata = <&sata>;
 | 
				
			||||||
 | 
					 			status = "disabled";
 | 
				
			||||||
 | 
					+			#address-cells = <1>;
 | 
				
			||||||
 | 
					+			#size-cells = <0>;
 | 
				
			||||||
 | 
					 		};
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 		dma-controller@67000000 {
 | 
				
			||||||
@ -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 {
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user