mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 14:42:24 +00:00
148c847c9e
pwmX_enable supports three possible values: 0: Fan control disabled. Duty cycle is fixed to 0% 1: Fan control enabled, pwm mode. Duty cycle is determined by values written into Target Duty Cycle registers. 2: Fan control enabled, rpm mode Duty cycle is adjusted such that fan speed matches the values in Target Count registers The current code does not do this; instead, it mixes pwm control configuration with fan speed monitoring configuration. Worse, it reports that pwm control would be disabled (pwmX_enable==0) when it is in fact enabled in pwm mode. Part of the problem may be that the chip sets the "TACH input enable" bit on its own whenever the mode bit is set to RPM mode, but that doesn't mean that "TACH input enable" accurately reflects the pwm mode. Fix it up and only handle pwm control with the pwmX_enable attributes. In the documentation, clarify that disabling pwm control (pwmX_enable=0) sets the pwm duty cycle to 0%. In the code, explain why TACH_INPUT_EN is set together with RPM_MODE. While at it, only update the configuration register if the configuration has changed, and only update the cached configuration if updating the chip configuration was successful. Cc: Jan Kundrát <jan.kundrat@cesnet.cz> Cc: Václav Kubernát <kubernat@cesnet.cz> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Tested-by: Václav Kubernát <kubernat@cesnet.cz> Reviewed-by: Jan Kundrát <jan.kundrat@cesnet.cz> Link: https://lore.kernel.org/r/20210526154022.3223012-4-linux@roeck-us.net
45 lines
1.4 KiB
ReStructuredText
45 lines
1.4 KiB
ReStructuredText
Kernel driver max31790
|
|
======================
|
|
|
|
Supported chips:
|
|
|
|
* Maxim MAX31790
|
|
|
|
Prefix: 'max31790'
|
|
|
|
Addresses scanned: -
|
|
|
|
Datasheet: https://pdfserv.maximintegrated.com/en/ds/MAX31790.pdf
|
|
|
|
Author: Il Han <corone.il.han@gmail.com>
|
|
|
|
|
|
Description
|
|
-----------
|
|
|
|
This driver implements support for the Maxim MAX31790 chip.
|
|
|
|
The MAX31790 controls the speeds of up to six fans using six independent
|
|
PWM outputs. The desired fan speeds (or PWM duty cycles) are written
|
|
through the I2C interface. The outputs drive "4-wire" fans directly,
|
|
or can be used to modulate the fan's power terminals using an external
|
|
pass transistor.
|
|
|
|
Tachometer inputs monitor fan tachometer logic outputs for precise (+/-1%)
|
|
monitoring and control of fan RPM as well as detection of fan failure.
|
|
Six pins are dedicated tachometer inputs. Any of the six PWM outputs can
|
|
also be configured to serve as tachometer inputs.
|
|
|
|
|
|
Sysfs entries
|
|
-------------
|
|
|
|
================== === =======================================================
|
|
fan[1-12]_input RO fan tachometer speed in RPM
|
|
fan[1-12]_fault RO fan experienced fault
|
|
fan[1-6]_target RW desired fan speed in RPM
|
|
pwm[1-6]_enable RW regulator mode, 0=disabled (duty cycle=0%), 1=manual mode, 2=rpm mode
|
|
pwm[1-6] RW read: current pwm duty cycle,
|
|
write: target pwm duty cycle (0-255)
|
|
================== === =======================================================
|