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