#pragma once #include "common/include/pmbus.hpp" #include "mps.hpp" namespace phosphor::software::VR { class MP2X6XX : public MPSVoltageRegulator { public: MP2X6XX(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 unlockWriteProtect(); sdbusplus::async::task storeUserCode(); sdbusplus::async::task checkMTPCRC(); sdbusplus::async::task selectConfig(uint8_t config); sdbusplus::async::task configAllRegisters(); sdbusplus::async::task programConfigData( const std::vector& gdata); }; } // namespace phosphor::software::VR