]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/IndustryStandard/TcgStorageOpal.h
MdePkg: Add Feature definitions added in pyrite 2.0 spec.
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / TcgStorageOpal.h
CommitLineData
79af8319
ED
1/** @file\r
2 Opal Specification defined values and structures.\r
3\r
4Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
5This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#ifndef _TCG_STORAGE_OPAL_H_\r
16#define _TCG_STORAGE_OPAL_H_\r
17\r
18#include <IndustryStandard/TcgStorageCore.h>\r
19\r
20#define OPAL_UID_ADMIN_SP TCG_TO_UID(0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x01)\r
21#define OPAL_UID_ADMIN_SP_C_PIN_MSID TCG_TO_UID(0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x84, 0x02)\r
22#define OPAL_UID_ADMIN_SP_C_PIN_SID TCG_TO_UID(0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01)\r
23#define OPAL_UID_LOCKING_SP TCG_TO_UID(0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x02)\r
24\r
25// ADMIN_SP\r
26// Authorities\r
27#define OPAL_ADMIN_SP_ANYBODY_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01)\r
28#define OPAL_ADMIN_SP_ADMINS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02)\r
29#define OPAL_ADMIN_SP_MAKERS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03)\r
30#define OPAL_ADMIN_SP_SID_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06)\r
31#define OPAL_ADMIN_SP_ADMIN1_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x02, 0x01)\r
32#define OPAL_ADMIN_SP_PSID_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0xFF, 0x01)\r
33\r
34#define OPAL_ADMIN_SP_ACTIVATE_METHOD TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x03)\r
35#define OPAL_ADMIN_SP_REVERT_METHOD TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x02)\r
36\r
45df1841
ED
37// ADMIN_SP\r
38// Data Removal mechanism\r
39#define OPAL_UID_ADMIN_SP_DATA_REMOVAL_MECHANISM TCG_TO_UID(0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x00, 0x01)\r
79af8319
ED
40\r
41// LOCKING SP\r
42// Authorities\r
43#define OPAL_LOCKING_SP_ANYBODY_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01)\r
44#define OPAL_LOCKING_SP_ADMINS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02)\r
45#define OPAL_LOCKING_SP_ADMIN1_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x01)\r
46#define OPAL_LOCKING_SP_USERS_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00, 0x00)\r
47#define OPAL_LOCKING_SP_USER1_AUTHORITY TCG_TO_UID(0x00, 0x00, 0x00, 0x09, 0x00, 0x03, 0x00, 0x01)\r
48\r
49#define OPAL_LOCKING_SP_REVERTSP_METHOD TCG_TO_UID(0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11)\r
50\r
51// C_PIN Table Rows\r
52#define OPAL_LOCKING_SP_C_PIN_ADMIN1 TCG_TO_UID( 0x00, 0x00, 0x00, 0x0B, 0x00, 0x01, 0x00, 0x01 )\r
53#define OPAL_LOCKING_SP_C_PIN_USER1 TCG_TO_UID( 0x00, 0x00, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x01 )\r
54\r
55// Locking Table\r
56#define OPAL_LOCKING_SP_LOCKING_GLOBALRANGE TCG_TO_UID( 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x01 )\r
57#define OPAL_LOCKING_SP_LOCKING_RANGE1 TCG_TO_UID( 0x00, 0x00, 0x08, 0x02, 0x00, 0x03, 0x00, 0x01 )\r
58\r
59\r
60// LOCKING SP ACE Table Preconfiguration\r
61#define OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_GET_ALL TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xD0, 0x00 )\r
62#define OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_SET_RDLOCKED TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xE0, 0x00 )\r
63#define OPAL_LOCKING_SP_ACE_LOCKING_GLOBALRANGE_SET_WRLOCKED TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xE8, 0x00 )\r
64\r
65#define OPAL_LOCKING_SP_ACE_K_AES_256_GLOBALRANGE_GENKEY TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xB8, 0x00 )\r
66#define OPAL_LOCKING_SP_ACE_K_AES_128_GLOBALRANGE_GENKEY TCG_TO_UID( 0x00, 0x00, 0x00, 0x08, 0x00, 0x03, 0xB0, 0x00 )\r
67\r
68\r
69// LOCKING SP LockingInfo Table Preconfiguration\r
70#define OPAL_LOCKING_SP_LOCKING_INFO TCG_TO_UID( 0x00, 0x00, 0x08, 0x01, 0x00, 0x00, 0x00, 0x01 )\r
71\r
72#define OPAL_LOCKING_SP_LOCKINGINFO_ALIGNMENTREQUIRED_COL 0x7\r
73#define OPAL_LOCKING_SP_LOCKINGINFO_LOGICALBLOCKSIZE_COL 0x8\r
74#define OPAL_LOCKING_SP_LOCKINGINFO_ALIGNMENTGRANULARITY_COL 0x9\r
75#define OPAL_LOCKING_SP_LOCKINGINFO_LOWESTALIGNEDLBA_COL 0xA\r
76\r
77// K_AES_256 Table Preconfiguration\r
78#define OPAL_LOCKING_SP_K_AES_256_GLOBALRANGE_KEY TCG_TO_UID( 0x00, 0x00, 0x08, 0x06, 0x00, 0x00, 0x00, 0x01 )\r
79\r
80// K_AES_128 Table Preconfiguration\r
81#define OPAL_LOCKING_SP_K_AES_128_GLOBALRANGE_KEY TCG_TO_UID( 0x00, 0x00, 0x08, 0x05, 0x00, 0x00, 0x00, 0x01 )\r
82\r
83// Minimum Properties that an Opal Compliant SD Shall support\r
84#define OPAL_MIN_MAX_COM_PACKET_SIZE 2048\r
85#define OPAL_MIN_MAX_REPONSE_COM_PACKET_SIZE 2048\r
86#define OPAL_MIN_MAX_PACKET_SIZE 2028\r
87#define OPAL_MIN_MAX_IND_TOKEN_SIZE 1992\r
88#define OPAL_MIN_MAX_PACKETS 1\r
89#define OPAL_MIN_MAX_SUBPACKETS 1\r
90#define OPAL_MIN_MAX_METHODS 1\r
91#define OPAL_MIN_MAX_SESSIONS 1\r
92#define OPAL_MIN_MAX_AUTHENTICATIONS 2\r
93#define OPAL_MIN_MAX_TRANSACTION_LIMIT 1\r
94\r
95#define OPAL_ADMIN_SP_PIN_COL 3\r
96#define OPAL_LOCKING_SP_C_PIN_TRYLIMIT_COL 5\r
97#define OPAL_RANDOM_METHOD_MAX_COUNT_SIZE 32\r
98\r
45df1841
ED
99// Data Removal Mechanism column.\r
100#define OPAL_ADMIN_SP_ACTIVE_DATA_REMOVAL_MECHANISM_COL 1\r
101\r
102//\r
103// Supported Data Removal Mechanism.\r
104// Detail see Pyrite SSC v2 spec.\r
105//\r
106typedef enum {\r
107 OverwriteDataErase = 0,\r
108 BlockErase,\r
109 CryptoErase,\r
110 Unmap,\r
111 ResetWritePointers,\r
112 VendorSpecificErase,\r
113 ResearvedMechanism\r
114} SUPPORTED_DATA_REMOVAL_MECHANISM;\r
115\r
79af8319
ED
116#pragma pack(1)\r
117\r
118typedef struct _OPAL_GEOMETRY_REPORTING_FEATURE {\r
119 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
120 UINT8 Reserved[8];\r
121 UINT32 LogicalBlockSizeBE;\r
122 UINT64 AlignmentGranularityBE;\r
123 UINT64 LowestAlignedLBABE;\r
124} OPAL_GEOMETRY_REPORTING_FEATURE;\r
125\r
126typedef struct _OPAL_SINGLE_USER_MODE_FEATURE {\r
127 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
128 UINT32 NumLockingObjectsSupportedBE;\r
129 UINT8 Any : 1;\r
130 UINT8 All : 1;\r
131 UINT8 Policy : 1;\r
132 UINT8 Reserved : 5;\r
133 UINT8 Reserved2[7];\r
134} OPAL_SINGLE_USER_MODE_FEATURE;\r
135\r
136typedef struct _OPAL_DATASTORE_TABLE_FEATURE {\r
137 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
138 UINT16 Reserved;\r
139 UINT16 MaxNumTablesBE;\r
140 UINT32 MaxTotalSizeBE;\r
141 UINT32 SizeAlignmentBE;\r
142} OPAL_DATASTORE_TABLE_FEATURE;\r
143\r
144typedef struct _OPAL_SSCV1_FEATURE_DESCRIPTOR {\r
145 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
146 UINT16 BaseComdIdBE;\r
147 UINT16 NumComIdsBE;\r
148 UINT8 RangeCrossing : 1;\r
149 UINT8 Reserved : 7;\r
150 UINT8 Future[11];\r
151} OPAL_SSCV1_FEATURE_DESCRIPTOR;\r
152\r
153typedef struct _OPAL_SSCV2_FEATURE_DESCRIPTOR {\r
154 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
155 UINT16 BaseComdIdBE;\r
156 UINT16 NumComIdsBE;\r
157 UINT8 Reserved;\r
158 UINT16 NumLockingSpAdminAuthoritiesSupportedBE;\r
159 UINT16 NumLockingSpUserAuthoritiesSupportedBE;\r
160 UINT8 InitialCPINSIDPIN;\r
161 UINT8 CPINSIDPINRevertBehavior;\r
162 UINT8 Future[5];\r
163} OPAL_SSCV2_FEATURE_DESCRIPTOR;\r
164\r
165typedef struct _OPAL_SSCLITE_FEATURE_DESCRIPTOR {\r
166 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
167 UINT16 BaseComdIdBE;\r
168 UINT16 NumComIdsBE;\r
169 UINT8 Reserved[5];\r
170 UINT8 InitialCPINSIDPIN;\r
171 UINT8 CPINSIDPINRevertBehavior;\r
172 UINT8 Future[5];\r
173} OPAL_SSCLITE_FEATURE_DESCRIPTOR;\r
174\r
175typedef struct _PYRITE_SSC_FEATURE_DESCRIPTOR {\r
176 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
177 UINT16 BaseComdIdBE;\r
178 UINT16 NumComIdsBE;\r
179 UINT8 Reserved[5];\r
180 UINT8 InitialCPINSIDPIN;\r
181 UINT8 CPINSIDPINRevertBehavior;\r
182 UINT8 Future[5];\r
183} PYRITE_SSC_FEATURE_DESCRIPTOR;\r
184\r
45df1841
ED
185typedef struct _PYRITE_SSCV2_FEATURE_DESCRIPTOR {\r
186 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
187 UINT16 BaseComdIdBE;\r
188 UINT16 NumComIdsBE;\r
189 UINT8 Reserved[5];\r
190 UINT8 InitialCPINSIDPIN;\r
191 UINT8 CPINSIDPINRevertBehavior;\r
192 UINT8 Future[5];\r
193} PYRITE_SSCV2_FEATURE_DESCRIPTOR;\r
194\r
195typedef struct _DATA_REMOVAL_FEATURE_DESCRIPTOR {\r
196 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER Header;\r
197 UINT8 Reserved;\r
198 UINT8 OperationProcessing : 1;\r
199 UINT8 Reserved2 : 7;\r
200 UINT8 RemovalMechanism;\r
201 UINT8 FormatBit0 : 1; // Data Removal Time Format for Bit 0\r
202 UINT8 FormatBit1 : 1; // Data Removal Time Format for Bit 1\r
203 UINT8 FormatBit2 : 1; // Data Removal Time Format for Bit 2\r
204 UINT8 FormatBit3 : 1; // Data Removal Time Format for Bit 3\r
205 UINT8 FormatBit4 : 1; // Data Removal Time Format for Bit 4\r
206 UINT8 FormatBit5 : 1; // Data Removal Time Format for Bit 5\r
207 UINT8 Reserved3 : 2;\r
208 UINT16 TimeBit0; // Data Removal Time for Supported Data Removal Mechanism Bit 0\r
209 UINT16 TimeBit1; // Data Removal Time for Supported Data Removal Mechanism Bit 1\r
210 UINT16 TimeBit2; // Data Removal Time for Supported Data Removal Mechanism Bit 2\r
211 UINT16 TimeBit3; // Data Removal Time for Supported Data Removal Mechanism Bit 3\r
212 UINT16 TimeBit4; // Data Removal Time for Supported Data Removal Mechanism Bit 4\r
213 UINT16 TimeBit5; // Data Removal Time for Supported Data Removal Mechanism Bit 5\r
214 UINT8 Future[16];\r
215} DATA_REMOVAL_FEATURE_DESCRIPTOR;\r
216\r
79af8319
ED
217typedef union {\r
218 TCG_LEVEL0_FEATURE_DESCRIPTOR_HEADER CommonHeader;\r
219 TCG_TPER_FEATURE_DESCRIPTOR Tper;\r
220 TCG_LOCKING_FEATURE_DESCRIPTOR Locking;\r
221 OPAL_GEOMETRY_REPORTING_FEATURE Geometry;\r
222 OPAL_SINGLE_USER_MODE_FEATURE SingleUser;\r
223 OPAL_DATASTORE_TABLE_FEATURE DataStore;\r
224 OPAL_SSCV1_FEATURE_DESCRIPTOR OpalSscV1;\r
225 OPAL_SSCV2_FEATURE_DESCRIPTOR OpalSscV2;\r
226 OPAL_SSCLITE_FEATURE_DESCRIPTOR OpalSscLite;\r
227 PYRITE_SSC_FEATURE_DESCRIPTOR PyriteSsc;\r
45df1841 228 PYRITE_SSCV2_FEATURE_DESCRIPTOR PyriteSscV2;\r
19d539af 229 TCG_BLOCK_SID_FEATURE_DESCRIPTOR BlockSid;\r
45df1841 230 DATA_REMOVAL_FEATURE_DESCRIPTOR DataRemoval;\r
79af8319
ED
231} OPAL_LEVEL0_FEATURE_DESCRIPTOR;\r
232\r
233#pragma pack()\r
234\r
235#endif // _OPAL_H_\r