/** @file Header file for the SmbiosMisc Driver. Based on files under Nt32Pkg/MiscSubClassPlatformDxe/ Copyright (c) 2021, NUVIA Inc. All rights reserved.
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
Copyright (c) 2015, Hisilicon Limited. All rights reserved.
Copyright (c) 2015, Linaro Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef SMBIOS_MISC_H_ #define SMBIOS_MISC_H_ #include #include // // Data table entry update function. // typedef EFI_STATUS (EFIAPI SMBIOS_MISC_DATA_FUNCTION) ( IN VOID *RecordData, IN EFI_SMBIOS_PROTOCOL *Smbios ); // // Data table entry definition. // typedef struct { // // intermediate input data for SMBIOS record // VOID *RecordData; SMBIOS_MISC_DATA_FUNCTION *Function; } SMBIOS_MISC_DATA_TABLE; // // SMBIOS table extern definitions // #define SMBIOS_MISC_TABLE_EXTERNS(NAME1, NAME2, NAME3) \ extern NAME1 NAME2 ## Data; \ extern SMBIOS_MISC_DATA_FUNCTION NAME3 ## Function; // // SMBIOS data table entries // // This is used to define a pair of table structure pointer and functions // in order to iterate through the list of tables, populate them and add // them into the system. #define SMBIOS_MISC_TABLE_ENTRY_DATA_AND_FUNCTION(NAME1, NAME2) \ { \ & NAME1 ## Data, \ NAME2 ## Function \ } // // Global definition macros. // #define SMBIOS_MISC_TABLE_DATA(NAME1, NAME2) \ NAME1 NAME2 ## Data #define SMBIOS_MISC_TABLE_FUNCTION(NAME2) \ EFI_STATUS EFIAPI NAME2 ## Function( \ IN VOID *RecordData, \ IN EFI_SMBIOS_PROTOCOL *Smbios \ ) // // Data Table Array Entries // extern EFI_HII_HANDLE mSmbiosMiscHiiHandle; typedef struct _SMBIOS_TYPE13_BIOS_LANGUAGE_INFORMATION_STRING{ UINT8 *LanguageSignature; EFI_STRING_ID InstallableLanguageLongString; EFI_STRING_ID InstallableLanguageAbbreviateString; } SMBIOS_TYPE13_BIOS_LANGUAGE_INFORMATION_STRING; /** Adds an SMBIOS record. @param Buffer The data for the SMBIOS record. The format of the record is determined by EFI_SMBIOS_TABLE_HEADER.Type. The size of the formatted area is defined by EFI_SMBIOS_TABLE_HEADER.Length and either followed by a double-null (0x0000) or a set of null terminated strings and a null. @param SmbiosHandle A unique handle will be assigned to the SMBIOS record if not NULL. @retval EFI_SUCCESS Record was added. @retval EFI_OUT_OF_RESOURCES Record was not added due to lack of system resources. @retval EFI_ALREADY_STARTED The SmbiosHandle passed in was already in use. **/ EFI_STATUS SmbiosMiscAddRecord ( IN UINT8 *Buffer, IN OUT EFI_SMBIOS_HANDLE *SmbiosHandle OPTIONAL ); /** Get Link Type Handle. @param [in] SmbiosType Get this Type from SMBIOS table @param [out] HandleArray Pointer to handle array which will be freed by caller @param [out] HandleCount Pointer to handle count **/ VOID SmbiosMiscGetLinkTypeHandle( IN UINT8 SmbiosType, OUT UINT16 **HandleArray, OUT UINTN *HandleCount ); // // Data Table Array // extern SMBIOS_MISC_DATA_TABLE mSmbiosMiscDataTable[]; // // Data Table Array Entries // extern UINTN mSmbiosMiscDataTableEntries; extern UINT8 mSmbiosMiscDxeStrings[]; #endif // SMBIOS_MISC_H_