]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64: dts: freescale: imx93-phyboard-nash: Add pwm-fan overlay
authorPrimoz Fiser <primoz.fiser@norik.com>
Tue, 28 Oct 2025 11:58:20 +0000 (12:58 +0100)
committerShawn Guo <shawnguo@kernel.org>
Sun, 16 Nov 2025 09:41:18 +0000 (17:41 +0800)
Add overlay to support PWM fan on the phyBOARD-Nash-i.MX93 board. Fan
can be connected to the FAN (X48) connector on the board and will be
controlled according to the following CPU temperature trips table:

 - bellow 50 degrees - fan is off (<1% duty cycle)
 - between 50 and 58 degrees - low fan speed (~35% duty cycle)
 - between 58 and 65 degrees - fan medium speed (~60% duty cycle)
 - above 65 degrees - fan at full speed (>99% duty cycle)

The output frequency of PWM signal is set to 25 kHz.

Signed-off-by: Primoz Fiser <primoz.fiser@norik.com>
Reviewed-by: Alberto Merciai <alb3rt0.m3rciai@gmail.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/Makefile
arch/arm64/boot/dts/freescale/imx93-phyboard-nash-pwm-fan.dtso [new file with mode: 0644]

index ac24c563c3c8c8512439a9e16b7ebb43e29c0280..7b6143811c9ddea9f82609df0df207623860e237 100644 (file)
@@ -382,11 +382,13 @@ dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-segin.dtb
 
 imx93-phyboard-nash-jtag-dtbs += imx93-phyboard-nash.dtb imx93-phyboard-nash-jtag.dtbo
 imx93-phyboard-nash-peb-wlbt-07-dtbs += imx93-phyboard-nash.dtb imx93-phyboard-nash-peb-wlbt-07.dtbo
+imx93-phyboard-nash-pwm-fan-dtbs += imx93-phyboard-nash.dtb imx93-phyboard-nash-pwm-fan.dtbo
 imx93-phyboard-segin-peb-eval-01-dtbs += imx93-phyboard-segin.dtb imx93-phyboard-segin-peb-eval-01.dtbo
 imx93-phyboard-segin-peb-wlbt-05-dtbs += imx93-phyboard-segin.dtb imx93-phyboard-segin-peb-wlbt-05.dtbo
 imx93-phycore-rpmsg-dtbs += imx93-phyboard-nash.dtb imx93-phyboard-segin.dtb imx93-phycore-rpmsg.dtbo
 dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-nash-jtag.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-nash-peb-wlbt-07.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-nash-pwm-fan.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-segin-peb-eval-01.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx93-phyboard-segin-peb-wlbt-05.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx93-phycore-rpmsg.dtb
diff --git a/arch/arm64/boot/dts/freescale/imx93-phyboard-nash-pwm-fan.dtso b/arch/arm64/boot/dts/freescale/imx93-phyboard-nash-pwm-fan.dtso
new file mode 100644 (file)
index 0000000..d1adf04
--- /dev/null
@@ -0,0 +1,75 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Author: Primoz Fiser <primoz.fiser@norik.com>
+ */
+
+#include <dt-bindings/pwm/pwm.h>
+#include "imx93-pinfunc.h"
+
+/dts-v1/;
+/plugin/;
+
+&{/} {
+       fan0: pwm-fan {
+               compatible = "pwm-fan";
+               #cooling-cells = <2>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_fan>;
+               cooling-levels = <1 90 150 200 255>;
+               pwms = <&tpm6 1 40000 PWM_POLARITY_INVERTED>;
+       };
+
+       thermal-zones {
+               cpu-thermal {
+                       trips {
+                               cpu_low: cpu-low {
+                                       hysteresis = <3000>;
+                                       temperature = <50000>;
+                                       type = "active";
+                               };
+
+                               cpu_med: cpu-med {
+                                       hysteresis = <3000>;
+                                       temperature = <58000>;
+                                       type = "active";
+                               };
+
+                               cpu_high: cpu-high {
+                                       hysteresis = <3000>;
+                                       temperature = <65000>;
+                                       type = "active";
+                               };
+                       };
+
+                       cooling-maps {
+                               map1 {
+                                       cooling-device = <&fan0 1 1>;
+                                       trip = <&cpu_low>;
+                               };
+
+                               map2 {
+                                       cooling-device = <&fan0 2 2>;
+                                       trip = <&cpu_med>;
+                               };
+
+                               map3 {
+                                       cooling-device = <&fan0 4 4>;
+                                       trip = <&cpu_high>;
+                               };
+                       };
+               };
+       };
+};
+
+&tpm6 {
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_fan: fangrp {
+               fsl,pins = <
+                       MX93_PAD_GPIO_IO23__TPM6_CH1    0x31e
+               >;
+       };
+};