/** @file IPMI FRU Driver. Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include #include #include #include EFI_STATUS EFIAPI InitializeFru ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) /*++ Routine Description: Initialize SM Redirection Fru Layer Arguments: ImageHandle - ImageHandle of the loaded driver SystemTable - Pointer to the System Table Returns: EFI_STATUS --*/ { EFI_STATUS Status; IPMI_GET_DEVICE_ID_RESPONSE ControllerInfo; IPMI_GET_FRU_INVENTORY_AREA_INFO_REQUEST GetFruInventoryAreaInfoRequest; IPMI_GET_FRU_INVENTORY_AREA_INFO_RESPONSE GetFruInventoryAreaInfoResponse; // // Get all the SDR Records from BMC and retrieve the Record ID from the structure for future use. // Status = IpmiGetDeviceId (&ControllerInfo); if (EFI_ERROR (Status)) { DEBUG((DEBUG_ERROR, "!!! IpmiFru IpmiGetDeviceId Status=%x\n", Status)); return Status; } DEBUG((DEBUG_ERROR, "!!! IpmiFru FruInventorySupport %x\n", ControllerInfo.DeviceSupport.Bits.FruInventorySupport)); if (ControllerInfo.DeviceSupport.Bits.FruInventorySupport) { GetFruInventoryAreaInfoRequest.DeviceId = 0; Status = IpmiGetFruInventoryAreaInfo (&GetFruInventoryAreaInfoRequest, &GetFruInventoryAreaInfoResponse); if (EFI_ERROR (Status)) { DEBUG((DEBUG_ERROR, "!!! IpmiFru IpmiGetFruInventoryAreaInfo Status=%x\n", Status)); return Status; } DEBUG((DEBUG_ERROR, "!!! IpmiFru InventoryAreaSize=%x\n", GetFruInventoryAreaInfoResponse.InventoryAreaSize)); } return EFI_SUCCESS; }