1 /* 2 * Copyright (C) 2020-2021 Intel Corporation 3 * 4 * SPDX-License-Identifier: MIT 5 * 6 */ 7 8 #pragma once 9 #include "level_zero/core/test/unit_tests/mock.h" 10 #include "level_zero/tools/test/unit_tests/sources/sysman/windows/mock_kmd_sys_manager.h" 11 12 #include "sysman/fan/fan_imp.h" 13 14 namespace L0 { 15 namespace ult { 16 17 class FanKmdSysManager : public Mock<MockKmdSysManager> {}; 18 19 template <> 20 struct Mock<FanKmdSysManager> : public FanKmdSysManager { 21 22 uint32_t mockFanMaxPoints = 10; 23 uint32_t mockFanCurrentPulses = 523436; 24 uint32_t mockFanCurrentFanPoints = 0; 25 26 void getFanProperty(KmdSysman::GfxSysmanReqHeaderIn *pRequest, KmdSysman::GfxSysmanReqHeaderOut *pResponse) override { 27 uint8_t *pBuffer = reinterpret_cast<uint8_t *>(pResponse); 28 pBuffer += sizeof(KmdSysman::GfxSysmanReqHeaderOut); 29 30 switch (pRequest->inRequestId) { 31 case KmdSysman::Requests::Fans::MaxFanControlPointsSupported: { 32 uint32_t *pValue = reinterpret_cast<uint32_t *>(pBuffer); 33 *pValue = mockFanMaxPoints; 34 pResponse->outReturnCode = KmdSysman::KmdSysmanSuccess; 35 pResponse->outDataSize = sizeof(uint32_t); 36 } break; 37 case KmdSysman::Requests::Fans::CurrentFanSpeed: { 38 if (fanSupported) { 39 uint32_t *pValue = reinterpret_cast<uint32_t *>(pBuffer); 40 *pValue = mockFanCurrentPulses; 41 pResponse->outReturnCode = KmdSysman::KmdSysmanSuccess; 42 pResponse->outDataSize = sizeof(uint32_t); 43 } else { 44 pResponse->outDataSize = 0; 45 pResponse->outReturnCode = KmdSysman::KmdSysmanFail; 46 } 47 } break; 48 default: { 49 pResponse->outDataSize = 0; 50 pResponse->outReturnCode = KmdSysman::KmdSysmanFail; 51 } break; 52 } 53 } 54 55 void setFanProperty(KmdSysman::GfxSysmanReqHeaderIn *pRequest, KmdSysman::GfxSysmanReqHeaderOut *pResponse) override { 56 uint8_t *pBuffer = reinterpret_cast<uint8_t *>(pRequest); 57 pBuffer += sizeof(KmdSysman::GfxSysmanReqHeaderIn); 58 59 switch (pRequest->inRequestId) { 60 case KmdSysman::Requests::Fans::CurrentNumOfControlPoints: { 61 uint32_t *pValue = reinterpret_cast<uint32_t *>(pBuffer); 62 mockFanCurrentFanPoints = *pValue; 63 pResponse->outDataSize = 0; 64 pResponse->outReturnCode = KmdSysman::KmdSysmanSuccess; 65 } break; 66 default: { 67 pResponse->outDataSize = 0; 68 pResponse->outReturnCode = KmdSysman::KmdSysmanFail; 69 } break; 70 } 71 } 72 73 Mock() = default; 74 ~Mock() = default; 75 }; 76 77 } // namespace ult 78 } // namespace L0 79