PS: please make sure latest GCC build pass before push as a new 
set-but-not-used option is introduced.

Thanks
Feng

-----Original Message-----
From: 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: [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

Reply via email to