[PATCH v2 6/6] arm64: dts: microchip: lan969x: add fan controller
From: Robert Marko
Date: Mon Nov 09 2026 - 08:43:26 EST
LAN969x provides a PWM fan output and tachometer input in a register
block separate from the temperature sensor. Describe it as its own
fan-controller node and keep the temperature sensor compatible.
Connect the EV23X71A fan to the controller and route its pins. Use a
25 kHz normal-polarity PWM for the board low-side FET. Set cooling
levels so the fan starts at full speed.
Signed-off-by: Robert Marko <robert.marko@xxxxxxxxxx>
---
Changes in v2:
- Split the fan controller from the temperature node.
- Add the EV23X71A fan child with board-specific PWM and cooling levels.
arch/arm64/boot/dts/microchip/lan9691.dtsi | 7 +++++++
arch/arm64/boot/dts/microchip/lan9696-ev23x71a.dts | 8 +++++++-
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/microchip/lan9691.dtsi b/arch/arm64/boot/dts/microchip/lan9691.dtsi
index 52c22dd1a15d5..039c2014aa341 100644
--- a/arch/arm64/boot/dts/microchip/lan9691.dtsi
+++ b/arch/arm64/boot/dts/microchip/lan9691.dtsi
@@ -522,6 +522,13 @@ sgpio_out: gpio@1 {
};
};
+ fanctrl: fan-controller@e2010348 {
+ compatible = "microchip,lan9691-fan";
+ reg = <0xe2010348 0xc>;
+ clocks = <&fx100_clk>;
+ #pwm-cells = <2>;
+ };
+
tmon: hwmon@e2020100 {
compatible = "microchip,lan9691-temp", "microchip,sparx5-temp";
reg = <0xe2020100 0xc>;
diff --git a/arch/arm64/boot/dts/microchip/lan9696-ev23x71a.dts b/arch/arm64/boot/dts/microchip/lan9696-ev23x71a.dts
index abb21a8bace9e..3cbe5beebce1d 100644
--- a/arch/arm64/boot/dts/microchip/lan9696-ev23x71a.dts
+++ b/arch/arm64/boot/dts/microchip/lan9696-ev23x71a.dts
@@ -775,9 +775,15 @@ port29: port@29 {
};
};
-&tmon {
+&fanctrl {
pinctrl-0 = <&fan_pins>;
pinctrl-names = "default";
+
+ fan {
+ pwms = <&fanctrl 40000 0>;
+ cooling-levels = <0 128 192 255>;
+ #cooling-cells = <2>;
+ };
};
&usart0 {
--
2.56.0