Kernel driver mlxreg-fan¶
Provides FAN control for the next Mellanox systems:
- QMB700, equipped with 40x200GbE InfiniBand ports;
- MSN3700, equipped with 32x200GbE or 16x400GbE Ethernet ports;
- MSN3410, equipped with 6x400GbE plus 48x50GbE Ethernet ports;
- MSN3800, equipped with 64x1000GbE Ethernet ports;
Author: Vadim Pasternak <vadimp@mellanox.com>
These are the Top of the Rack systems, equipped with Mellanox switchboard with Mellanox Quantum or Spectrume-2 devices.FAN controller is implemented by the programmable device logic.
The default registers offsets set within the programmable device is asfollowing:
| pwm1 | 0xe3 |
| fan1 (tacho1) | 0xe4 |
| fan2 (tacho2) | 0xe5 |
| fan3 (tacho3) | 0xe6 |
| fan4 (tacho4) | 0xe7 |
| fan5 (tacho5) | 0xe8 |
| fan6 (tacho6) | 0xe9 |
| fan7 (tacho7) | 0xea |
| fan8 (tacho8) | 0xeb |
| fan9 (tacho9) | 0xec |
| fan10 (tacho10) | 0xed |
| fan11 (tacho11) | 0xee |
| fan12 (tacho12) | 0xef |
This setup can be re-programmed with other registers.
Description¶
The driver implements a simple interface for driving a fan connected toa PWM output and tachometer inputs.This driver obtains PWM and tachometers registers location according tothe system configuration and creates FAN/PWM hwmon objects and a coolingdevice. PWM and tachometers are sensed through the on-board programmabledevice, which exports its register map. This device could be attached toany bus type, for which register mapping is supported.Single instance is created with one PWM control, up to 12 tachometers andone cooling device. It could be as many instances as programmable devicesupports.The driver exposes the fan to the user space through the hwmon’s andthermal’s sysfs interfaces.
/sys files in hwmon subsystem¶
| fan[1-12]_fault | RO | files for tachometers TACH1-TACH12 fault indication |
| fan[1-12]_input | RO | files for tachometers TACH1-TACH12 input (in RPM) |
| pwm1 | RW | file for fan[1-12] target duty cycle (0..255) |
/sys files in thermal subsystem¶
| cur_state | RW | file for current cooling state of the cooling device(0..max_state) |
| max_state | RO | file for maximum cooling state of the cooling device |