alder_lake_bios/Insyde/InsydeCrPkg/Library/CrDeviceVariableLib/InternalCrDeviceVariableLib.h

206 lines
4.5 KiB
C

/** @file
The header file of CrDeviceVariableLib.c
;******************************************************************************
;* Copyright (c) 2016, Insyde Software Corp. All Rights Reserved.
;*
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
;* transmit, broadcast, present, recite, release, license or otherwise exploit
;* any part of this publication in any form, by any means, without the prior
;* written permission of Insyde Software Corporation.
;*
;******************************************************************************
*/
#ifndef _CR_DEVICE_VARIABLE_H_
#define _CR_DEVICE_VARIABLE_H_
#include <Uefi.h>
#include <Library/BaseMemoryLib.h>
#include <Library/DebugLib.h>
#include <Library/DevicePathLib.h>
#include <Library/UefiLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/PcdLib.h>
#include <Library/VariableLib.h>
#include <Library/CrDeviceVariableLib.h>
#include <Guid/CrConfigHii.h>
#include <Guid/CrTerminal.h>
#define CR_DEVICE_INFO_HEADER(_Exist, _Global, _Enable ) \
((UINT8)( (((_Enable) & 0x01) << 2) | \
(((_Global) & 0x01) << 1) | \
((_Exist) & 0x01) ))
#define NULL_GUID \
{ \
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 \
}
#define FixedPcdGetPtrSize(TokenName) (UINTN)_PCD_PATCHABLE_##TokenName##_SIZE
extern EFI_GUID gH2OCrConfigurationGuid;
//
// === Private Struct ===
//
#pragma pack(1)
typedef struct _CR_DEVICE_PCD {
UINT8 PortEnable;
CONST CHAR16 *DevName;
EFI_DEVICE_PATH *DevPath;
//
// other infomation not in PCDs
// only for parsing PCD
//
BOOLEAN Exist;
UINT8 ItemType;
BOOLEAN UseGlobal;
} CR_DEVICE_PCD;
typedef struct _CR_DEVICE_VAR {
UINT8 Exist :1;
UINT8 UseGlobal :1;
UINT8 PortEnable :1;
UINT8 SetInPCD :1;
UINT8 Reserve :4;
UINT8 ItmeType;
CHAR16 DevName; //Dynamic Length
EFI_DEVICE_PATH DevPath; //Dynamic Length
} CR_DEVICE_VAR;
#pragma pack()
typedef enum _DPATH_UPDATE_TYPE {
UPDATE_NONE,
UPDATE_ADD,
UPDATE_DELETE
} DPATH_UPDATE;
CHAR16*
CrDevVariableName (
IN UINTN Index
);
EFI_STATUS
CreateDeviceVariableFromPcd (
IN CR_DEVICE_PCD *CrDevice,
IN UINTN DeviceCount,
IN BOOLEAN LoadDefault
);
UINTN
CalculateCrDeviceVarSize (
IN CONST CHAR16 *NameStr,
IN EFI_DEVICE_PATH *DPath,
OUT UINTN *DpathOffse
);
EFI_STATUS
CalculateNewVariableSize (
IN OUT CR_DEVICE_VAR **CrDeviceVar,
IN OUT UINTN *VarSize,
IN UINT8 NewFlowcontrol,
OUT DPATH_UPDATE *UpdateType
);
EFI_STATUS
FreeDevicePathPool (
IN CR_DEVICE_PCD *CrDevice,
IN UINTN DeviceCount
);
VOID*
GetNextColumnPtr (
IN CONST CHAR16* StrPtr
);
EFI_DEVICE_PATH*
GetDevicePathFromVariable (
CR_DEVICE_VAR *CrDeviceVar
);
CHAR16*
Int2Str (
IN UINTN Number,
IN CHAR16 *Str
);
EFI_STATUS
ParsingCrDevicePcdValue (
OUT CR_DEVICE_PCD **CrDevice,
OUT UINTN *DeviceCount
);
EFI_STATUS
ParsingDevicePath2Attribute (
IN EFI_DEVICE_PATH *DevPath,
OUT CR_DEVICE_ATTRIBUTES *Attribute
);
EFI_STATUS
ParsingAttribute2DevicePath (
IN OUT EFI_DEVICE_PATH *DevPath,
IN CR_DEVICE_ATTRIBUTES *Attribute,
IN DPATH_UPDATE UpdateType
);
VOID*
PrepareEnoughCrDeviceVariable (
IN VOID *CrDeviceVar,
IN UINTN NewSize,
IN OUT UINTN *BufferSize
);
VOID
UpdateTemplateDeviceNode (
VOID
);
EFI_DEVICE_PATH*
VerifyMediaFileNode (
IN EFI_DEVICE_PATH *FullDevPath,
OUT CR_DEVICE_PCD *PcdDevice
);
EFI_DEVICE_PATH*
VerifyUartNode (
IN EFI_DEVICE_PATH *FullDevPath,
OUT CR_DEVICE_PCD *PcdDevice
);
EFI_DEVICE_PATH*
VerifyMessagingDeviceNode (
IN EFI_DEVICE_PATH *FullDevPath,
OUT CR_DEVICE_PCD *PcdDevice
);
BOOLEAN
CheckCrDeviceVariableExist (
IN CHAR16 *VarName
);
EFI_DEVICE_PATH_PROTOCOL *
AppendMultiDevicePathNode (
EFI_DEVICE_PATH_PROTOCOL *SrcDevicePath,
UINTN NumOfArgs,
...
);
EFI_DEVICE_PATH_PROTOCOL *
LocateDevicePathNode(
IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,
IN UINT8 DevPathType,
IN UINT8 DevPathSubType
);
#endif