1*b602aad5SDaniel Hsu #include "cpld/cpld_interface.hpp" 2*b602aad5SDaniel Hsu #include "cpld/lattice/lattice_base_cpld.hpp" 3*b602aad5SDaniel Hsu 4*b602aad5SDaniel Hsu namespace phosphor::software::cpld 5*b602aad5SDaniel Hsu { 6*b602aad5SDaniel Hsu 7*b602aad5SDaniel Hsu class LatticeCPLDFactory : public CPLDInterface 8*b602aad5SDaniel Hsu { 9*b602aad5SDaniel Hsu public: LatticeCPLDFactory(sdbusplus::async::context & ctx,const std::string & chipName,latticeChip chipEnum,uint16_t bus,uint8_t address)10*b602aad5SDaniel Hsu LatticeCPLDFactory(sdbusplus::async::context& ctx, 11*b602aad5SDaniel Hsu const std::string& chipName, latticeChip chipEnum, 12*b602aad5SDaniel Hsu uint16_t bus, uint8_t address) : 13*b602aad5SDaniel Hsu CPLDInterface(ctx, chipName, bus, address), chipEnum(chipEnum) 14*b602aad5SDaniel Hsu {} 15*b602aad5SDaniel Hsu 16*b602aad5SDaniel Hsu sdbusplus::async::task<bool> updateFirmware( 17*b602aad5SDaniel Hsu bool force, const uint8_t* image, size_t imageSize, 18*b602aad5SDaniel Hsu std::function<bool(int)> progress) final; 19*b602aad5SDaniel Hsu 20*b602aad5SDaniel Hsu sdbusplus::async::task<bool> getVersion(std::string& version) final; 21*b602aad5SDaniel Hsu 22*b602aad5SDaniel Hsu private: 23*b602aad5SDaniel Hsu std::unique_ptr<LatticeBaseCPLD> getLatticeCPLD(); 24*b602aad5SDaniel Hsu latticeChip chipEnum; 25*b602aad5SDaniel Hsu }; 26*b602aad5SDaniel Hsu 27*b602aad5SDaniel Hsu } // namespace phosphor::software::cpld 28