1*dcf4b607SKevin Tung #pragma once 2*dcf4b607SKevin Tung 3*dcf4b607SKevin Tung #include "common/include/pmbus.hpp" 4*dcf4b607SKevin Tung #include "mps.hpp" 5*dcf4b607SKevin Tung 6*dcf4b607SKevin Tung namespace phosphor::software::VR 7*dcf4b607SKevin Tung { 8*dcf4b607SKevin Tung 9*dcf4b607SKevin Tung class MP2X6XX : public MPSVoltageRegulator 10*dcf4b607SKevin Tung { 11*dcf4b607SKevin Tung public: MP2X6XX(sdbusplus::async::context & ctx,uint16_t bus,uint16_t address)12*dcf4b607SKevin Tung MP2X6XX(sdbusplus::async::context& ctx, uint16_t bus, uint16_t address) : 13*dcf4b607SKevin Tung MPSVoltageRegulator(ctx, bus, address) 14*dcf4b607SKevin Tung {} 15*dcf4b607SKevin Tung 16*dcf4b607SKevin Tung sdbusplus::async::task<bool> verifyImage(const uint8_t* image, 17*dcf4b607SKevin Tung size_t imageSize) final; 18*dcf4b607SKevin Tung sdbusplus::async::task<bool> updateFirmware(bool force) final; 19*dcf4b607SKevin Tung sdbusplus::async::task<bool> getCRC(uint32_t* checksum) final; 20*dcf4b607SKevin Tung sdbusplus::async::task<bool> parseDeviceConfiguration() final; 21*dcf4b607SKevin Tung bool forcedUpdateAllowed() final; 22*dcf4b607SKevin Tung 23*dcf4b607SKevin Tung private: 24*dcf4b607SKevin Tung sdbusplus::async::task<bool> checkId(PMBusCmd pmBusCmd, uint32_t expected); 25*dcf4b607SKevin Tung sdbusplus::async::task<bool> unlockWriteProtect(); 26*dcf4b607SKevin Tung sdbusplus::async::task<bool> storeUserCode(); 27*dcf4b607SKevin Tung sdbusplus::async::task<bool> checkMTPCRC(); 28*dcf4b607SKevin Tung sdbusplus::async::task<bool> selectConfig(uint8_t config); 29*dcf4b607SKevin Tung sdbusplus::async::task<bool> configAllRegisters(); 30*dcf4b607SKevin Tung sdbusplus::async::task<bool> programConfigData( 31*dcf4b607SKevin Tung const std::vector<MPSData>& gdata); 32*dcf4b607SKevin Tung }; 33*dcf4b607SKevin Tung 34*dcf4b607SKevin Tung } // namespace phosphor::software::VR 35