blob: 9b7a5e838eff72062e0db08ea9626a6b1c01792e [file] [log] [blame]
/** @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 <IndustryStandard/Pldm.h>
#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_