#pragma once #include "common/include/pmbus.hpp" #include "mps.hpp" namespace phosphor::software::VR { class MP5998 : public MPSVoltageRegulator { public: MP5998(sdbusplus::async::context& ctx, uint16_t bus, uint16_t address) : MPSVoltageRegulator(ctx, bus, address) {} sdbusplus::async::task verifyImage(const uint8_t* image, size_t imageSize) final; sdbusplus::async::task updateFirmware(bool force) final; sdbusplus::async::task getCRC(uint32_t* checksum) final; sdbusplus::async::task parseDeviceConfiguration() final; bool forcedUpdateAllowed() final; private: sdbusplus::async::task checkId(PMBusCmd pmBusCmd, uint32_t expected); sdbusplus::async::task unlockPasswordProtection(); sdbusplus::async::task unlockWriteProtection(); sdbusplus::async::task storeMTP(); sdbusplus::async::task waitForMTPComplete(); sdbusplus::async::task sendRestoreMTPCommand(); sdbusplus::async::task restoreMTPAndVerify(); sdbusplus::async::task checkEEPROMFaultAfterRestore(); sdbusplus::async::task verifyCRC(); sdbusplus::async::task programAllRegisters(); }; } // namespace phosphor::software::VR