xref: /openbmc/phosphor-bmc-code-mgmt/i2c-vr/mps/mp5998.hpp (revision 782d6eed913236bc78c533551876389f176bf121)
1*782d6eedSFreddieJheng #pragma once
2*782d6eedSFreddieJheng 
3*782d6eedSFreddieJheng #include "common/include/pmbus.hpp"
4*782d6eedSFreddieJheng #include "mps.hpp"
5*782d6eedSFreddieJheng 
6*782d6eedSFreddieJheng namespace phosphor::software::VR
7*782d6eedSFreddieJheng {
8*782d6eedSFreddieJheng 
9*782d6eedSFreddieJheng class MP5998 : public MPSVoltageRegulator
10*782d6eedSFreddieJheng {
11*782d6eedSFreddieJheng   public:
MP5998(sdbusplus::async::context & ctx,uint16_t bus,uint16_t address)12*782d6eedSFreddieJheng     MP5998(sdbusplus::async::context& ctx, uint16_t bus, uint16_t address) :
13*782d6eedSFreddieJheng         MPSVoltageRegulator(ctx, bus, address)
14*782d6eedSFreddieJheng     {}
15*782d6eedSFreddieJheng 
16*782d6eedSFreddieJheng     sdbusplus::async::task<bool> verifyImage(const uint8_t* image,
17*782d6eedSFreddieJheng                                              size_t imageSize) final;
18*782d6eedSFreddieJheng     sdbusplus::async::task<bool> updateFirmware(bool force) final;
19*782d6eedSFreddieJheng     sdbusplus::async::task<bool> getCRC(uint32_t* checksum) final;
20*782d6eedSFreddieJheng     sdbusplus::async::task<bool> parseDeviceConfiguration() final;
21*782d6eedSFreddieJheng     bool forcedUpdateAllowed() final;
22*782d6eedSFreddieJheng 
23*782d6eedSFreddieJheng   private:
24*782d6eedSFreddieJheng     sdbusplus::async::task<bool> checkId(PMBusCmd pmBusCmd, uint32_t expected);
25*782d6eedSFreddieJheng     sdbusplus::async::task<bool> unlockPasswordProtection();
26*782d6eedSFreddieJheng     sdbusplus::async::task<bool> unlockWriteProtection();
27*782d6eedSFreddieJheng     sdbusplus::async::task<bool> storeMTP();
28*782d6eedSFreddieJheng     sdbusplus::async::task<bool> waitForMTPComplete();
29*782d6eedSFreddieJheng     sdbusplus::async::task<bool> sendRestoreMTPCommand();
30*782d6eedSFreddieJheng     sdbusplus::async::task<bool> restoreMTPAndVerify();
31*782d6eedSFreddieJheng     sdbusplus::async::task<bool> checkEEPROMFaultAfterRestore();
32*782d6eedSFreddieJheng     sdbusplus::async::task<bool> verifyCRC();
33*782d6eedSFreddieJheng     sdbusplus::async::task<bool> programAllRegisters();
34*782d6eedSFreddieJheng };
35*782d6eedSFreddieJheng 
36*782d6eedSFreddieJheng } // namespace phosphor::software::VR
37