^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) .. SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) Kernel driver mp2975
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) ====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) Supported chips:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * MPS MP12254
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) Prefix: 'mp2975'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) Author:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) Vadim Pasternak <vadimp@nvidia.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) Description
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) -----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) This driver implements support for Monolithic Power Systems, Inc. (MPS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) vendor dual-loop, digital, multi-phase controller MP2975.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) This device:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) - Supports up to two power rail.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) - Provides 8 pulse-width modulations (PWMs), and can be configured up
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) to 8-phase operation for rail 1 and up to 4-phase operation for rail
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) - Supports two pages 0 and 1 for telemetry and also pages 2 and 3 for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) configuration.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) - Can configured VOUT readout in direct or VID format and allows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) setting of different formats on rails 1 and 2. For VID the following
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) protocols are available: VR13 mode with 5-mV DAC; VR13 mode with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 10-mV DAC, IMVP9 mode with 5-mV DAC.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) Device supports:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) - SVID interface.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) - AVSBus interface.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) Device complaint with:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) - PMBus rev 1.3 interface.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) Device supports direct format for reading output current, output voltage,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) input and output power and temperature.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) Device supports linear format for reading input voltage and input power.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) Device supports VID and direct formats for reading output voltage.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) The below VID modes are supported: VR12, VR13, IMVP9.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) The driver provides the next attributes for the current:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) - for current in: input, maximum alarm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) - for current out input, maximum alarm and highest values;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) - for phase current: input and label.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) attributes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) The driver exports the following attributes via the 'sysfs' files, where
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) - 'n' is number of telemetry pages (from 1 to 2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) - 'k' is number of configured phases (from 1 to 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) - indexes 1, 1*n for "iin";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) - indexes n+1, n+2 for "iout";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) - indexes 2*n+1 ... 2*n + k for phases.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) **curr[1-{2n}]_alarm**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) **curr[{n+1}-{n+2}]_highest**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) **curr[1-{2n+k}]_input**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) **curr[1-{2n+k}]_label**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) The driver provides the next attributes for the voltage:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) - for voltage in: input, high critical threshold, high critical alarm, all only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) from page 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) - for voltage out: input, low and high critical thresholds, low and high
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) critical alarms, from pages 0 and 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) The driver exports the following attributes via the 'sysfs' files, where
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) - 'n' is number of telemetry pages (from 1 to 2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) - indexes 1 for "iin";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) - indexes n+1, n+2 for "vout";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) **in[1-{2n+1}]_crit**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) **in[1-{2n+1}]_crit_alarm**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) **in[1-{2n+1}]_input**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) **in[1-{2n+1}]_label**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) **in[2-{n+1}]_lcrit**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) **in[2-{n+1}1_lcrit_alarm**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) The driver provides the next attributes for the power:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) - for power in alarm and input.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) - for power out: highest and input.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) The driver exports the following attributes via the 'sysfs' files, where
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) - 'n' is number of telemetry pages (from 1 to 2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) - indexes 1 for "pin";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) - indexes n+1, n+2 for "pout";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) **power1_alarm**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) **power[2-{n+1}]_highest**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) **power[1-{2n+1}]_input**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) **power[1-{2n+1}]_label**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) The driver provides the next attributes for the temperature (only from page 0):
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) **temp1_crit**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) **temp1_crit_alarm**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) **temp1_input**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) **temp1_max**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) **temp1_max_alarm**