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