alder_lake_bios/Insyde/InsydeModulePkg/Universal/Dash/DashDxe/Pldm.h

374 lines
8.1 KiB
C

/** @file
Platform Level Data Model
;******************************************************************************
;* Copyright (c) 2012 - 2019, 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 _DASH_PLDM_H_
#define _DASH_PLDM_H_
#include "DashCommon.h"
#include <Library/H2OCpLib.h>
#include <Guid/BootOrderHook.h>
#define PLDM_SIGNATURE SIGNATURE_32('P', 'L', 'D', 'M')
#define MAX_BOOT_COUNT 16
#define TABLE_INIT_SIZE 256
typedef struct _PLDM_CONTEXT PLDM_CONTEXT;
#pragma pack(1)
typedef struct {
UINT32 TransferHandle;
UINT8 Flag;
} PLDM_TRANSFER_HEADER;
typedef struct {
UINT8 *Table;
UINTN Size;
UINTN MaxSize;
} BIOS_TABLE;
typedef struct {
LIST_ENTRY BiosStringList;
LIST_ENTRY BiosAttrList;
LIST_ENTRY BiosAttrValueList;
UINT32 BiosStringChecksum;
UINT32 BiosAttrChecksum;
UINT32 BiosAttrValueChecksum;
} BIOS_TABLE_STRUCTURE;
typedef struct {
UINT8 BootConfigType;
UINT8 OrderedFailThroughMode;
UINT8 MinBootSource;
UINT8 MaxBootSource;
UINT8 NumPossibleBootSource;
UINT16 BootSourceStrHandle[MAX_BOOT_COUNT];
} BOOT_CONFIG_ATTR;
typedef struct {
UINT8 BootConfigType;
UINT8 OrderedFailThroughMode;
UINT8 NumBootSource;
UINT8 BootSourceStrHandleIndex[MAX_BOOT_COUNT];
} BOOT_CONFIG_ATTR_VALUE;
#pragma pack()
struct _PLDM_CONTEXT {
UINT32 Signature;
EFI_PLDM_PROTOCOL Pldm;
EFI_MCTP_PROTOCOL *Mctp;
UINT8 InstanceId;
UINT8 *Buffer;
UINT32 TransferHandle;
UINTN MaxPayloadSize;
BOOLEAN ResponseMode;
UINT8 *SmbiosBuf;
UINT8 *SmbiosBuf64Bit;
UINT16 SmbiosTableLen;
UINT16 SmbiosTableLen64Bit;
UINT32 SmbiosCrc32;
UINT32 Smbios64BitCrc32;
BIOS_TABLE BiosStringTable;
BIOS_TABLE BiosAttrTable;
BIOS_TABLE BiosAttrValueTable;
UINT32 BiosTags[3];
EFI_EVENT SensorReadingCheckEvent;
EFI_EVENT SensorReadingEvent;
BOOLEAN TransactionInProgress;
};
EFI_STATUS
EFIAPI
PldmSetBindingMctp (
IN EFI_PLDM_PROTOCOL *This,
IN EFI_MCTP_PROTOCOL *BindingMctp
);
EFI_MCTP_PROTOCOL *
EFIAPI
PldmGetBindingMctp (
IN EFI_PLDM_PROTOCOL *This
);
EFI_STATUS
EFIAPI
PldmSendMessage (
IN EFI_PLDM_PROTOCOL *This,
IN PLDM_HEADER Header,
IN VOID *Message,
IN UINTN MessageSize
);
EFI_STATUS
EFIAPI
PldmReceiveMessage (
IN EFI_PLDM_PROTOCOL *This,
OUT PLDM_HEADER *Header,
OUT VOID *Message,
OUT UINTN *MessageSize
);
EFI_STATUS
EFIAPI
ProcessSimplePldmMessage (
IN EFI_PLDM_PROTOCOL *This,
IN UINT8 PldmType,
IN UINT8 Command,
IN VOID *RequestMessage,
IN UINTN RequestMessageSize,
IN VOID *ResponseMessage,
IN OUT UINTN *ResponseMessageSize
);
EFI_STATUS
EFIAPI
ProcessPldmMessageWithSplitRequests (
IN EFI_PLDM_PROTOCOL *This,
IN UINT8 PldmType,
IN UINT8 Command,
IN VOID *TransferHeader,
IN UINTN TransferHeaderSize,
IN VOID *RequestMessage,
IN UINTN RequestMessageSize
);
EFI_STATUS
EFIAPI
ProcessPldmMessageWithSplitResponses (
IN EFI_PLDM_PROTOCOL *This,
IN UINT8 PldmType,
IN UINT8 Command,
IN VOID *TransferHeader,
IN UINTN TransferHeaderSize,
OUT VOID *ResponseMessage,
IN OUT UINTN *ResponseMessageSize
);
EFI_STATUS
EFIAPI
PldmSetSmbiosStructureTableMetaData (
EFI_PLDM_PROTOCOL *This
);
EFI_STATUS
EFIAPI
PldmGetSmbiosStructureTableMetaData (
EFI_PLDM_PROTOCOL *This,
PLDM_SMBIOS_STRUCTURE_TABLE_METADATA *PldmResponse
);
EFI_STATUS
EFIAPI
PldmGetSmbiosStructureTable (
IN EFI_PLDM_PROTOCOL *This,
OUT UINT8 *SmbiosBuf,
IN OUT UINTN *Size
);
EFI_STATUS
EFIAPI
PldmSetSmbiosStructureTable(
EFI_PLDM_PROTOCOL *This
);
EFI_STATUS
EFIAPI
PldmBiosSetDateTime(
IN EFI_PLDM_PROTOCOL *This
);
EFI_STATUS
EFIAPI
PldmGetBiosTable (
IN EFI_PLDM_PROTOCOL *This,
IN UINT8 TableType,
OUT VOID *Table,
OUT UINTN *TableSize
);
EFI_STATUS
EFIAPI
PldmSetBiosTable (
IN EFI_PLDM_PROTOCOL *This,
IN UINT8 TableType,
IN VOID *Table,
IN UINTN TableSize
);
EFI_STATUS
EFIAPI
PldmGetBiosTableTags (
IN EFI_PLDM_PROTOCOL *This,
IN UINT8 NumberOfTables,
IN UINT8 *TableTypes,
OUT UINT32 *TableTags
);
EFI_STATUS
EFIAPI
PldmSetBiosTableTags (
IN EFI_PLDM_PROTOCOL *This,
IN UINT8 NumberOfTables,
IN UINT8 *TableTypes,
IN UINT32 *TableTags
);
EFI_STATUS
EFIAPI
PldmGetBiosAttrCurrentValueByHandle (
IN EFI_PLDM_PROTOCOL *This,
IN UINT16 AttrHandle,
OUT VOID *AttrData,
OUT UINTN *AttrDataSize
);
EFI_STATUS
EFIAPI
PldmSetBiosAttrCurrentValue (
IN EFI_PLDM_PROTOCOL *This,
IN VOID *AttrData,
IN UINTN AttrDataSize
);
EFI_STATUS
EFIAPI
PldmGetBiosAttrCurrentValueByType (
IN EFI_PLDM_PROTOCOL *This,
IN UINT8 AttrType,
OUT VOID *AttrData,
OUT UINTN *AttrDataSize
);
EFI_STATUS
EFIAPI
PldmGetBiosAttrPendingValueByHandle (
IN EFI_PLDM_PROTOCOL *This,
IN UINT16 AttrHandle,
OUT VOID *AttrData,
OUT UINTN *AttrDataSize
);
EFI_STATUS
EFIAPI
PldmGetBiosAttrPendingValueByType (
IN EFI_PLDM_PROTOCOL *This,
IN UINT8 AttrType,
OUT VOID *AttrData,
OUT UINTN *AttrDataSize
);
EFI_STATUS
EFIAPI
PldmAcceptBiosAttrPendingValues (
IN EFI_PLDM_PROTOCOL *This,
IN UINT16 NumOfHandles,
IN UINT16 *AttrHandles
);
EFI_STATUS
EFIAPI
PldmPlatformEventMessage (
IN EFI_PLDM_PROTOCOL *This,
IN UINT8 FormatVersion,
IN UINT8 Tid,
IN UINT8 EventClass,
IN VOID *EventData,
IN UINTN EventDataLen,
OUT UINT8 *ReturnStatus
);
EFI_STATUS
InitBiosTables (
PLDM_CONTEXT *PldmContext
);
EFI_STATUS
EFIAPI
ResetBiosTables (
EFI_PLDM_PROTOCOL *This
);
VOID
EFIAPI
AppendBiosString (
EFI_PLDM_PROTOCOL *This,
UINT16 StrHandle,
UINTN StrLength,
CHAR8 *String
);
VOID
EFIAPI
AppendBiosAttr (
EFI_PLDM_PROTOCOL *This,
UINT16 AttrHandle,
UINT8 AttrType,
UINT16 AttrNameHandle,
UINTN AttrDataSize,
VOID *AttrData
);
VOID
EFIAPI
AppendBiosAttrValue (
EFI_PLDM_PROTOCOL *This,
UINT16 AttrHandle,
UINT8 AttrType,
UINTN AttrValueDataSize,
VOID *AttrValueData
);
EFI_STATUS
EFIAPI
PushBiosTables (
EFI_PLDM_PROTOCOL *Pldm
);
VOID
EFIAPI
PushManagementDataToMC(
IN EFI_EVENT Event,
IN VOID *Context
);
VOID
EFIAPI
SyncBootOrderDataFromMC (
IN EFI_EVENT Event,
IN H2O_CP_HANDLE Handle
);
EFI_STATUS
EFIAPI
RegisterSensorReadingFunction (
EFI_PLDM_PROTOCOL *This,
EFI_EVENT_NOTIFY SensorReadingFun
);
#define PLDM_CONTEXT_FROM_THIS(a) CR(a, PLDM_CONTEXT, Pldm, PLDM_SIGNATURE)
#endif