Documentation / devicetree / bindings / hwmon / pwm-fan.yaml


Based on kernel version 6.18. Page generated on 2025-12-02 09:03 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/hwmon/pwm-fan.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Fan connected to PWM lines

maintainers:
  - Jean Delvare <jdelvare@suse.com>
  - Guenter Roeck <linux@roeck-us.net>

properties:
  compatible:
    const: pwm-fan

  cooling-levels:
    description: PWM duty cycle values corresponding to thermal cooling states.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    items:
      maximum: 255

  fan-supply:
    description: Phandle to the regulator that provides power to the fan.

  interrupts:
    description:
      This contains an interrupt specifier for each fan tachometer output
      connected to an interrupt source. The output signal must generate a
      defined number of interrupts per fan revolution, which require that
      it must be self resetting edge interrupts.
    maxItems: 1

  fan-shutdown-percent:
    description:
      Fan RPM in percent set during shutdown. This is used to keep the fan
      running at fixed RPM after the kernel shut down, which is useful on
      hardware that does keep heating itself even after the kernel did shut
      down, for example from some sort of management core.
    minimum: 0
    maximum: 100

  fan-stop-to-start-percent:
    description:
      Minimum fan RPM in percent to start when stopped.
    minimum: 0
    maximum: 100

  fan-stop-to-start-us:
    description:
      Time to wait in microseconds after start when stopped.

  pulses-per-revolution:
    description:
      Define the number of pulses per fan revolution for each tachometer
      input as an integer.
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 1
    maximum: 4
    default: 2

  pwms:
    description: The PWM that is used to control the fan.
    maxItems: 1
 
  "#cooling-cells": true

required:
  - compatible
  - pwms

additionalProperties: false

examples:
  - |
    pwm-fan {
      compatible = "pwm-fan";
      cooling-levels = <0 102 170 230>;
      pwms = <&pwm 0 10000 0>;
      #cooling-cells = <2>;
    };
 
    thermal-zones {
      cpu_thermal: cpu-thermal {
        thermal-sensors = <&tmu 0>;
        polling-delay-passive = <0>;
        polling-delay = <0>;
 
        trips {
          cpu_alert1: cpu-alert1 {
            temperature = <100000>; /* millicelsius */
            hysteresis = <2000>; /* millicelsius */
            type = "passive";
          };
        };
 
        cooling-maps {
          map0 {
            trip = <&cpu_alert1>;
            cooling-device = <&fan0 0 1>;
          };
        };
      };
    };

  - |
    #include <dt-bindings/interrupt-controller/irq.h>
 
    pwm-fan {
      compatible = "pwm-fan";
      pwms = <&pwm 0 40000 0>;
      fan-supply = <&reg_fan>;
      interrupt-parent = <&gpio5>;
      interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
      pulses-per-revolution = <2>;
    };