#pragma once #include "common/include/pmbus.hpp" #include "mps.hpp" namespace phosphor::software::VR { class MP297X : public MPSVoltageRegulator { public: MP297X(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 isPasswordUnlock(); sdbusplus::async::task unlockWriteProtect(); sdbusplus::async::task storeDataIntoMTP(); sdbusplus::async::task enableMTPPageWriteRead(); sdbusplus::async::task enableMultiConfigCRC(); sdbusplus::async::task checkMTPCRC(); sdbusplus::async::task programPageRegisters( MPSPage page, const std::map>& groupedData); }; } // namespace phosphor::software::VR