[PATCH v3 2/4] dt-bindings: hwmon: add Microchip LAN969x fan controller

From: Robert Marko

Date: Wed Nov 11 2026 - 11:23:59 EST


The LAN969x fan controller has a PWM output and tachometer input in a
register block separate from the Sparx5-compatible temperature sensor.
Describe it with its own compatible and binding.

The optional fan child specifies PWM period and polarity, tachometer
pulses per revolution, and thermal cooling levels.

Acked-by: Conor Dooley <conor.dooley@xxxxxxxxxxxxx>
Signed-off-by: Robert Marko <robert.marko@xxxxxxxxxx>
---
Changes in v3:
- Drop the unnecessary literal-style description marker.
- Inherit pulse-count bounds from fan-common.yaml.
- Require cooling-levels only when #cooling-cells is present.
- Add Conor Dooley's Acked-by tag.

Changes in v2:
- Describe the fan controller in a separate binding and compatible.
- Keep the existing temperature-sensor binding unchanged.

.../bindings/hwmon/microchip,lan9691-fan.yaml | 79 +++++++++++++++++++
1 file changed, 79 insertions(+)
create mode 100644 Documentation/devicetree/bindings/hwmon/microchip,lan9691-fan.yaml

diff --git a/Documentation/devicetree/bindings/hwmon/microchip,lan9691-fan.yaml b/Documentation/devicetree/bindings/hwmon/microchip,lan9691-fan.yaml
new file mode 100644
index 0000000000000..6a8d05a62f7c3
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/microchip,lan9691-fan.yaml
@@ -0,0 +1,79 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwmon/microchip,lan9691-fan.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Microchip LAN969x Fan Controller
+
+maintainers:
+ - Robert Marko <robert.marko@xxxxxxxxxx>
+
+description:
+ LAN969x fan controller with a PWM output and tachometer input. The fan
+ child's pwms property references this node to specify the PWM period and
+ polarity.
+
+properties:
+ compatible:
+ const: microchip,lan9691-fan
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ items:
+ - description: System reference clock
+
+ '#pwm-cells':
+ const: 2
+ description: |
+ Number of cells in a PWM specifier.
+ - cell 0: PWM period in nanoseconds
+ - cell 1: PWM polarity: 0 or PWM_POLARITY_INVERTED
+
+ fan:
+ $ref: fan-common.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ cooling-levels:
+ description:
+ PWM duty-cycle values corresponding to thermal cooling states.
+ items:
+ maximum: 255
+
+ pulses-per-revolution:
+ default: 2
+
+ required:
+ - pwms
+
+ dependencies:
+ '#cooling-cells':
+ - cooling-levels
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - '#pwm-cells'
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/pwm/pwm.h>
+
+ fanctrl: fan-controller@e2010348 {
+ compatible = "microchip,lan9691-fan";
+ reg = <0xe2010348 0xc>;
+ clocks = <&sys_clk>;
+ #pwm-cells = <2>;
+
+ fan {
+ pwms = <&fanctrl 40000 PWM_POLARITY_INVERTED>;
+ cooling-levels = <0 128 192 255>;
+ #cooling-cells = <2>;
+ };
+ };
--
2.56.0