blob: c30ca475706d47abd8ed76a7a5a7785431dddf4a [file] [log] [blame]
FreddieJheng782d6ee2025-08-19 18:53:15 +08001#pragma once
2
3#include "common/include/pmbus.hpp"
4#include "mps.hpp"
5
6namespace phosphor::software::VR
7{
8
9class MP5998 : public MPSVoltageRegulator
10{
11 public:
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