#include "lattice_base_cpld.hpp" namespace phosphor::software::cpld { class LatticeXO3CPLD : public LatticeBaseCPLD { public: LatticeXO3CPLD(sdbusplus::async::context& ctx, const uint16_t bus, const uint8_t address, const std::string& chip, const std::string& target, const bool debugMode) : LatticeBaseCPLD(ctx, bus, address, chip, target, debugMode) {} ~LatticeXO3CPLD() override = default; LatticeXO3CPLD(const LatticeXO3CPLD&) = delete; LatticeXO3CPLD& operator=(const LatticeXO3CPLD&) = delete; LatticeXO3CPLD(LatticeXO3CPLD&&) noexcept = delete; LatticeXO3CPLD& operator=(LatticeXO3CPLD&&) noexcept = delete; protected: sdbusplus::async::task prepareUpdate(const uint8_t* image, size_t imageSize) override; sdbusplus::async::task doUpdate() override; sdbusplus::async::task finishUpdate() override; private: sdbusplus::async::task readUserCode(uint32_t& userCode) override; sdbusplus::async::task readDeviceId(); sdbusplus::async::task eraseFlash(); sdbusplus::async::task writeProgramPage(); sdbusplus::async::task programUserCode(); sdbusplus::async::task programSinglePage( uint16_t pageOffset, std::span pageData); sdbusplus::async::task verifySinglePage( uint16_t pageOffset, std::span pageData); }; } // namespace phosphor::software::cpld