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 = <®_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