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