xref: /openbmc/phosphor-bmc-code-mgmt/i2c-vr/mps/mp5998.hpp (revision 782d6eed913236bc78c533551876389f176bf121)
1 #pragma once
2 
3 #include "common/include/pmbus.hpp"
4 #include "mps.hpp"
5 
6 namespace phosphor::software::VR
7 {
8 
9 class MP5998 : public MPSVoltageRegulator
10 {
11   public:
MP5998(sdbusplus::async::context & ctx,uint16_t bus,uint16_t address)12     MP5998(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> unlockPasswordProtection();
26     sdbusplus::async::task<bool> unlockWriteProtection();
27     sdbusplus::async::task<bool> storeMTP();
28     sdbusplus::async::task<bool> waitForMTPComplete();
29     sdbusplus::async::task<bool> sendRestoreMTPCommand();
30     sdbusplus::async::task<bool> restoreMTPAndVerify();
31     sdbusplus::async::task<bool> checkEEPROMFaultAfterRestore();
32     sdbusplus::async::task<bool> verifyCRC();
33     sdbusplus::async::task<bool> programAllRegisters();
34 };
35 
36 } // namespace phosphor::software::VR
37