This is an example on how to enable the fan on top of RPi's official PoE
hat.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulie...@suse.de>

---

Changes since v1:
 - Update patch to use 2 pwm cells

 arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 54 +++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts 
b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
index 09a1182c2936..361db82619a4 100644
--- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
+++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
@@ -5,6 +5,7 @@
 #include "bcm283x-rpi-usb-peripheral.dtsi"
 
 #include <dt-bindings/reset/raspberrypi,firmware-reset.h>
+#include <dt-bindings/pwm/raspberrypi,firmware-pwm.h>
 
 / {
        compatible = "raspberrypi,4-model-b", "brcm,bcm2711";
@@ -68,6 +69,54 @@ sd_vcc_reg: sd_vcc_reg {
                enable-active-high;
                gpio = <&expgpio 6 GPIO_ACTIVE_HIGH>;
        };
+
+       fan: pwm-fan {
+               compatible = "pwm-fan";
+               cooling-levels = <0 50 150 255>;
+               #cooling-cells = <2>;
+               pwms = <&fwpwm RASPBERRYPI_FIRMWARE_PWM_POE 80000>;
+       };
+
+       thermal-zones {
+               cpu_thermal: cpu-thermal {
+                       trips {
+                               threshold: trip-point@0 {
+                                       temperature = <45000>;
+                                       hysteresis = <5000>;
+                                       type = "active";
+                               };
+
+                               target: trip-point@1 {
+                                       temperature = <50000>;
+                                       hysteresis = <2000>;
+                                       type = "active";
+                               };
+
+                               cpu_hot: cpu_hot@0 {
+                                       temperature = <55000>;
+                                       hysteresis = <2000>;
+                                       type = "active";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&threshold>;
+                                       cooling-device = <&fan 0 1>;
+                               };
+
+                               map1 {
+                                       trip = <&target>;
+                                       cooling-device = <&fan 1 2>;
+                               };
+
+                               map2 {
+                                       trip = <&cpu_hot>;
+                                       cooling-device = <&fan 2 3>;
+                               };
+                       };
+               };
+       };
 };
 
 &ddc0 {
@@ -103,6 +152,11 @@ reset: reset {
                compatible = "raspberrypi,firmware-reset";
                #reset-cells = <1>;
        };
+
+       fwpwm: pwm {
+               compatible = "raspberrypi,firmware-pwm";
+               #pwm-cells = <2>;
+       };
 };
 
 &gpio {
-- 
2.28.0

Reply via email to