#pragma once #include "common/include/pmbus.hpp" #include "mps.hpp" namespace phosphor::software::VR { enum class MP994XCmd : uint8_t; class MP994X : public MPSVoltageRegulator { public: MP994X(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(MP994XCmd idCmd, uint32_t expected); sdbusplus::async::task unlockWriteProtect(); sdbusplus::async::task disableStoreFaultTriggering(); sdbusplus::async::task setMultiConfigAddress(uint8_t config); sdbusplus::async::task programConfigData( const std::vector& gdata); sdbusplus::async::task programAllRegisters(); sdbusplus::async::task storeDataIntoMTP(); sdbusplus::async::task restoreDataFromNVM(); sdbusplus::async::task checkMTPCRC(); }; } // namespace phosphor::software::VR