xref: /openbmc/phosphor-bmc-code-mgmt/i2c-vr/mps/mp2x6xx.hpp (revision dcf4b607bd2937a8964d68fe9dcc59daaf20c720)
1*dcf4b607SKevin Tung #pragma once
2*dcf4b607SKevin Tung 
3*dcf4b607SKevin Tung #include "common/include/pmbus.hpp"
4*dcf4b607SKevin Tung #include "mps.hpp"
5*dcf4b607SKevin Tung 
6*dcf4b607SKevin Tung namespace phosphor::software::VR
7*dcf4b607SKevin Tung {
8*dcf4b607SKevin Tung 
9*dcf4b607SKevin Tung class MP2X6XX : public MPSVoltageRegulator
10*dcf4b607SKevin Tung {
11*dcf4b607SKevin Tung   public:
MP2X6XX(sdbusplus::async::context & ctx,uint16_t bus,uint16_t address)12*dcf4b607SKevin Tung     MP2X6XX(sdbusplus::async::context& ctx, uint16_t bus, uint16_t address) :
13*dcf4b607SKevin Tung         MPSVoltageRegulator(ctx, bus, address)
14*dcf4b607SKevin Tung     {}
15*dcf4b607SKevin Tung 
16*dcf4b607SKevin Tung     sdbusplus::async::task<bool> verifyImage(const uint8_t* image,
17*dcf4b607SKevin Tung                                              size_t imageSize) final;
18*dcf4b607SKevin Tung     sdbusplus::async::task<bool> updateFirmware(bool force) final;
19*dcf4b607SKevin Tung     sdbusplus::async::task<bool> getCRC(uint32_t* checksum) final;
20*dcf4b607SKevin Tung     sdbusplus::async::task<bool> parseDeviceConfiguration() final;
21*dcf4b607SKevin Tung     bool forcedUpdateAllowed() final;
22*dcf4b607SKevin Tung 
23*dcf4b607SKevin Tung   private:
24*dcf4b607SKevin Tung     sdbusplus::async::task<bool> checkId(PMBusCmd pmBusCmd, uint32_t expected);
25*dcf4b607SKevin Tung     sdbusplus::async::task<bool> unlockWriteProtect();
26*dcf4b607SKevin Tung     sdbusplus::async::task<bool> storeUserCode();
27*dcf4b607SKevin Tung     sdbusplus::async::task<bool> checkMTPCRC();
28*dcf4b607SKevin Tung     sdbusplus::async::task<bool> selectConfig(uint8_t config);
29*dcf4b607SKevin Tung     sdbusplus::async::task<bool> configAllRegisters();
30*dcf4b607SKevin Tung     sdbusplus::async::task<bool> programConfigData(
31*dcf4b607SKevin Tung         const std::vector<MPSData>& gdata);
32*dcf4b607SKevin Tung };
33*dcf4b607SKevin Tung 
34*dcf4b607SKevin Tung } // namespace phosphor::software::VR
35