mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-12-02 13:03:28 +01:00
84f41b2b58
Signed-off-by: Slice <sergey.slice@gmail.com>
131 lines
3.6 KiB
C
131 lines
3.6 KiB
C
/** @file
|
|
Header file for the SmbiosMisc Driver.
|
|
|
|
Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
|
|
|
|
Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>
|
|
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
|
Copyright (c) 2015, Hisilicon Limited. All rights reserved.<BR>
|
|
Copyright (c) 2015, Linaro Limited. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef SMBIOS_MISC_H_
|
|
#define SMBIOS_MISC_H_
|
|
|
|
#include <Protocol/Smbios.h>
|
|
#include <IndustryStandard/SmBios.h>
|
|
|
|
//
|
|
// 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_
|