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