xref: /openbmc/phosphor-bmc-code-mgmt/cpld/lattice/lattice_cpld_factory.hpp (revision b602aad5026847e2a4895598c6b5b7b08a377282)
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