1 /*
2  * Copyright (C) 2020-2021 Intel Corporation
3  *
4  * SPDX-License-Identifier: MIT
5  *
6  */
7 
8 #pragma once
9 #include "shared/source/helpers/non_copyable_or_moveable.h"
10 
11 #include "sysman/firmware/firmware_imp.h"
12 #include "sysman/firmware/os_firmware.h"
13 #include "sysman/linux/os_sysman_imp.h"
14 
15 namespace L0 {
16 
17 class LinuxFirmwareImp : public OsFirmware, NEO::NonCopyableOrMovableClass {
18   public:
19     bool isFirmwareSupported(void) override;
20     void osGetFwProperties(zes_firmware_properties_t *pProperties) override;
21     ze_result_t osFirmwareFlash(void *pImage, uint32_t size) override;
22     ze_result_t getFirmwareVersion(std::string fwType, zes_firmware_properties_t *pProperties);
23     LinuxFirmwareImp() = default;
24     LinuxFirmwareImp(OsSysman *pOsSysman, const std::string &fwType);
25     ~LinuxFirmwareImp() override = default;
26 
27   protected:
28     FirmwareUtil *pFwInterface = nullptr;
29     SysfsAccess *pSysfsAccess = nullptr;
30     bool isFWInitalized = false;
31     std::string osFwType;
32 };
33 
34 } // namespace L0
35