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