1*782d6eedSFreddieJheng #pragma once 2*782d6eedSFreddieJheng 3*782d6eedSFreddieJheng #include "common/include/pmbus.hpp" 4*782d6eedSFreddieJheng #include "mps.hpp" 5*782d6eedSFreddieJheng 6*782d6eedSFreddieJheng namespace phosphor::software::VR 7*782d6eedSFreddieJheng { 8*782d6eedSFreddieJheng 9*782d6eedSFreddieJheng class MP5998 : public MPSVoltageRegulator 10*782d6eedSFreddieJheng { 11*782d6eedSFreddieJheng public: MP5998(sdbusplus::async::context & ctx,uint16_t bus,uint16_t address)12*782d6eedSFreddieJheng MP5998(sdbusplus::async::context& ctx, uint16_t bus, uint16_t address) : 13*782d6eedSFreddieJheng MPSVoltageRegulator(ctx, bus, address) 14*782d6eedSFreddieJheng {} 15*782d6eedSFreddieJheng 16*782d6eedSFreddieJheng sdbusplus::async::task<bool> verifyImage(const uint8_t* image, 17*782d6eedSFreddieJheng size_t imageSize) final; 18*782d6eedSFreddieJheng sdbusplus::async::task<bool> updateFirmware(bool force) final; 19*782d6eedSFreddieJheng sdbusplus::async::task<bool> getCRC(uint32_t* checksum) final; 20*782d6eedSFreddieJheng sdbusplus::async::task<bool> parseDeviceConfiguration() final; 21*782d6eedSFreddieJheng bool forcedUpdateAllowed() final; 22*782d6eedSFreddieJheng 23*782d6eedSFreddieJheng private: 24*782d6eedSFreddieJheng sdbusplus::async::task<bool> checkId(PMBusCmd pmBusCmd, uint32_t expected); 25*782d6eedSFreddieJheng sdbusplus::async::task<bool> unlockPasswordProtection(); 26*782d6eedSFreddieJheng sdbusplus::async::task<bool> unlockWriteProtection(); 27*782d6eedSFreddieJheng sdbusplus::async::task<bool> storeMTP(); 28*782d6eedSFreddieJheng sdbusplus::async::task<bool> waitForMTPComplete(); 29*782d6eedSFreddieJheng sdbusplus::async::task<bool> sendRestoreMTPCommand(); 30*782d6eedSFreddieJheng sdbusplus::async::task<bool> restoreMTPAndVerify(); 31*782d6eedSFreddieJheng sdbusplus::async::task<bool> checkEEPROMFaultAfterRestore(); 32*782d6eedSFreddieJheng sdbusplus::async::task<bool> verifyCRC(); 33*782d6eedSFreddieJheng sdbusplus::async::task<bool> programAllRegisters(); 34*782d6eedSFreddieJheng }; 35*782d6eedSFreddieJheng 36*782d6eedSFreddieJheng } // namespace phosphor::software::VR 37