#include "lattice_base_cpld.hpp" namespace phosphor::software::cpld { class LatticeXO5CPLD : public LatticeBaseCPLD { public: LatticeXO5CPLD(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) {} ~LatticeXO5CPLD() override = default; LatticeXO5CPLD(const LatticeXO5CPLD&) = delete; LatticeXO5CPLD& operator=(const LatticeXO5CPLD&) = delete; LatticeXO5CPLD(LatticeXO5CPLD&&) noexcept = delete; LatticeXO5CPLD& operator=(LatticeXO5CPLD&&) 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; sdbusplus::async::task readUserCode(uint32_t& userCode) override; private: sdbusplus::async::task waitUntilReady( std::chrono::milliseconds timeout); sdbusplus::async::task eraseCfg(); sdbusplus::async::task programCfg(); sdbusplus::async::task programPage(uint8_t block, uint8_t page, const std::vector& data); sdbusplus::async::task verifyCfg(); sdbusplus::async::task readPage(uint8_t block, uint8_t page, std::vector& data); }; } // namespace phosphor::software::cpld