From 9762b3a015886c42941f535e688ffac1f56e35aa Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Tue, 18 Sep 2018 11:08:07 +0100 Subject: [PATCH] BCM270X_DT: Add gpio-fan overlay Signed-off-by: Phil Elwell --- 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 @@ -33,6 +33,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 @@ -541,6 +541,14 @@ Load: dtoverlay=googlevoicehat-soundca Params: +Name: gpio-fan +Info: Configure a GPIO pin to control a cooling fan. +Load: dtoverlay=gpio-fan,= +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"; + }; +};