OpenWrt – Rev 1

Subversion Repositories:
Rev:
From 498dfe7d12a047e4a3b466683b0b8138ea74ed9b Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Tue, 18 Sep 2018 11:08:07 +0100
Subject: [PATCH 417/454] BCM270X_DT: Add gpio-fan overlay

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
---
 arch/arm/boot/dts/overlays/Makefile           |  1 +
 arch/arm/boot/dts/overlays/README             |  8 +++
 .../boot/dts/overlays/gpio-fan-overlay.dts    | 71 +++++++++++++++++++
 3 files changed, 80 insertions(+)
 create mode 100644 arch/arm/boot/dts/overlays/gpio-fan-overlay.dts

--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -35,6 +35,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
        fe-pi-audio.dtbo \
        goodix.dtbo \
        googlevoicehat-soundcard.dtbo \
+       gpio-fan.dtbo \
        gpio-ir.dtbo \
        gpio-ir-tx.dtbo \
        gpio-key.dtbo \
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -563,6 +563,14 @@ Load:   dtoverlay=googlevoicehat-soundca
 Params: <None>
 
 
+Name:   gpio-fan
+Info:   Configure a GPIO pin to control a cooling fan.
+Load:   dtoverlay=gpio-fan,<param>=<val>
+Params: gpiopin                 GPIO used to control the fan (default 12)
+        temp                    Temperature at which the fan switches on, in
+                                millicelcius (default 55000)
+
+
 Name:   gpio-ir
 Info:   Use GPIO pin as rc-core style infrared receiver input. The rc-core-
         based gpio_ir_recv driver maps received keys directly to a
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/gpio-fan-overlay.dts
@@ -0,0 +1,71 @@
+/*
+ * Overlay for the Raspberry Pi GPIO Fan @ BCM GPIO12.
+ * Optional parameters:
+ *     - "gpiopin"     - default GPIO12
+ *     - "temp"        - default 55000
+ * Requires:
+ *     - kernel configurations: CONFIG_SENSORS_GPIO_FAN=m and CONFIG_SENSORS_PWM_FAN=m;
+ *     - kernel rebuid;
+ *     - DC Fan connected to GPIO via a N-MOSFET (2N7002)
+ *
+ *                   ┌─────────────────────┐
+ *                   │Fan negative terminal│
+ *                   └┬────────────────────┘
+ *                    │
+ *                 │──┘
+ * [GPIO12]──────┤ │<─┐  2N7002
+ *                 │──┤
+ *                    │
+ *                   ─┴─
+ *                   GND
+ *
+ * sudo dtc -W no-unit_address_vs_reg -@ -I dts -O dtb -o /boot/overlays/gpio-fan.dtbo gpio-fan.dts
+ * sudo nano /boot/config.txt add "dtoverlay=gpio-fan" or "dtoverlay=gpio-fan,gpiopin=12,temp=45000"
+ * or
+ * sudo sh -c "echo '\n# Enable PI GPIO-Fan\ndtoverlay=gpio-fan\n' >> /boot/config.txt"
+ * sudo sh -c "echo '\n# Enable PI GPIO-Fan\ndtoverlay=gpio-fan,gpiopin=12\n' >> /boot/config.txt"
+ *
+ */
+/dts-v1/;
+/plugin/;
+
+/ {
+       compatible = "brcm,bcm2708";
+
+       fragment@0 {
+               target-path = "/";
+               __overlay__ {
+                       fan0: gpio-fan@0 {
+                               compatible = "gpio-fan";
+                               gpios = <&gpio 12 1>;
+                               gpio-fan,speed-map = <0    0>,
+                                                                        <5000 1>;
+                               #cooling-cells = <2>;
+                       };
+               };
+       };
+
+       fragment@1 {
+               target = <&cpu_thermal>;
+               polling-delay = <2000>; /* milliseconds */
+               __overlay__ {
+                       trips {
+                               cpu_hot: trip-point@0 {
+                                       temperature = <55000>;  /* (millicelsius) Fan started at 55°C */
+                                       hysteresis = <5000>;    /* (millicelsius) Fan stopped at 50°C */
+                                       type = "active";
+                               };
+                       };
+                       cooling-maps {
+                               map0 {
+                                       trip = <&cpu_hot>;
+                                       cooling-device = <&fan0 1 1>;
+                               };
+                       };
+               };
+       };
+       __overrides__ {
+               gpiopin = <&fan0>,"gpios:4", <&fan0>,"brcm,pins:0";
+               temp = <&cpu_hot>,"temperature:0";
+       };
+};

Generated by GNU Enscript 1.6.5.90.