1*b602aad5SDaniel Hsu #include "lattice_base_cpld.hpp" 2*b602aad5SDaniel Hsu 3*b602aad5SDaniel Hsu namespace phosphor::software::cpld 4*b602aad5SDaniel Hsu { 5*b602aad5SDaniel Hsu 6*b602aad5SDaniel Hsu class LatticeXO3CPLD : public LatticeBaseCPLD 7*b602aad5SDaniel Hsu { 8*b602aad5SDaniel Hsu 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)9*b602aad5SDaniel Hsu LatticeXO3CPLD(sdbusplus::async::context& ctx, const uint16_t bus, 10*b602aad5SDaniel Hsu const uint8_t address, const std::string& chip, 11*b602aad5SDaniel Hsu const std::string& target, const bool debugMode) : 12*b602aad5SDaniel Hsu LatticeBaseCPLD(ctx, bus, address, chip, target, debugMode) 13*b602aad5SDaniel Hsu {} 14*b602aad5SDaniel Hsu ~LatticeXO3CPLD() override = default; 15*b602aad5SDaniel Hsu LatticeXO3CPLD(const LatticeXO3CPLD&) = delete; 16*b602aad5SDaniel Hsu LatticeXO3CPLD& operator=(const LatticeXO3CPLD&) = delete; 17*b602aad5SDaniel Hsu LatticeXO3CPLD(LatticeXO3CPLD&&) noexcept = delete; 18*b602aad5SDaniel Hsu LatticeXO3CPLD& operator=(LatticeXO3CPLD&&) noexcept = delete; 19*b602aad5SDaniel Hsu 20*b602aad5SDaniel Hsu protected: 21*b602aad5SDaniel Hsu sdbusplus::async::task<bool> prepareUpdate(const uint8_t* image, 22*b602aad5SDaniel Hsu size_t imageSize) override; 23*b602aad5SDaniel Hsu sdbusplus::async::task<bool> doUpdate() override; 24*b602aad5SDaniel Hsu sdbusplus::async::task<bool> finishUpdate() override; 25*b602aad5SDaniel Hsu 26*b602aad5SDaniel Hsu private: 27*b602aad5SDaniel Hsu sdbusplus::async::task<bool> readUserCode(uint32_t& userCode) override; 28*b602aad5SDaniel Hsu sdbusplus::async::task<bool> readDeviceId(); 29*b602aad5SDaniel Hsu sdbusplus::async::task<bool> eraseFlash(); 30*b602aad5SDaniel Hsu sdbusplus::async::task<bool> writeProgramPage(); 31*b602aad5SDaniel Hsu sdbusplus::async::task<bool> programUserCode(); 32*b602aad5SDaniel Hsu sdbusplus::async::task<bool> programSinglePage( 33*b602aad5SDaniel Hsu uint16_t pageOffset, std::span<const uint8_t> pageData); 34*b602aad5SDaniel Hsu sdbusplus::async::task<bool> verifySinglePage( 35*b602aad5SDaniel Hsu uint16_t pageOffset, std::span<const uint8_t> pageData); 36*b602aad5SDaniel Hsu }; 37*b602aad5SDaniel Hsu 38*b602aad5SDaniel Hsu } // namespace phosphor::software::cpld 39