xref: /freebsd-src/sys/contrib/device-tree/Bindings/hwmon/pwm-fan.yaml (revision fac71e4e09885bb2afa3d984a0c239a52e1a7418)
1*fac71e4eSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*fac71e4eSEmmanuel Vadot%YAML 1.2
3*fac71e4eSEmmanuel Vadot---
4*fac71e4eSEmmanuel Vadot$id: http://devicetree.org/schemas/hwmon/pwm-fan.yaml#
5*fac71e4eSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*fac71e4eSEmmanuel Vadot
7*fac71e4eSEmmanuel Vadottitle: Fan connected to PWM lines
8*fac71e4eSEmmanuel Vadot
9*fac71e4eSEmmanuel Vadotmaintainers:
10*fac71e4eSEmmanuel Vadot  - Jean Delvare <jdelvare@suse.com>
11*fac71e4eSEmmanuel Vadot  - Guenter Roeck <linux@roeck-us.net>
12*fac71e4eSEmmanuel Vadot
13*fac71e4eSEmmanuel Vadotproperties:
14*fac71e4eSEmmanuel Vadot  compatible:
15*fac71e4eSEmmanuel Vadot    const: pwm-fan
16*fac71e4eSEmmanuel Vadot
17*fac71e4eSEmmanuel Vadot  cooling-levels:
18*fac71e4eSEmmanuel Vadot    description: PWM duty cycle values corresponding to thermal cooling states.
19*fac71e4eSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32-array
20*fac71e4eSEmmanuel Vadot    items:
21*fac71e4eSEmmanuel Vadot      maximum: 255
22*fac71e4eSEmmanuel Vadot
23*fac71e4eSEmmanuel Vadot  fan-supply:
24*fac71e4eSEmmanuel Vadot    description: Phandle to the regulator that provides power to the fan.
25*fac71e4eSEmmanuel Vadot
26*fac71e4eSEmmanuel Vadot  interrupts:
27*fac71e4eSEmmanuel Vadot    description:
28*fac71e4eSEmmanuel Vadot      This contains an interrupt specifier for each fan tachometer output
29*fac71e4eSEmmanuel Vadot      connected to an interrupt source. The output signal must generate a
30*fac71e4eSEmmanuel Vadot      defined number of interrupts per fan revolution, which require that
31*fac71e4eSEmmanuel Vadot      it must be self resetting edge interrupts.
32*fac71e4eSEmmanuel Vadot    maxItems: 1
33*fac71e4eSEmmanuel Vadot
34*fac71e4eSEmmanuel Vadot  pulses-per-revolution:
35*fac71e4eSEmmanuel Vadot    description:
36*fac71e4eSEmmanuel Vadot      Define the number of pulses per fan revolution for each tachometer
37*fac71e4eSEmmanuel Vadot      input as an integer.
38*fac71e4eSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
39*fac71e4eSEmmanuel Vadot    minimum: 1
40*fac71e4eSEmmanuel Vadot    maximum: 4
41*fac71e4eSEmmanuel Vadot    default: 2
42*fac71e4eSEmmanuel Vadot
43*fac71e4eSEmmanuel Vadot  pwms:
44*fac71e4eSEmmanuel Vadot    description: The PWM that is used to control the fan.
45*fac71e4eSEmmanuel Vadot    maxItems: 1
46*fac71e4eSEmmanuel Vadot
47*fac71e4eSEmmanuel Vadot  "#cooling-cells": true
48*fac71e4eSEmmanuel Vadot
49*fac71e4eSEmmanuel Vadotrequired:
50*fac71e4eSEmmanuel Vadot  - compatible
51*fac71e4eSEmmanuel Vadot  - pwms
52*fac71e4eSEmmanuel Vadot
53*fac71e4eSEmmanuel VadotadditionalProperties: false
54*fac71e4eSEmmanuel Vadot
55*fac71e4eSEmmanuel Vadotexamples:
56*fac71e4eSEmmanuel Vadot  - |
57*fac71e4eSEmmanuel Vadot    pwm-fan {
58*fac71e4eSEmmanuel Vadot      compatible = "pwm-fan";
59*fac71e4eSEmmanuel Vadot      cooling-levels = <0 102 170 230>;
60*fac71e4eSEmmanuel Vadot      pwms = <&pwm 0 10000 0>;
61*fac71e4eSEmmanuel Vadot      #cooling-cells = <2>;
62*fac71e4eSEmmanuel Vadot    };
63*fac71e4eSEmmanuel Vadot
64*fac71e4eSEmmanuel Vadot    thermal-zones {
65*fac71e4eSEmmanuel Vadot      cpu_thermal: cpu-thermal {
66*fac71e4eSEmmanuel Vadot        thermal-sensors = <&tmu 0>;
67*fac71e4eSEmmanuel Vadot        polling-delay-passive = <0>;
68*fac71e4eSEmmanuel Vadot        polling-delay = <0>;
69*fac71e4eSEmmanuel Vadot
70*fac71e4eSEmmanuel Vadot        trips {
71*fac71e4eSEmmanuel Vadot          cpu_alert1: cpu-alert1 {
72*fac71e4eSEmmanuel Vadot            temperature = <100000>; /* millicelsius */
73*fac71e4eSEmmanuel Vadot            hysteresis = <2000>; /* millicelsius */
74*fac71e4eSEmmanuel Vadot            type = "passive";
75*fac71e4eSEmmanuel Vadot          };
76*fac71e4eSEmmanuel Vadot        };
77*fac71e4eSEmmanuel Vadot
78*fac71e4eSEmmanuel Vadot        cooling-maps {
79*fac71e4eSEmmanuel Vadot          map0 {
80*fac71e4eSEmmanuel Vadot            trip = <&cpu_alert1>;
81*fac71e4eSEmmanuel Vadot            cooling-device = <&fan0 0 1>;
82*fac71e4eSEmmanuel Vadot          };
83*fac71e4eSEmmanuel Vadot        };
84*fac71e4eSEmmanuel Vadot      };
85*fac71e4eSEmmanuel Vadot    };
86*fac71e4eSEmmanuel Vadot
87*fac71e4eSEmmanuel Vadot  - |
88*fac71e4eSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
89*fac71e4eSEmmanuel Vadot
90*fac71e4eSEmmanuel Vadot    pwm-fan {
91*fac71e4eSEmmanuel Vadot      compatible = "pwm-fan";
92*fac71e4eSEmmanuel Vadot      pwms = <&pwm 0 40000 0>;
93*fac71e4eSEmmanuel Vadot      fan-supply = <&reg_fan>;
94*fac71e4eSEmmanuel Vadot      interrupt-parent = <&gpio5>;
95*fac71e4eSEmmanuel Vadot      interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
96*fac71e4eSEmmanuel Vadot      pulses-per-revolution = <2>;
97*fac71e4eSEmmanuel Vadot    };
98