[PATCH v6 0/2] hwmon: (pmbus) Add support for MPS MP2949A

ainux.wang
2021-07-02T07:32:01Z

PART 1 (The chip driver):
Add support for MP2949A device from Monolithic Power Systems, Inc. (MPS).
This is a triple-loop, digital, multi-phase controller.
This device:
- Supports up to three power rail.
- Provides 6 pulse-width modulations (PWMs), and can be configured up
to 6-phase operation for Rail A , up to 2-phase operation for Rail B
and up to 1-phase operation for Rail C.
- The PMBus registers are distributed into three pages: Page 0, Page 1,
Page 2. Page 0 contains the registers for Rail A and most of the common
settings for all of the rails. Page 1 contains register information for
Rail B. Page 2 contains register information for Rail C.
- The MP2949A supports both 5mV VID step and 10mv VID step for IMVP8 and
IMVP9.

v6:
- Add mp2949a_read_byte_data(), mp2949a_read_word_data(), and the mp2949a
do not support STATUS_BYTE, STATUS_WORD, and VOUT_MODE ,but return some
random data when reading them.

v5:
- Moved change log to right here.

v4:
- Removed mp2949a_read_byte_data().
- Added space before and after '-' and fixed a bug that is '~' on line 35.

v3:
- Added change log here.
- Errors in the document have been modified.
- Fixed PMBUS_VOUT_MODE to MP2949A_MFR_VR_CONFIG.
- Removed unnecessary vout_params and empty line.

v2:
- Reference has been added to Documentation/hwmon/index.rst.
- Droped 'vendor'.
- Removed change codes of the PMBus core and added mp2949a_identify()
and mp2949a_read_byte_data() to this driver.

v1:
- Add support for MPS MP2949A.

PART 2(PMbus Core):
There is a case(like MP2949A) that the chip do not support STATUS_WORD
and STATUS_BYTE command, but return some random data when reading.

So we should call read_status() instead of i2c_smbus_read_word_data()
and i2c_smbus_read_byte_data(), and the chip driver should implement a
read_word_data() function and a read_byte_data() function to return
-ENXIO.

Ainux.Wang (2):
hwmon: (pmbus) Add support for MPS MP2949A
hwmon: (pmbus) Try use read_status() to read status register

Documentation/hwmon/index.rst | 1 +
Documentation/hwmon/mp2949a.rst | 44 ++++++++++
drivers/hwmon/pmbus/Kconfig | 9 ++
drivers/hwmon/pmbus/Makefile | 1 +
drivers/hwmon/pmbus/mp2949a.c | 136 +++++++++++++++++++++++++++++++
drivers/hwmon/pmbus/pmbus_core.c | 20 +++--
6 files changed, 206 insertions(+), 5 deletions(-)
create mode 100644 Documentation/hwmon/mp2949a.rst
create mode 100644 drivers/hwmon/pmbus/mp2949a.c

--
2.18.1