Got it, I will update the code before I check in the code.
> -----Original Message----- > From: Yao, Jiewen > Sent: Tuesday, March 29, 2016 9:52 AM > To: Tian, Feng; Dong, Eric; edk2-devel@lists.01.org > Cc: Tian, Feng > Subject: RE: [Patch 1/8] MdePkg: Add definition for TCG Storage Core and Opal > specs. > > Hi > Can we add TCG prefix for all data structure to avoid namespace conflict? > > For example: > > +typedef struct { > + UINT8 Data : 6; > + UINT8 Sign : 1; > + UINT8 IsZero : 1; > +} TINY_ATOM_BITS; > > > +// Security Protocol IDs > +#define SECURITY_PROTOCOL_INFO 0x00 > +#define OPAL_SECURITY_PROTOCOL_1 0x01 > +#define OPAL_SECURITY_PROTOCOL_2 0x02 > +#define SECURITY_PROTOCOL_TCG3 0x03 > +#define SECURITY_PROTOCOL_TCG4 0x04 > +#define SECURITY_PROTOCOL_TCG5 0x05 > +#define SECURITY_PROTOCOL_TCG6 0x06 > +#define SECURITY_PROTOCOL_CBCS 0x07 > +#define SECURITY_PROTOCOL_TAPE_DATA 0x20 > +#define SECURITY_PROTOCOL_DATA_ENCRYPT_CONFIG 0x21 > +#define SECURITY_PROTOCOL_SA_CREATION_CAPS 0x40 > +#define SECURITY_PROTOCOL_IKEV2_SCSI 0x41 > +#define SECURITY_PROTOCOL_JEDEC_UFS 0xEC > +#define SECURITY_PROTOCOL_SDCARD_SECURITY 0xED > +#define SECURITY_PROTOCOL_IEEE_1667 0xEE > +#define SECURITY_PROTOCOL_ATA_DEVICE_SERVER_PASS 0xEF > > > > > -----Original Message----- > > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > > Tian, Feng > > Sent: Tuesday, March 29, 2016 9:42 AM > > To: Dong, Eric <eric.d...@intel.com>; edk2-devel@lists.01.org > > Cc: Tian, Feng <feng.t...@intel.com> > > Subject: Re: [edk2] [Patch 1/8] MdePkg: Add definition for TCG Storage Core > > and Opal specs. > > > > Series reviewed-by: Feng Tian <feng.t...@intel.com> > > > > Thanks > > Feng > > > > -----Original Message----- > > From: Dong, Eric > > Sent: Monday, March 21, 2016 11:17 AM > > To: edk2-devel@lists.01.org > > Cc: Tian, Feng <feng.t...@intel.com> > > Subject: [Patch 1/8] MdePkg: Add definition for TCG Storage Core and Opal > > specs. > > > > These definition is defined in the TCG storage core spec and TCG storage > > Opal spec. > > > > Contributed-under: TianoCore Contribution Agreement 1.0 > > Signed-off-by: Eric Dong <eric.d...@intel.com> > > Cc: Feng Tian <feng.t...@intel.com> > > --- > > MdePkg/Include/IndustryStandard/TcgStorageCore.h | 378 > > +++++++++++++++++++++++ > > MdePkg/Include/IndustryStandard/TcgStorageOpal.h | 180 +++++++++++ > > 2 files changed, 558 insertions(+) > > create mode 100644 MdePkg/Include/IndustryStandard/TcgStorageCore.h > > create mode 100644 MdePkg/Include/IndustryStandard/TcgStorageOpal.h > > > > diff --git a/MdePkg/Include/IndustryStandard/TcgStorageCore.h > > b/MdePkg/Include/IndustryStandard/TcgStorageCore.h > > new file mode 100644 > > index 0000000..9ecd7fa > > --- /dev/null > > +++ b/MdePkg/Include/IndustryStandard/TcgStorageCore.h > > @@ -0,0 +1,378 @@ > > +/** @file > > + TCG defined values and structures. > > + > > +Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> This > > +program and the accompanying materials are licensed and made available > > +under the terms and conditions of the BSD License which accompanies > > +this distribution. The full text of the license may be found at > > +http://opensource.org/licenses/bsd-license.php > > + > > +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" > > BASIS, > > +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER > > EXPRESS OR IMPLIED. > > + > > +**/ > > + > > +#ifndef _TCG_STORAGE_CORE_H_ > > +#define _TCG_STORAGE_CORE_H_ > > + > > +#include <Base.h> > > + > > +#pragma pack(1) > > + > > +/// UID in host native byte order > > +typedef UINT64 TCG_UID; > > + > > +#define TCG_TO_UID(b0, b1, b2, b3, b4, b5, b6, b7) (TCG_UID)( \ > > + (UINT64)(b0) | \ > > + ((UINT64)(b1) << 8) | \ > > + ((UINT64)(b2) << 16) | \ > > + ((UINT64)(b3) << 24) | \ > > + ((UINT64)(b4) << 32) | \ > > + ((UINT64)(b5) << 40) | \ > > + ((UINT64)(b6) << 48) | \ > > + ((UINT64)(b7) << 56)) > > + > > +typedef struct { > > + UINT32 ReservedBE; > > + UINT16 ComIDBE; > > + UINT16 ComIDExtensionBE; > > + UINT32 OutstandingDataBE; > > + UINT32 MinTransferBE; > > + UINT32 LengthBE; > > + UINT8 Payload[0]; > > +} TCG_COM_PACKET; > > + > > +typedef struct { > > + UINT32 TperSessionNumberBE; > > + UINT32 HostSessionNumberBE; > > + UINT32 SequenceNumberBE; > > + UINT16 ReservedBE; > > + UINT16 AckTypeBE; > > + UINT32 AcknowledgementBE; > > + UINT32 LengthBE; > > + UINT8 Payload[0]; > > +} TCG_PACKET; > > + > > +#define TCG_SUBPACKET_ALIGNMENT 4 // 4-byte alignment per spec > > + > > +typedef struct { > > + UINT8 ReservedBE[6]; > > + UINT16 KindBE; > > + UINT32 LengthBE; > > + UINT8 Payload[0]; > > +} TCG_SUB_PACKET; > > + > > +#define SUBPACKET_KIND_DATA 0x0000 > > +#define SUBPACKET_KIND_CREDIT_CONTROL 0x8001 > > + > > +#define TCG_ATOM_TYPE_INTEGER 0x0 > > +#define TCG_ATOM_TYPE_BYTE 0x1 > > +typedef struct { > > + UINT8 Data : 6; > > + UINT8 Sign : 1; > > + UINT8 IsZero : 1; > > +} TINY_ATOM_BITS; > > + > > +typedef union { > > + UINT8 Raw; > > + TINY_ATOM_BITS TinyAtomBits; > > +} TCG_SIMPLE_TOKEN_TINY_ATOM; > > + > > + > > +typedef struct { > > + UINT8 Length : 4; > > + UINT8 SignOrCont : 1; > > + UINT8 ByteOrInt : 1; > > + UINT8 IsZero : 1; > > + UINT8 IsOne : 1; > > +} SHORT_ATOM_BITS; > > + > > +typedef union { > > + UINT8 RawHeader; > > + SHORT_ATOM_BITS ShortAtomBits; > > +} TCG_SIMPLE_TOKEN_SHORT_ATOM; > > + > > + > > +#define TCG_MEDIUM_ATOM_LENGTH_HIGH_SHIFT 0x8 #define > > +TCG_MEDIUM_ATOM_LENGTH_HIGH_MASK 0x7 > > + > > +typedef struct { > > + UINT8 LengthHigh : 3; > > + UINT8 SignOrCont : 1; > > + UINT8 ByteOrInt : 1; > > + UINT8 IsZero : 1; > > + UINT8 IsOne1 : 1; > > + UINT8 IsOne2 : 1; > > + UINT8 LengthLow; > > +} MEDIUM_ATOM_BITS; > > + > > +typedef union { > > + UINT16 RawHeader; > > + MEDIUM_ATOM_BITS MediumAtomBits; > > +} TCG_SIMPLE_TOKEN_MEDIUM_ATOM; > > + > > + > > +#define TCG_LONG_ATOM_LENGTH_HIGH_SHIFT 16 #define > > +TCG_LONG_ATOM_LENGTH_MID_SHIFT 8 > > + > > +typedef struct { > > + UINT8 SignOrCont : 1; > > + UINT8 ByteOrInt : 1; > > + UINT8 Reserved : 2; > > + UINT8 IsZero : 1; > > + UINT8 IsOne1 : 1; > > + UINT8 IsOne2 : 1; > > + UINT8 IsOne3 : 1; > > + UINT8 LengthHigh; > > + UINT8 LengthMid; > > + UINT8 LengthLow; > > +} LONG_ATOM_BITS; > > + > > +typedef union { > > + UINT32 RawHeader; > > + LONG_ATOM_BITS LongAtomBits; > > +} TCG_SIMPLE_TOKEN_LONG_ATOM; > > + > > + > > +// TCG Core Spec v2 - Table 04 - Token Types typedef enum { > > + TcgTokenTypeReserved, > > + TcgTokenTypeTinyAtom, > > + TcgTokenTypeShortAtom, > > + TcgTokenTypeMediumAtom, > > + TcgTokenTypeLongAtom, > > + TcgTokenTypeStartList, > > + TcgTokenTypeEndList, > > + TcgTokenTypeStartName, > > + TcgTokenTypeEndName, > > + TcgTokenTypeCall, > > + TcgTokenTypeEndOfData, > > + TcgTokenTypeEndOfSession, > > + TcgTokenTypeStartTransaction, > > + TcgTokenTypeEndTransaction, > > + TcgTokenTypeEmptyAtom, > > +} TCG_TOKEN_TYPE; > > + > > +#pragma pack() > > + > > +#define TCG_TOKEN_SHORTATOM_MAX_BYTE_SIZE 0x0F > > +#define TCG_TOKEN_MEDIUMATOM_MAX_BYTE_SIZE 0x7FF > > +#define TCG_TOKEN_LONGATOM_MAX_BYTE_SIZE 0xFFFFFF > > + > > +#define TCG_TOKEN_TINYATOM_UNSIGNED_MAX_VALUE 0x3F > > +#define TCG_TOKEN_TINYATOM_SIGNED_MAX_VALUE 0x1F > > +#define TCG_TOKEN_TINYATOM_SIGNED_MIN_VALUE -32 > > + > > +// TOKEN TYPES > > +#define TCG_TOKEN_TINYATOM 0x00 > > +#define TCG_TOKEN_TINYSIGNEDATOM 0x40 > > +#define TCG_TOKEN_SHORTATOM 0x80 > > +#define TCG_TOKEN_SHORTSIGNEDATOM 0x90 > > +#define TCG_TOKEN_SHORTBYTESATOM 0xA0 > > +#define TCG_TOKEN_MEDIUMATOM 0xC0 > > +#define TCG_TOKEN_MEDIUMSIGNEDATOM 0xC8 > > +#define TCG_TOKEN_MEDIUMBYTESATOM 0xD0 > > +#define TCG_TOKEN_LONGATOM 0xE0 > > +#define TCG_TOKEN_LONGSIGNEDATOM 0xE1 > > +#define TCG_TOKEN_LONGBYTESATOM 0xE2 > > +#define TCG_TOKEN_STARTLIST 0xF0 > > +#define TCG_TOKEN_ENDLIST 0xF1 > > +#define TCG_TOKEN_STARTNAME 0xF2 > > +#define TCG_TOKEN_ENDNAME 0xF3 > > +// 0xF4 - 0xF7 TCG Reserved > > +#define TCG_TOKEN_CALL 0xF8 > > +#define TCG_TOKEN_ENDDATA 0xF9 > > +#define TCG_TOKEN_ENDSESSION 0xFA > > +#define TCG_TOKEN_STARTTRANSACTION 0xFB > > +#define TCG_TOKEN_ENDTRANSACTION 0xFC > > +// 0xFD - 0xFE TCG Reserved > > +#define TCG_TOKEN_EMPTY 0xFF > > + > > +// CELLBLOCK reserved Names > > +#define TCG_CELL_BLOCK_TABLE_NAME (UINT8)0x00 > > +#define TCG_CELL_BLOCK_START_ROW_NAME (UINT8)0x01 > > +#define TCG_CELL_BLOCK_END_ROW_NAME (UINT8)0x02 > > +#define TCG_CELL_BLOCK_START_COLUMN_NAME (UINT8)0x03 > > +#define TCG_CELL_BLOCK_END_COLUMN_NAME (UINT8)0x04 > > + > > +// METHOD STATUS CODES > > +#define TCG_METHOD_STATUS_CODE_SUCCESS 0x00 > > +#define TCG_METHOD_STATUS_CODE_NOT_AUTHORIZED > > 0x01 > > +#define TCG_METHOD_STATUS_CODE_OBSOLETE > > 0x02 > > +#define TCG_METHOD_STATUS_CODE_SP_BUSY 0x03 > > +#define TCG_METHOD_STATUS_CODE_SP_FAILED 0x04 > > +#define TCG_METHOD_STATUS_CODE_SP_DISABLED 0x05 > > +#define TCG_METHOD_STATUS_CODE_SP_FROZEN 0x06 > > +#define TCG_METHOD_STATUS_CODE_NO_SESSIONS_AVAILABLE 0x07 > > +#define TCG_METHOD_STATUS_CODE_UNIQUENESS_CONFLICT > > 0x08 > > +#define TCG_METHOD_STATUS_CODE_INSUFFICIENT_SPACE 0x09 > > +#define TCG_METHOD_STATUS_CODE_INSUFFICIENT_ROWS > > 0x0A > > +#define TCG_METHOD_STATUS_CODE_INVALID_PARAMETER > > 0x0C > > +#define TCG_METHOD_STATUS_CODE_OBSOLETE2 > > 0x0D > > +#define TCG_METHOD_STATUS_CODE_OBSOLETE3 > > 0x0E > > +#define TCG_METHOD_STATUS_CODE_TPER_MALFUNCTION > > 0x0F > > +#define TCG_METHOD_STATUS_CODE_TRANSACTION_FAILURE > > 0x10 > > +#define TCG_METHOD_STATUS_CODE_RESPONSE_OVERFLOW > > 0x11 > > +#define TCG_METHOD_STATUS_CODE_AUTHORITY_LOCKED_OUT > > 0x12 > > +#define TCG_METHOD_STATUS_CODE_FAIL 0x3F > > + > > + > > +// Feature Codes > > +#define TCG_FEATURE_INVALID (UINT16)0x0000 > > +#define TCG_FEATURE_TPER (UINT16)0x0001 > > +#define TCG_FEATURE_LOCKING (UINT16)0x0002 > > +#define TCG_FEATURE_GEOMETRY_REPORTING (UINT16)0x0003 > > +#define TCG_FEATURE_SINGLE_USER_MODE (UINT16)0x0201 > > +#define TCG_FEATURE_DATASTORE_TABLE (UINT16)0x0202 > > +#define TCG_FEATURE_OPAL_SSC_V1_0_0 (UINT16)0x0200 > > +#define TCG_FEATURE_OPAL_SSC_V2_0_0 (UINT16)0x0203 > > +#define TCG_FEATURE_OPAL_SSC_LITE (UINT16)0x0301 > > +#define TCG_FEATURE_PYRITE_SSC (UINT16)0x0302 > > + > > +// ACE Expression values > > +#define TCG_ACE_EXPRESSION_AND 0x0 > > +#define TCG_ACE_EXPRESSION_OR 0x1 > > + > > +/************************************************************ > > ********** > > +****** TRUSTED RECEIVE - supported security protocols list (SP_Specific > > += 0000h) ATA 8 Rev6a Table 68 7.57.6.2 > > +************************************************************* > > ********** > > +*****/ > > +// Security Protocol IDs > > +#define SECURITY_PROTOCOL_INFO 0x00 > > +#define OPAL_SECURITY_PROTOCOL_1 0x01 > > +#define OPAL_SECURITY_PROTOCOL_2 0x02 > > +#define SECURITY_PROTOCOL_TCG3 0x03 > > +#define SECURITY_PROTOCOL_TCG4 0x04 > > +#define SECURITY_PROTOCOL_TCG5 0x05 > > +#define SECURITY_PROTOCOL_TCG6 0x06 > > +#define SECURITY_PROTOCOL_CBCS 0x07 > > +#define SECURITY_PROTOCOL_TAPE_DATA 0x20 > > +#define SECURITY_PROTOCOL_DATA_ENCRYPT_CONFIG 0x21 > > +#define SECURITY_PROTOCOL_SA_CREATION_CAPS 0x40 > > +#define SECURITY_PROTOCOL_IKEV2_SCSI 0x41 > > +#define SECURITY_PROTOCOL_JEDEC_UFS 0xEC > > +#define SECURITY_PROTOCOL_SDCARD_SECURITY 0xED > > +#define SECURITY_PROTOCOL_IEEE_1667 0xEE > > +#define SECURITY_PROTOCOL_ATA_DEVICE_SERVER_PASS 0xEF > > + > > +// Security Protocol Specific IDs > > +#define TCG_SP_SPECIFIC_PROTOCOL_LIST 0x0000 > > +#define TCG_SP_SPECIFIC_PROTOCOL_LEVEL0_DISCOVERY 0x0001 > > + > > +#define TCG_RESERVED_COMID 0x0000 > > + > > +#pragma pack(1) > > +typedef struct { > > + UINT8 Reserved[6]; > > + UINT16 ListLength_BE; // 6 - 7 > > + UINT8 List[504]; // 8... > > +} TCG_SUPPORTED_SECURITY_PROTOCOLS; > > + > > + > > +// Level 0 Discovery > > +typedef struct { > > + UINT32 LengthBE; // number of valid bytes in discovery response, > > not including length field > > + UINT16 VerMajorBE; > > + UINT16 VerMinorBE; > > + UINT8 Reserved[8]; > > + UINT8 VendorUnique[32]; > > +} TCG_LEVEL0_DISCOVERY_HEADER; > > + > > +typedef struct _TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER { > > + UINT16 FeatureCode_BE; > > + UINT8 Reserved : 4; > > + UINT8 Version : 4; > > + UINT8 Length; // length of feature dependent data in bytes > > +} TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER; > > + > > + > > +typedef struct { > > + TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header; > > + UINT8 LockingSupported : 1; > > + UINT8 LockingEnabled : 1; // > > means the locking security provider (SP) is enabled > > + UINT8 Locked : 1; // means at > > least 1 locking range is enabled > > + UINT8 MediaEncryption : 1; > > + UINT8 MbrEnabled : 1; > > + UINT8 MbrDone : 1; > > + UINT8 Reserved : 2; > > + UINT8 Reserved515[11]; > > +} TCG_LOCKING_FEATURE_DESCRIPTOR; > > + > > +typedef struct { > > + TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header; > > + UINT8 SyncSupported : 1; > > + UINT8 AsyncSupported : 1; > > + UINT8 AckNakSupported : 1; > > + UINT8 BufferMgmtSupported : 1; > > + UINT8 StreamingSupported : 1; > > + UINT8 Reserved4b5 : 1; > > + UINT8 ComIdMgmtSupported : 1; > > + UINT8 Reserved4b7 : 1; > > + UINT8 Reserved515[11]; > > +} TCG_TPER_FEATURE_DESCRIPTOR; > > + > > +#pragma pack() > > + > > +// Special Purpose UIDs > > +#define TCG_UID_NULL > > TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00) > > +#define TCG_UID_THIS_SP > > TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01) > > +#define TCG_UID_SMUID > > TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF) > > + > > +// Session Manager Method UIDS > > +#define TCG_UID_SM_PROPERTIES > > TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01) > > +#define TCG_UID_SM_START_SESSION > > TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x02) > > +#define TCG_UID_SM_SYNC_SESSION > > TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03) > > +#define TCG_UID_SM_START_TRUSTED_SESSION > > TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x04) > > +#define TCG_UID_SM_SYNC_TRUSTED_SESSION > > TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x05) > > +#define TCG_UID_SM_CLOSE_SESSION > > TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x06) > > + > > +// MethodID UIDs > > +#define TCG_UID_METHOD_DELETE_SP > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01) > > +#define TCG_UID_METHOD_CREATE_TABLE > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02) > > +#define TCG_UID_METHOD_DELETE > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03) > > +#define TCG_UID_METHOD_CREATE_ROW > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04) > > +#define TCG_UID_METHOD_DELETE_ROW > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05) > > +#define TCG_UID_METHOD_NEXT > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08) > > +#define TCG_UID_METHOD_GET_FREE_SPACE > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09) > > +#define TCG_UID_METHOD_GET_FREE_ROWS > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A) > > +#define TCG_UID_METHOD_DELETE_METHOD > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0B) > > +#define TCG_UID_METHOD_GET_ACL > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0D) > > +#define TCG_UID_METHOD_ADD_ACE > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0E) > > +#define TCG_UID_METHOD_REMOVE_ACE > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0F) > > +#define TCG_UID_METHOD_GEN_KEY > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10) > > +#define TCG_UID_METHOD_GET_PACKAGE > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12) > > +#define TCG_UID_METHOD_SET_PACKAGE > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x13) > > +#define TCG_UID_METHOD_GET > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16) > > +#define TCG_UID_METHOD_SET > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x17) > > +#define TCG_UID_METHOD_AUTHENTICATE > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1C) > > +#define TCG_UID_METHOD_ISSUE_SP > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x01) > > +#define TCG_UID_METHOD_GET_CLOCK > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x01) > > +#define TCG_UID_METHOD_RESET_CLOCK > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x02) > > +#define TCG_UID_METHOD_SET_CLOCK_HIGH > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x03) > > +#define TCG_UID_METHOD_SET_LAG_HIGH > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x04) > > +#define TCG_UID_METHOD_SET_CLOCK_LOW > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x05) > > +#define TCG_UID_METHOD_SET_LAG_LOW > > TCG_TO_UID(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x06) > > +#define TCG_UID_METHOD_INCREMENT_COUNTER > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x07) > > +#define TCG_UID_METHOD_RANDOM > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x01) > > +#define TCG_UID_METHOD_SALT > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x02) > > +#define TCG_UID_METHOD_DECRYPT_INIT > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x03) > > +#define TCG_UID_METHOD_DECRYPT > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x04) > > +#define TCG_UID_METHOD_DECRYPT_FINALIZE > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x05) > > +#define TCG_UID_METHOD_ENCRYPT_INIT > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x06) > > +#define TCG_UID_METHOD_ENCRYPT > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x07) > > +#define TCG_UID_METHOD_ENCRYPT_FINALIZE > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x08) > > +#define TCG_UID_METHOD_HMAC_INIT > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x09) > > +#define TCG_UID_METHOD_HMAC > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0A) > > +#define TCG_UID_METHOD_HMAC_FINALIZE > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0B) > > +#define TCG_UID_METHOD_HASH_INIT > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0C) > > +#define TCG_UID_METHOD_HASH > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0D) > > +#define TCG_UID_METHOD_HASH_FINALIZE > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0E) > > +#define TCG_UID_METHOD_SIGN > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x0F) > > +#define TCG_UID_METHOD_VERIFY > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x10) > > +#define TCG_UID_METHOD_XOR > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x11) > > +#define TCG_UID_METHOD_ADD_LOG > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x01) > > +#define TCG_UID_METHOD_CREATE_LOG > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x02) > > +#define TCG_UID_METHOD_CLEAR_LOG > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x03) > > +#define TCG_UID_METHOD_FLUSH_LOG > > TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x04) > > + > > +#endif // TCG_H_ > > diff --git a/MdePkg/Include/IndustryStandard/TcgStorageOpal.h > > b/MdePkg/Include/IndustryStandard/TcgStorageOpal.h > > new file mode 100644 > > index 0000000..2486b07 > > --- /dev/null > > +++ b/MdePkg/Include/IndustryStandard/TcgStorageOpal.h > > @@ -0,0 +1,180 @@ > > +/** @file > > + Opal Specification defined values and structures. > > + > > +Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> This > > +program and the accompanying materials are licensed and made available > > +under the terms and conditions of the BSD License which accompanies > > +this distribution. The full text of the license may be found at > > +http://opensource.org/licenses/bsd-license.php > > + > > +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" > > BASIS, > > +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER > > EXPRESS OR IMPLIED. > > + > > +**/ > > + > > +#ifndef _TCG_STORAGE_OPAL_H_ > > +#define _TCG_STORAGE_OPAL_H_ > > + > > +#include <IndustryStandard/TcgStorageCore.h> > > + > > +#define OPAL_UID_ADMIN_SP TCG_TO_UID(0x00, > > 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x01) > > +#define OPAL_UID_ADMIN_SP_C_PIN_MSID TCG_TO_UID(0x00, > > 0x00, 0x00, 0x0B, 0x00, 0x00, 0x84, 0x02) > > +#define OPAL_UID_ADMIN_SP_C_PIN_SID TCG_TO_UID(0x00, > > 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01) > > +#define OPAL_UID_LOCKING_SP TCG_TO_UID(0x00, > > 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x02) > > + > > +// ADMIN_SP > > +// Authorities > > +#define OPAL_ADMIN_SP_ANYBODY_AUTHORITY TCG_TO_UID(0x00, > > 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01) > > +#define OPAL_ADMIN_SP_ADMINS_AUTHORITY TCG_TO_UID(0x00, > > 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02) > > +#define OPAL_ADMIN_SP_MAKERS_AUTHORITY TCG_TO_UID(0x00, > > 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03) > > +#define OPAL_ADMIN_SP_SID_AUTHORITY TCG_TO_UID(0x00, > > 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06) > > +#define OPAL_ADMIN_SP_ADMIN1_AUTHORITY TCG_TO_UID(0x00, > > 0x00, 0x00, 0x09, 0x00, 0x00, 0x02, 0x01) > > +#define OPAL_ADMIN_SP_PSID_AUTHORITY TCG_TO_UID(0x00, > > 0x00, 0x00, 0x09, 0x00, 0x01, 0xFF, 0x01) > > + > > +#define OPAL_ADMIN_SP_ACTIVATE_METHOD TCG_TO_UID(0x00, > > 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x03) > > +#define OPAL_ADMIN_SP_REVERT_METHOD TCG_TO_UID(0x00, > > 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x02) > > + > > + > > +// LOCKING SP > > +// Authorities > > +#define OPAL_LOCKING_SP_ANYBODY_AUTHORITY TCG_TO_UID(0x00, > > 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01) > > +#define OPAL_LOCKING_SP_ADMINS_AUTHORITY TCG_TO_UID(0x00, > > 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02) > > +#define OPAL_LOCKING_SP_ADMIN1_AUTHORITY TCG_TO_UID(0x00, > > 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x01) > > +#define OPAL_LOCKING_SP_USERS_AUTHORITY TCG_TO_UID(0x00, > > 0x00, 0x00, 0x09, 0x00, 0x03, 0x00, 0x00) > > +#define OPAL_LOCKING_SP_USER1_AUTHORITY TCG_TO_UID(0x00, > > 0x00, 0x00, 0x09, 0x00, 0x03, 0x00, 0x01) > > + > > +#define OPAL_LOCKING_SP_REVERTSP_METHOD TCG_TO_UID(0x00, > > 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11) > > + > > +// C_PIN Table Rows > > +#define OPAL_LOCKING_SP_C_PIN_ADMIN1 TCG_TO_UID( 0x00, > > 0x00, 0x00, 0x0B, 0x00, 0x01, 0x00, 0x01 ) > > +#define OPAL_LOCKING_SP_C_PIN_USER1 TCG_TO_UID( 0x00, > > 0x00, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x01 ) > > + > > +// Locking Table > > +#define OPAL_LOCKING_SP_LOCKING_GLOBALRANGE TCG_TO_UID( 0x00, > > 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x01 ) > > +#define OPAL_LOCKING_SP_LOCKING_RANGE1 TCG_TO_UID( 0x00, > > 0x00, 0x08, 0x02, 0x00, 0x03, 0x00, 0x01 ) > > + > > + > > +// LOCKING SP ACE Table Preconfiguration > > +#define OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_GET_ALL > > TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xD0, 0x00 ) > > +#define > > OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_SET_RDLOCKED > > +TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xE0, 0x00 ) #define > > +OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_SET_WRLOCKED > > TCG_TO_UID( 0x00, > > +0x00, 0x00, 0x08, 0x00, 0x03, 0xE8, 0x00 ) > > + > > +#define OPAL_LOCKING_SP_ACE_K_AES_256_GLOBALRANGE_GENKEY > > TCG_TO_UID( > > +0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xB8, 0x00 ) #define > > +OPAL_LOCKING_SP_ACE_K_AES_128_GLOBALRANGE_GENKEY > > TCG_TO_UID( 0x00, > > +0x00, 0x00, 0x08, 0x00, 0x03, 0xB0, 0x00 ) > > + > > + > > +// LOCKING SP LockingInfo Table Preconfiguration #define > > +OPAL_LOCKING_SP_LOCKING_INFO TCG_TO_UID( 0x00, 0x00, 0x08, 0x01, > > 0x00, > > +0x00, 0x00, 0x01 ) > > + > > +#define OPAL_LOCKING_SP_LOCKINGINFO_ALIGNMENTREQUIRED_COL > > 0x7 > > +#define OPAL_LOCKING_SP_LOCKINGINFO_LOGICALBLOCKSIZE_COL > > 0x8 > > +#define > > OPAL_LOCKING_SP_LOCKINGINFO_ALIGNMENTGRANULARITY_COL 0x9 > > +#define OPAL_LOCKING_SP_LOCKINGINFO_LOWESTALIGNEDLBA_COL > > 0xA > > + > > +// K_AES_256 Table Preconfiguration > > +#define OPAL_LOCKING_SP_K_AES_256_GLOBALRANGE_KEY > > TCG_TO_UID( 0x00, > > +0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x01 ) > > + > > +// K_AES_128 Table Preconfiguration > > +#define OPAL_LOCKING_SP_K_AES_128_GLOBALRANGE_KEY > > TCG_TO_UID( 0x00, > > +0x00, 0x08, 0x05, 0x00, 0x00, 0x00, 0x01 ) > > + > > +// Minimum Properties that an Opal Compliant SD Shall support > > +#define OPAL_MIN_MAX_COM_PACKET_SIZE 2048 > > +#define OPAL_MIN_MAX_REPONSE_COM_PACKET_SIZE 2048 > > +#define OPAL_MIN_MAX_PACKET_SIZE 2028 > > +#define OPAL_MIN_MAX_IND_TOKEN_SIZE 1992 > > +#define OPAL_MIN_MAX_PACKETS 1 > > +#define OPAL_MIN_MAX_SUBPACKETS 1 > > +#define OPAL_MIN_MAX_METHODS 1 > > +#define OPAL_MIN_MAX_SESSIONS 1 > > +#define OPAL_MIN_MAX_AUTHENTICATIONS 2 > > +#define OPAL_MIN_MAX_TRANSACTION_LIMIT 1 > > + > > +#define OPAL_ADMIN_SP_PIN_COL 3 > > +#define OPAL_LOCKING_SP_C_PIN_TRYLIMIT_COL 5 #define > > +OPAL_RANDOM_METHOD_MAX_COUNT_SIZE 32 > > + > > +#pragma pack(1) > > + > > +typedef struct _OPAL_GEOMETRY_REPORTING_FEATURE { > > + TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header; > > + UINT8 Reserved[8]; > > + UINT32 LogicalBlockSizeBE; > > + UINT64 AlignmentGranularityBE; > > + UINT64 LowestAlignedLBABE; > > +} OPAL_GEOMETRY_REPORTING_FEATURE; > > + > > +typedef struct _OPAL_SINGLE_USER_MODE_FEATURE { > > + TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header; > > + UINT32 > > NumLockingObjectsSupportedBE; > > + UINT8 Any : 1; > > + UINT8 All : 1; > > + UINT8 Policy : 1; > > + UINT8 Reserved : 5; > > + UINT8 Reserved2[7]; > > +} OPAL_SINGLE_USER_MODE_FEATURE; > > + > > +typedef struct _OPAL_DATASTORE_TABLE_FEATURE { > > + TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header; > > + UINT16 Reserved; > > + UINT16 MaxNumTablesBE; > > + UINT32 MaxTotalSizeBE; > > + UINT32 SizeAlignmentBE; > > +} OPAL_DATASTORE_TABLE_FEATURE; > > + > > +typedef struct _OPAL_SSCV1_FEATURE_DESCRIPTOR { > > + TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header; > > + UINT16 BaseComdIdBE; > > + UINT16 NumComIdsBE; > > + UINT8 RangeCrossing : 1; > > + UINT8 Reserved : 7; > > + UINT8 Future[11]; > > +} OPAL_SSCV1_FEATURE_DESCRIPTOR; > > + > > +typedef struct _OPAL_SSCV2_FEATURE_DESCRIPTOR { > > + TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header; > > + UINT16 BaseComdIdBE; > > + UINT16 NumComIdsBE; > > + UINT8 Reserved; > > + UINT16 > > NumLockingSpAdminAuthoritiesSupportedBE; > > + UINT16 > > NumLockingSpUserAuthoritiesSupportedBE; > > + UINT8 InitialCPINSIDPIN; > > + UINT8 > > CPINSIDPINRevertBehavior; > > + UINT8 Future[5]; > > +} OPAL_SSCV2_FEATURE_DESCRIPTOR; > > + > > +typedef struct _OPAL_SSCLITE_FEATURE_DESCRIPTOR { > > + TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header; > > + UINT16 BaseComdIdBE; > > + UINT16 NumComIdsBE; > > + UINT8 Reserved[5]; > > + UINT8 InitialCPINSIDPIN; > > + UINT8 > > CPINSIDPINRevertBehavior; > > + UINT8 Future[5]; > > +} OPAL_SSCLITE_FEATURE_DESCRIPTOR; > > + > > +typedef struct _PYRITE_SSC_FEATURE_DESCRIPTOR { > > + TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header; > > + UINT16 BaseComdIdBE; > > + UINT16 NumComIdsBE; > > + UINT8 Reserved[5]; > > + UINT8 InitialCPINSIDPIN; > > + UINT8 > > CPINSIDPINRevertBehavior; > > + UINT8 Future[5]; > > +} PYRITE_SSC_FEATURE_DESCRIPTOR; > > + > > +typedef union { > > + TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER CommonHeader; > > + TCG_TPER_FEATURE_DESCRIPTOR Tper; > > + TCG_LOCKING_FEATURE_DESCRIPTOR Locking; > > + OPAL_GEOMETRY_REPORTING_FEATURE Geometry; > > + OPAL_SINGLE_USER_MODE_FEATURE SingleUser; > > + OPAL_DATASTORE_TABLE_FEATURE DataStore; > > + OPAL_SSCV1_FEATURE_DESCRIPTOR OpalSscV1; > > + OPAL_SSCV2_FEATURE_DESCRIPTOR OpalSscV2; > > + OPAL_SSCLITE_FEATURE_DESCRIPTOR OpalSscLite; > > + PYRITE_SSC_FEATURE_DESCRIPTOR PyriteSsc; > > +} OPAL_LEVEL0_FEATURE_DESCRIPTOR; > > + > > +#pragma pack() > > + > > +#endif // _OPAL_H_ > > -- > > 2.6.4.windows.1 > > > > _______________________________________________ > > edk2-devel mailing list > > edk2-devel@lists.01.org > > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel