1 #pragma once 2 3 #include "common/include/pmbus.hpp" 4 #include "mps.hpp" 5 6 namespace phosphor::software::VR 7 { 8 9 class MP5998 : public MPSVoltageRegulator 10 { 11 public: MP5998(sdbusplus::async::context & ctx,uint16_t bus,uint16_t address)12 MP5998(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> unlockPasswordProtection(); 26 sdbusplus::async::task<bool> unlockWriteProtection(); 27 sdbusplus::async::task<bool> storeMTP(); 28 sdbusplus::async::task<bool> waitForMTPComplete(); 29 sdbusplus::async::task<bool> sendRestoreMTPCommand(); 30 sdbusplus::async::task<bool> restoreMTPAndVerify(); 31 sdbusplus::async::task<bool> checkEEPROMFaultAfterRestore(); 32 sdbusplus::async::task<bool> verifyCRC(); 33 sdbusplus::async::task<bool> programAllRegisters(); 34 }; 35 36 } // namespace phosphor::software::VR 37