/** @file
|
This driver parses the mSmbiosMiscDataTable structure and reports
|
any generated data using SMBIOS protocol.
|
|
Copyright (c) 2013-2015 Intel Corporation.
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
**/
|
|
|
#include "CommonHeader.h"
|
|
#include "SmbiosMisc.h"
|
|
|
extern UINT8 SmbiosMiscStrings[];
|
EFI_HANDLE mImageHandle;
|
|
EFI_HII_HANDLE mHiiHandle;
|
|
|
|
/**
|
Standard EFI driver point. This driver parses the mSmbiosMiscDataTable
|
structure and reports any generated data using SMBIOS protocol.
|
|
@param ImageHandle Handle for the image of this driver
|
@param SystemTable Pointer to the EFI System Table
|
|
@retval EFI_SUCCESS The data was successfully stored.
|
|
**/
|
EFI_STATUS
|
EFIAPI
|
SmbiosMiscEntryPoint(
|
IN EFI_HANDLE ImageHandle,
|
IN EFI_SYSTEM_TABLE *SystemTable
|
)
|
{
|
UINTN Index;
|
EFI_STATUS EfiStatus;
|
EFI_SMBIOS_PROTOCOL *Smbios;
|
|
|
mImageHandle = ImageHandle;
|
|
EfiStatus = gBS->LocateProtocol(&gEfiSmbiosProtocolGuid, NULL, (VOID**)&Smbios);
|
|
if (EFI_ERROR(EfiStatus)) {
|
DEBUG((EFI_D_ERROR, "Could not locate SMBIOS protocol. %r\n", EfiStatus));
|
return EfiStatus;
|
}
|
|
mHiiHandle = HiiAddPackages (
|
&gEfiCallerIdGuid,
|
mImageHandle,
|
SmbiosMiscStrings,
|
NULL
|
);
|
ASSERT (mHiiHandle != NULL);
|
|
for (Index = 0; Index < mSmbiosMiscDataTableEntries; ++Index) {
|
//
|
// If the entry have a function pointer, just log the data.
|
//
|
if (mSmbiosMiscDataTable[Index].Function != NULL) {
|
EfiStatus = (*mSmbiosMiscDataTable[Index].Function)(
|
mSmbiosMiscDataTable[Index].RecordData,
|
Smbios
|
);
|
|
if (EFI_ERROR(EfiStatus)) {
|
DEBUG((EFI_D_ERROR, "Misc smbios store error. Index=%d, ReturnStatus=%r\n", Index, EfiStatus));
|
return EfiStatus;
|
}
|
}
|
}
|
|
return EfiStatus;
|
}
|