1 #pragma once 2 3 #include "common/include/pmbus.hpp" 4 #include "mps.hpp" 5 6 namespace phosphor::software::VR 7 { 8 9 class MP2X6XX : public MPSVoltageRegulator 10 { 11 public: MP2X6XX(sdbusplus::async::context & ctx,uint16_t bus,uint16_t address)12 MP2X6XX(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> unlockWriteProtect(); 26 sdbusplus::async::task<bool> storeUserCode(); 27 sdbusplus::async::task<bool> checkMTPCRC(); 28 sdbusplus::async::task<bool> selectConfig(uint8_t config); 29 sdbusplus::async::task<bool> configAllRegisters(); 30 sdbusplus::async::task<bool> programConfigData( 31 const std::vector<MPSData>& gdata); 32 }; 33 34 } // namespace phosphor::software::VR 35