/* * Copyright (C) 2020-2021 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once #include #include #include struct _zes_firmware_handle_t { virtual ~_zes_firmware_handle_t() = default; }; namespace L0 { struct OsSysman; class Firmware : _zes_firmware_handle_t { public: virtual ~Firmware() {} virtual ze_result_t firmwareGetProperties(zes_firmware_properties_t *pProperties) = 0; virtual ze_result_t firmwareFlash(void *pImage, uint32_t size) = 0; inline zes_firmware_handle_t toHandle() { return this; } static Firmware *fromHandle(zes_firmware_handle_t handle) { return static_cast(handle); } bool isFirmwareEnabled = false; }; struct FirmwareHandleContext { FirmwareHandleContext(OsSysman *pOsSysman) : pOsSysman(pOsSysman){}; ~FirmwareHandleContext(); void init(); ze_result_t firmwareGet(uint32_t *pCount, zes_firmware_handle_t *phFirmware); OsSysman *pOsSysman = nullptr; std::vector handleList = {}; private: void createHandle(const std::string &fwType); }; } // namespace L0