Bindings for the Maxim MAX31785 Intelligent Fan Controller ========================================================== Reference: https://datasheets.maximintegrated.com/en/ds/MAX31785.pdf Required properties: - compatible : One of "maxim,max31785" or "maxim,max31785a" - reg : I2C address, one of 0x52, 0x53, 0x54, 0x55. - #address-cells : Must be 1 - #size-cells : Must be 0 - #thermal-sensor-cells : Should be 1. The device supports: - One internal sensor - Four external I2C digital sensors - Six external thermal diodes Optional properties: - use-stored-presence : Do not treat the devicetree description as canon for fan presence (the 'installed' bit of FAN_CONFIG_*). Instead, rely on the on the default value store of the device to populate it. Capabilities are configured through subnodes of the controller's node. Fans ---- Only fans with subnodes present will be considered as installed. If use-stored-presence is present in the parent node, then only fans that are both defined in the devicetree and have their installed bit set are considered installed. Required subnode properties: - compatible : Must be "pmbus-fan" - reg : The PMBus page the properties apply to. - #cooling-cells : Should be 2. See the thermal bindings at [1]. - maxim,fan-rotor-input : The type of rotor measurement provided to the controller. Must be either "tach" for tachometer pulses or "lock" for a locked-rotor signal. - maxim,fan-lock-polarity: Required iff maxim,fan-rotor-input is "lock". Valid values are "low" for active low, "high" for active high. Optional subnode properties: - fan-mode : "rpm" or "pwm". Default value is "pwm". - tach-pulses : Tachometer pulses per revolution. Valid values are 1, 2, 3 or 4. The default is 1. - cooling-min-level : Smallest cooling state accepted. See [1]. - cooling-max-level : Largest cooling state accepted. See [1]. - maxim,fan-no-fault-ramp: Do not ramp the fan to 100% PWM duty on detecting a fan fault - maxim,fan-startup : The number of rotations required before taking emergency action for an unresponsive fan and driving it with 100% or 0% PWM duty, depending on the state of maxim,fan-no-fault-ramp. Valid values are 0 (automatic spin-up disabled), 2, 4, or 8. Default value is 0. - maxim,fan-health : Enable automated fan health check - maxim,fan-ramp : Configures how fast the device ramps the PWM duty cycle from one value to another. Valid values are 0 to 7 inclusive, with values 0 - 2 configuring a 1000ms update rate and 1 - 3% duty respective duty increase, and 3 - 7 a 200ms update rate with a 1 - 5% respective duty increase. Default value is 0. - maxim,fan-no-watchdog : Do not ramp fan to 100% PWM duty on failure to update desired fan rate inside 10s. This implies maxim,tmp-no-fault-ramp - maxim,tmp-no-fault-ramp: Do not ramp fan to 100% PWM duty on temperature sensor fault detection. This implies maxim,fan-no-watchdog - maxim,tmp-hysteresis : The temperature hysteresis used to determine transitions to lower fan speed bands in the temperature/fan rate lookup table. Valid values are 2, 4, 6 or 8 (degrees celcius). Default value is 2. - maxim,fan-dual-tach : Enable dual tachometer functionality - maxim,fan-pwm-freq : The PWM frequency. Valid values are 30, 50, 100, 150 and 25000 (Hz). Default value is 30Hz. - maxim,fan-lookup-table : A 16-element cell array of alternating temperature and rate values representing the look up table. The rate units are set through the fan-mode property. - maxim,fan-fault-pin-mon: Ramp fans to 100% PWM duty when the FAULT pin is asserted Temperature ----------- Required subnode properties: - compatible : Must be "pmbus-temperature" - reg : The PMBus page the properties apply to. Optional subnode properties: - maxim,tmp-offset : Valid values are 0 - 30 (degrees celcius) inclusive. Default value is 0. - maxim,tmp-fans : An array of phandles to fans controlled by the current temperature sensor. [1] Documentation/devicetree/bindings/thermal/thermal.txt Example: fan-max31785: max31785@52 { reg = <0x52>; compatible = "maxim,max31785"; #address-cells = <1>; #size-cells = <0>; #thermal-sensor-cells = <1>; fan@0 { compatible = "pmbus-fan"; reg = <0>; mode = "rpm"; tach-pulses = <1>; #cooling-cells = <2>; cooling-min-level = <0>; cooling-max-level = <9>; maxim,fan-rotor-input = "tach"; maxim,fan-dual-tach; }; /* * Hardware controlled fan: Fan speed is controlled by a * temperature sensor feeding values into the lookup table. The * fan association is done in the temperature sensor node. One * sensor can drive multiple fans. */ cpu_fan: fan@1 { compatible = "pmbus-fan"; reg = <1>; mode = "rpm"; tach-pulses = <1>; #cooling-cells = <2>; maxim,fan-rotor-input = "tach"; maxim,tmp-hysteresis = <2>; maxim,fan-lookup-table = < /* Temperature RPM */ 0 1000 10 2000 20 3000 30 4000 40 5000 50 6000 60 7000 70 8000 >; }; cpu_temp: sensor@6 { compatible = "pmbus-temperature"; reg = <6>; maxim,tmp-offset = <0>; maxim,tmp-fans = <&cpu_fan>; }; };