/** @file The definitions of DMTF Platform Level Data Model (PLDM) SMBIOS Transfer Specification. Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent @par Revision Reference: DMTF Platform Level Data Model (PLDM) SMBIOS Transfer Specification Version 1.0.1 https://www.dmtf.org/sites/default/files/standards/documents/DSP0246_1.0.1.pdf **/ #ifndef PLDM_SMBIOS_TRANSFER_H_ #define PLDM_SMBIOS_TRANSFER_H_ #include #pragma pack(1) /// /// Smbios-related definitions from PLDM for SMBIOS Transfer /// Specification (DMTF DSP0246) /// #define PLDM_GET_SMBIOS_STRUCTURE_TABLE_METADATA_COMMAND_CODE 0x01 #define PLDM_SET_SMBIOS_STRUCTURE_TABLE_METADATA_COMMAND_CODE 0x02 #define PLDM_GET_SMBIOS_STRUCTURE_TABLE_COMMAND_CODE 0x03 #define PLDM_SET_SMBIOS_STRUCTURE_TABLE_COMMAND_CODE 0x04 #define PLDM_GET_SMBIOS_STRUCTURE_BY_TYPE_COMMAND_CODE 0x05 #define PLDM_GET_SMBIOS_STRUCTURE_BY_HANDLE_COMMAND_CODE 0x06 /// /// PLDM SMBIOS transfer command specific completion code. /// #define PLDM_COMPLETION_CODE_INVALID_DATA_TRANSFER_HANDLE 0x80 #define PLDM_COMPLETION_CODE_INVALID_TRANSFER_OPERATION_FLAG 0x81 #define PLDM_COMPLETION_CODE_INVALID_TRANSFER_FLAG 0x82 #define PLDM_COMPLETION_CODE_NO_SMBIOS_STRUCTURE_TABLE_METADATA 0x83 #define PLDM_COMPLETION_CODE_INVALID_DATA_INTEGRITY_CHECK 0x84 #define PLDM_COMPLETION_CODE_SMBIOS_STRUCTURE_TABLE_UNAVAILABLE 0x85 /// /// Get SMBIOS Structure Table Metadata Response. /// typedef struct { UINT8 SmbiosMajorVersion; UINT8 SmbiosMinorVersion; UINT16 MaximumStructureSize; UINT16 SmbiosStructureTableLength; UINT16 NumberOfSmbiosStructures; UINT32 SmbiosStructureTableIntegrityChecksum; } PLDM_SMBIOS_STRUCTURE_TABLE_METADATA; typedef struct { PLDM_RESPONSE_HEADER ResponseHeader; PLDM_SMBIOS_STRUCTURE_TABLE_METADATA SmbiosStructureTableMetadata; } PLDM_GET_SMBIOS_STRUCTURE_TABLE_METADATA_RESPONSE_FORMAT; /// /// Set SMBIOS Structure Table Metadata Request. /// typedef struct { PLDM_REQUEST_HEADER RequestHeader; PLDM_SMBIOS_STRUCTURE_TABLE_METADATA SmbiosStructureTableMetadata; } PLDM_SET_SMBIOS_STRUCTURE_TABLE_METADATA_REQUEST_FORMAT; /// /// Set SMBIOS Structure Table Metadata Response. /// typedef struct { PLDM_RESPONSE_HEADER ResponseHeader; } PLDM_SET_SMBIOS_STRUCTURE_TABLE_METADATA_RESPONSE_FORMAT; /// /// Get SMBIOS Structure Table Request. /// typedef struct { UINT32 DataTransferHandle; UINT8 TransferOperationFlag; } PLDM_GET_SMBIOS_STRUCTURE_TABLE_REQUEST; typedef struct { PLDM_REQUEST_HEADER RequestHeader; PLDM_GET_SMBIOS_STRUCTURE_TABLE_REQUEST GetSmbiosStructureTableRequest; } PLDM_GET_SMBIOS_STRUCTURE_TABLE_REQUEST_FORMAT; /// /// Get SMBIOS Structure Table Response. /// typedef struct { UINT32 NextDataTransferHandle; UINT8 TransferFlag; UINT8 Table[0]; } PLDM_GET_SMBIOS_STRUCTURE_TABLE_RESPONSE; typedef struct { PLDM_RESPONSE_HEADER ResponseHeader; PLDM_GET_SMBIOS_STRUCTURE_TABLE_RESPONSE GetSmbiosStructureTableResponse; } PLDM_GET_SMBIOS_STRUCTURE_TABLE_RESPONSE_FORMAT; /// /// Set SMBIOS Structure Table Request. /// typedef struct { UINT32 DataTransferHandle; UINT8 TransferFlag; UINT8 Table[0]; } PLDM_SET_SMBIOS_STRUCTURE_TABLE_REQUEST; typedef struct { PLDM_REQUEST_HEADER RequestHeader; PLDM_SET_SMBIOS_STRUCTURE_TABLE_REQUEST SetSmbiosStructureTableRequest; } PLDM_SET_SMBIOS_STRUCTURE_TABLE_REQUEST_FORMAT; /// /// Set SMBIOS Structure Table Response. /// typedef struct { PLDM_RESPONSE_HEADER ResponseHeader; UINT32 NextDataTransferHandle; } PLDM_SET_SMBIOS_STRUCTURE_TABLE_RESPONSE_FORMAT; /// /// Get SMBIOS Structure by Type Request. /// typedef struct { UINT32 DataTransferHandle; UINT8 TransferOperationFlag; UINT8 Type; UINT16 StructureInstanceId; } PLDM_GET_SMBIOS_STRUCTURE_BY_TYPE_REQUEST; typedef struct { PLDM_REQUEST_HEADER RequestHeader; PLDM_GET_SMBIOS_STRUCTURE_BY_TYPE_REQUEST GetSmbiosStructureByTypeRequest; } PLDM_GET_SMBIOS_STRUCTURE_BY_TYPE_REQUEST_FORMAT; /// /// Get SMBIOS Structure by Type Response. /// typedef struct { UINT32 NextDataTransferHandle; UINT8 TransferFlag; UINT8 Table[0]; } PLDM_GET_SMBIOS_STRUCTURE_BY_TYPE_RESPONSE; typedef struct { PLDM_RESPONSE_HEADER ResponseHeader; PLDM_GET_SMBIOS_STRUCTURE_BY_TYPE_RESPONSE GetSmbiosStructureByTypeResponse; } PLDM_GET_SMBIOS_STRUCTURE_BY_TYPE_RESPONSE_FORMAT; /// /// Get SMBIOS Structure by Handle Request. /// typedef struct { UINT32 DataTransferHandle; UINT8 TransferOperationFlag; UINT16 Handle; } PLDM_GET_SMBIOS_STRUCTURE_BY_HANDLE_REQUEST; typedef struct { PLDM_REQUEST_HEADER RequestHeader; PLDM_GET_SMBIOS_STRUCTURE_BY_HANDLE_REQUEST GetSmbiosStructureByHandleRequest; } PLDM_GET_SMBIOS_STRUCTURE_BY_HANDLE_REQUEST_FORMAT; /// /// Get SMBIOS Structure by Handle Response. /// typedef struct { UINT32 NextDataTransferHandle; UINT8 TransferFlag; UINT8 Table[0]; } PLDM_GET_SMBIOS_STRUCTURE_BY_HANDLE_RESPONSE; typedef struct { PLDM_RESPONSE_HEADER ResponseHeader; PLDM_GET_SMBIOS_STRUCTURE_BY_HANDLE_RESPONSE GetSmbiosStructureByTypeResponse; } PLDM_GET_SMBIOS_STRUCTURE_BY_HANDLE_RESPONSE_FORMAT; #pragma pack() #endif // PLDM_SMBIOS_TRANSFER_H_