Vadim Pasternak | 65afb4c | 2018-07-03 07:00:09 +0000 | [diff] [blame] | 1 | Kernel driver mlxreg-fan |
| 2 | ======================== |
| 3 | |
| 4 | Provides FAN control for the next Mellanox systems: |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 5 | |
| 6 | - QMB700, equipped with 40x200GbE InfiniBand ports; |
| 7 | - MSN3700, equipped with 32x200GbE or 16x400GbE Ethernet ports; |
| 8 | - MSN3410, equipped with 6x400GbE plus 48x50GbE Ethernet ports; |
| 9 | - MSN3800, equipped with 64x1000GbE Ethernet ports; |
| 10 | |
| 11 | Author: Vadim Pasternak <vadimp@mellanox.com> |
| 12 | |
Vadim Pasternak | 65afb4c | 2018-07-03 07:00:09 +0000 | [diff] [blame] | 13 | These are the Top of the Rack systems, equipped with Mellanox switch |
| 14 | board with Mellanox Quantum or Spectrume-2 devices. |
| 15 | FAN controller is implemented by the programmable device logic. |
| 16 | |
| 17 | The default registers offsets set within the programmable device is as |
| 18 | following: |
Vadim Pasternak | 65afb4c | 2018-07-03 07:00:09 +0000 | [diff] [blame] | 19 | |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 20 | ======================= ==== |
| 21 | pwm1 0xe3 |
| 22 | fan1 (tacho1) 0xe4 |
| 23 | fan2 (tacho2) 0xe5 |
| 24 | fan3 (tacho3) 0xe6 |
| 25 | fan4 (tacho4) 0xe7 |
| 26 | fan5 (tacho5) 0xe8 |
| 27 | fan6 (tacho6) 0xe9 |
| 28 | fan7 (tacho7) 0xea |
| 29 | fan8 (tacho8) 0xeb |
| 30 | fan9 (tacho9) 0xec |
| 31 | fan10 (tacho10) 0xed |
| 32 | fan11 (tacho11) 0xee |
| 33 | fan12 (tacho12) 0xef |
| 34 | ======================= ==== |
| 35 | |
| 36 | This setup can be re-programmed with other registers. |
Vadim Pasternak | 65afb4c | 2018-07-03 07:00:09 +0000 | [diff] [blame] | 37 | |
| 38 | Description |
| 39 | ----------- |
| 40 | |
| 41 | The driver implements a simple interface for driving a fan connected to |
| 42 | a PWM output and tachometer inputs. |
| 43 | This driver obtains PWM and tachometers registers location according to |
| 44 | the system configuration and creates FAN/PWM hwmon objects and a cooling |
| 45 | device. PWM and tachometers are sensed through the on-board programmable |
| 46 | device, which exports its register map. This device could be attached to |
| 47 | any bus type, for which register mapping is supported. |
| 48 | Single instance is created with one PWM control, up to 12 tachometers and |
| 49 | one cooling device. It could be as many instances as programmable device |
| 50 | supports. |
| 51 | The driver exposes the fan to the user space through the hwmon's and |
| 52 | thermal's sysfs interfaces. |
| 53 | |
| 54 | /sys files in hwmon subsystem |
| 55 | ----------------------------- |
| 56 | |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 57 | ================= == =================================================== |
| 58 | fan[1-12]_fault RO files for tachometers TACH1-TACH12 fault indication |
| 59 | fan[1-12]_input RO files for tachometers TACH1-TACH12 input (in RPM) |
| 60 | pwm1 RW file for fan[1-12] target duty cycle (0..255) |
| 61 | ================= == =================================================== |
Vadim Pasternak | 65afb4c | 2018-07-03 07:00:09 +0000 | [diff] [blame] | 62 | |
| 63 | /sys files in thermal subsystem |
| 64 | ------------------------------- |
| 65 | |
Mauro Carvalho Chehab | b04f2f7 | 2019-04-17 06:46:28 -0300 | [diff] [blame] | 66 | ================= == ==================================================== |
| 67 | cur_state RW file for current cooling state of the cooling device |
| 68 | (0..max_state) |
| 69 | max_state RO file for maximum cooling state of the cooling device |
| 70 | ================= == ==================================================== |