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

Reply via email to