xref: /freebsd/sys/dev/pms/RefTisa/tisa/api/tidefs.h (revision 2ff63af9b88c7413b7d71715b5532625752a248e)
1*4e1bc9a0SAchim Leubner /*******************************************************************************
2*4e1bc9a0SAchim Leubner *Copyright (c) 2014 PMC-Sierra, Inc.  All rights reserved.
3*4e1bc9a0SAchim Leubner *
4*4e1bc9a0SAchim Leubner *Redistribution and use in source and binary forms, with or without modification, are permitted provided
5*4e1bc9a0SAchim Leubner *that the following conditions are met:
6*4e1bc9a0SAchim Leubner *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
7*4e1bc9a0SAchim Leubner *following disclaimer.
8*4e1bc9a0SAchim Leubner *2. Redistributions in binary form must reproduce the above copyright notice,
9*4e1bc9a0SAchim Leubner *this list of conditions and the following disclaimer in the documentation and/or other materials provided
10*4e1bc9a0SAchim Leubner *with the distribution.
11*4e1bc9a0SAchim Leubner *
12*4e1bc9a0SAchim Leubner *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
13*4e1bc9a0SAchim Leubner *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14*4e1bc9a0SAchim Leubner *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15*4e1bc9a0SAchim Leubner *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16*4e1bc9a0SAchim Leubner *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
17*4e1bc9a0SAchim Leubner *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18*4e1bc9a0SAchim Leubner *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
19*4e1bc9a0SAchim Leubner *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
20*4e1bc9a0SAchim Leubner *
21*4e1bc9a0SAchim Leubner *
22*4e1bc9a0SAchim Leubner ********************************************************************************/
23*4e1bc9a0SAchim Leubner /********************************************************************************
24*4e1bc9a0SAchim Leubner **
25*4e1bc9a0SAchim Leubner ** Version Control Information:
26*4e1bc9a0SAchim Leubner **
27*4e1bc9a0SAchim Leubner **
28*4e1bc9a0SAchim Leubner *******************************************************************************/
29*4e1bc9a0SAchim Leubner /********************************************************************************
30*4e1bc9a0SAchim Leubner **
31*4e1bc9a0SAchim Leubner *   tidefs.h
32*4e1bc9a0SAchim Leubner *
33*4e1bc9a0SAchim Leubner *   Abstract:   This module contains enum and #define definition used
34*4e1bc9a0SAchim Leubner *               by Transport Independent API (TIAPI) Layer.
35*4e1bc9a0SAchim Leubner *
36*4e1bc9a0SAchim Leubner ********************************************************************************/
37*4e1bc9a0SAchim Leubner 
38*4e1bc9a0SAchim Leubner #ifndef TIDEFS_H
39*4e1bc9a0SAchim Leubner 
40*4e1bc9a0SAchim Leubner #define TIDEFS_H
41*4e1bc9a0SAchim Leubner 
42*4e1bc9a0SAchim Leubner #include <dev/pms/freebsd/driver/common/osenv.h>
43*4e1bc9a0SAchim Leubner #include <dev/pms/freebsd/driver/common/ostypes.h>
44*4e1bc9a0SAchim Leubner #include <dev/pms/freebsd/driver/common/osdebug.h>
45*4e1bc9a0SAchim Leubner 
46*4e1bc9a0SAchim Leubner /*****************************************************************************
47*4e1bc9a0SAchim Leubner  *  INITIATOR/TARGET SHARED DEFINES AND ENUMS
48*4e1bc9a0SAchim Leubner  *****************************************************************************/
49*4e1bc9a0SAchim Leubner 
50*4e1bc9a0SAchim Leubner /*
51*4e1bc9a0SAchim Leubner  *  Option mask parameter for tiCOMPortStart()
52*4e1bc9a0SAchim Leubner  */
53*4e1bc9a0SAchim Leubner #define PORTAL_ADD_MASK   0x00000001
54*4e1bc9a0SAchim Leubner 
55*4e1bc9a0SAchim Leubner /*
56*4e1bc9a0SAchim Leubner  * Maximum memory descriptor for Low-Level layer.
57*4e1bc9a0SAchim Leubner  */
58*4e1bc9a0SAchim Leubner #define MAX_LL_LAYER_MEM_DESCRIPTORS  64
59*4e1bc9a0SAchim Leubner 
60*4e1bc9a0SAchim Leubner 
61*4e1bc9a0SAchim Leubner /*
62*4e1bc9a0SAchim Leubner  * TI API function return types
63*4e1bc9a0SAchim Leubner  */
64*4e1bc9a0SAchim Leubner typedef enum
65*4e1bc9a0SAchim Leubner {
66*4e1bc9a0SAchim Leubner   tiSuccess,
67*4e1bc9a0SAchim Leubner   tiError,
68*4e1bc9a0SAchim Leubner   tiBusy,
69*4e1bc9a0SAchim Leubner   tiIONoDevice,
70*4e1bc9a0SAchim Leubner   tiMemoryTooLarge,
71*4e1bc9a0SAchim Leubner   tiMemoryNotAvail,
72*4e1bc9a0SAchim Leubner   tiInvalidHandle,
73*4e1bc9a0SAchim Leubner   tiNotSupported,
74*4e1bc9a0SAchim Leubner   tiReject,
75*4e1bc9a0SAchim Leubner   tiIncorrectLun,
76*4e1bc9a0SAchim Leubner   tiDeviceBusy,
77*4e1bc9a0SAchim Leubner } tiStatus_t;
78*4e1bc9a0SAchim Leubner 
79*4e1bc9a0SAchim Leubner /*
80*4e1bc9a0SAchim Leubner  * Type of memory, OR-ed the bit fields.
81*4e1bc9a0SAchim Leubner  */
82*4e1bc9a0SAchim Leubner 
83*4e1bc9a0SAchim Leubner /* Bit 0-1, cached or dma-uncached dma-cached */
84*4e1bc9a0SAchim Leubner 
85*4e1bc9a0SAchim Leubner #define TI_DMA_MEM        0x00000000      /* uncached DMA capable memory   */
86*4e1bc9a0SAchim Leubner #define TI_CACHED_MEM     0x00000001      /* cached non-DMA capable memory */
87*4e1bc9a0SAchim Leubner #define TI_CACHED_DMA_MEM 0x00000002      /* cached DMA capable memory */
88*4e1bc9a0SAchim Leubner #define TI_DMA_MEM_CHIP   0x00000003      /* Internal HW/chip memory  */
89*4e1bc9a0SAchim Leubner 
90*4e1bc9a0SAchim Leubner /* Bit2-3: location of memory */
91*4e1bc9a0SAchim Leubner #define TI_LOC_HOST     0x00000000      /* default, allocated from host */
92*4e1bc9a0SAchim Leubner #define TI_LOC_ON_CHIP  0x00000004      /* memory is from on-chip RAM   */
93*4e1bc9a0SAchim Leubner #define TI_LOC_ON_CARD  0x00000008      /* memory is from on-card RAM   */
94*4e1bc9a0SAchim Leubner 
95*4e1bc9a0SAchim Leubner /* Type of SGL list
96*4e1bc9a0SAchim Leubner  *
97*4e1bc9a0SAchim Leubner  */
98*4e1bc9a0SAchim Leubner typedef enum
99*4e1bc9a0SAchim Leubner {
100*4e1bc9a0SAchim Leubner   tiSgl=0,
101*4e1bc9a0SAchim Leubner   tiSglList=0x80000000,
102*4e1bc9a0SAchim Leubner   tiExtHdr
103*4e1bc9a0SAchim Leubner }tiSglType_t;
104*4e1bc9a0SAchim Leubner 
105*4e1bc9a0SAchim Leubner /*
106*4e1bc9a0SAchim Leubner  * Type of mutex semaphoring/synchronization
107*4e1bc9a0SAchim Leubner  */
108*4e1bc9a0SAchim Leubner typedef enum
109*4e1bc9a0SAchim Leubner {
110*4e1bc9a0SAchim Leubner   tiSingleMutexLockPerPort,
111*4e1bc9a0SAchim Leubner   tiOneMutexLockPerQueue
112*4e1bc9a0SAchim Leubner }tiMutexType_t;
113*4e1bc9a0SAchim Leubner 
114*4e1bc9a0SAchim Leubner /*
115*4e1bc9a0SAchim Leubner  * Context (interrupt or non-interrupt)
116*4e1bc9a0SAchim Leubner  */
117*4e1bc9a0SAchim Leubner typedef enum
118*4e1bc9a0SAchim Leubner {
119*4e1bc9a0SAchim Leubner   tiInterruptContext,
120*4e1bc9a0SAchim Leubner   tiNonInterruptContext
121*4e1bc9a0SAchim Leubner }tiIntContextType_t;
122*4e1bc9a0SAchim Leubner 
123*4e1bc9a0SAchim Leubner /*
124*4e1bc9a0SAchim Leubner  * Port Event type.
125*4e1bc9a0SAchim Leubner  */
126*4e1bc9a0SAchim Leubner typedef enum
127*4e1bc9a0SAchim Leubner {
128*4e1bc9a0SAchim Leubner   tiPortPanic,
129*4e1bc9a0SAchim Leubner   tiPortResetComplete,
130*4e1bc9a0SAchim Leubner   tiPortNameServerDown,
131*4e1bc9a0SAchim Leubner   tiPortLinkDown,
132*4e1bc9a0SAchim Leubner   tiPortLinkUp,
133*4e1bc9a0SAchim Leubner   tiPortStarted,
134*4e1bc9a0SAchim Leubner   tiPortStopped,
135*4e1bc9a0SAchim Leubner   tiPortShutdown,
136*4e1bc9a0SAchim Leubner   tiPortDiscoveryReady,
137*4e1bc9a0SAchim Leubner   tiPortResetNeeded,
138*4e1bc9a0SAchim Leubner   tiEncryptOperation,
139*4e1bc9a0SAchim Leubner   tiModePageOperation
140*4e1bc9a0SAchim Leubner } tiPortEvent_t;
141*4e1bc9a0SAchim Leubner 
142*4e1bc9a0SAchim Leubner /*
143*4e1bc9a0SAchim Leubner  * tiEncryptOperation Event types
144*4e1bc9a0SAchim Leubner  */
145*4e1bc9a0SAchim Leubner typedef enum
146*4e1bc9a0SAchim Leubner {
147*4e1bc9a0SAchim Leubner   tiEncryptGetInfo,
148*4e1bc9a0SAchim Leubner   tiEncryptSetMode,
149*4e1bc9a0SAchim Leubner   tiEncryptKekAdd,
150*4e1bc9a0SAchim Leubner   tiEncryptDekInvalidate,
151*4e1bc9a0SAchim Leubner   tiEncryptKekStore,
152*4e1bc9a0SAchim Leubner   tiEncryptKekLoad,
153*4e1bc9a0SAchim Leubner   tiEncryptAttribRegUpdate,
154*4e1bc9a0SAchim Leubner   tiEncryptDekAdd,
155*4e1bc9a0SAchim Leubner   /* new */
156*4e1bc9a0SAchim Leubner   tiEncryptOperatorManagement,
157*4e1bc9a0SAchim Leubner   tiEncryptSelfTest,
158*4e1bc9a0SAchim Leubner   tiEncryptSetOperator,
159*4e1bc9a0SAchim Leubner   tiEncryptGetOperator
160*4e1bc9a0SAchim Leubner } tiEncryptOp_t;
161*4e1bc9a0SAchim Leubner 
162*4e1bc9a0SAchim Leubner /*
163*4e1bc9a0SAchim Leubner  * ostiPortEvent() status values for tiCOMOperatorManagement()
164*4e1bc9a0SAchim Leubner  */
165*4e1bc9a0SAchim Leubner typedef enum
166*4e1bc9a0SAchim Leubner {
167*4e1bc9a0SAchim Leubner   tiOMNotSupported,
168*4e1bc9a0SAchim Leubner   tiOMIllegalParam,
169*4e1bc9a0SAchim Leubner   tiOMKENUnwrapFail,
170*4e1bc9a0SAchim Leubner   tiOMNvramOpFailure,
171*4e1bc9a0SAchim Leubner } tiOperatorManagementStatus_t;
172*4e1bc9a0SAchim Leubner 
173*4e1bc9a0SAchim Leubner /*
174*4e1bc9a0SAchim Leubner  * ostiInitiatorIOCompleted() and ostiTargetIOError() status values
175*4e1bc9a0SAchim Leubner  */
176*4e1bc9a0SAchim Leubner typedef enum
177*4e1bc9a0SAchim Leubner {
178*4e1bc9a0SAchim Leubner   tiIOSuccess,
179*4e1bc9a0SAchim Leubner   tiIOOverRun,
180*4e1bc9a0SAchim Leubner   tiIOUnderRun,
181*4e1bc9a0SAchim Leubner   tiIOFailed,
182*4e1bc9a0SAchim Leubner   tiIODifError,
183*4e1bc9a0SAchim Leubner   tiIOEncryptError,
184*4e1bc9a0SAchim Leubner } tiIOStatus_t;
185*4e1bc9a0SAchim Leubner 
186*4e1bc9a0SAchim Leubner /*
187*4e1bc9a0SAchim Leubner  * ostiInitiatorIOCompleted() and ostiTargetIOError() statusDetail values
188*4e1bc9a0SAchim Leubner  */
189*4e1bc9a0SAchim Leubner typedef enum
190*4e1bc9a0SAchim Leubner {
191*4e1bc9a0SAchim Leubner   tiSMPSuccess,
192*4e1bc9a0SAchim Leubner   tiSMPAborted,
193*4e1bc9a0SAchim Leubner   tiSMPFailed,
194*4e1bc9a0SAchim Leubner } tiSMPStatus_t;
195*4e1bc9a0SAchim Leubner 
196*4e1bc9a0SAchim Leubner typedef enum
197*4e1bc9a0SAchim Leubner {
198*4e1bc9a0SAchim Leubner   tiDetailBusy,
199*4e1bc9a0SAchim Leubner   tiDetailNotValid,
200*4e1bc9a0SAchim Leubner   tiDetailNoLogin,
201*4e1bc9a0SAchim Leubner   tiDetailAbortLogin,
202*4e1bc9a0SAchim Leubner   tiDetailAbortReset,
203*4e1bc9a0SAchim Leubner   tiDetailAborted,
204*4e1bc9a0SAchim Leubner   tiDetailDifMismatch,
205*4e1bc9a0SAchim Leubner   tiDetailDifAppTagMismatch,
206*4e1bc9a0SAchim Leubner   tiDetailDifRefTagMismatch,
207*4e1bc9a0SAchim Leubner   tiDetailDifCrcMismatch,
208*4e1bc9a0SAchim Leubner   tiDetailDekKeyCacheMiss,
209*4e1bc9a0SAchim Leubner   tiDetailCipherModeInvalid,
210*4e1bc9a0SAchim Leubner   tiDetailDekIVMismatch,
211*4e1bc9a0SAchim Leubner   tiDetailDekRamInterfaceError,
212*4e1bc9a0SAchim Leubner   tiDetailDekIndexOutofBounds,
213*4e1bc9a0SAchim Leubner   tiDetailOtherError,
214*4e1bc9a0SAchim Leubner   tiDetailOtherErrorNoRetry,
215*4e1bc9a0SAchim Leubner } tiIOStatusDetail_t;
216*4e1bc9a0SAchim Leubner 
217*4e1bc9a0SAchim Leubner /*
218*4e1bc9a0SAchim Leubner  * IOCTL Status Codes
219*4e1bc9a0SAchim Leubner  */
220*4e1bc9a0SAchim Leubner #define IOCTL_ERR_STATUS_OK                  0x00
221*4e1bc9a0SAchim Leubner #define IOCTL_ERR_STATUS_MORE_DATA           0x01
222*4e1bc9a0SAchim Leubner #define IOCTL_ERR_STATUS_NO_MORE_DATA        0x02
223*4e1bc9a0SAchim Leubner #define IOCTL_ERR_STATUS_INVALID_CODE        0x03
224*4e1bc9a0SAchim Leubner #define IOCTL_ERR_STATUS_INVALID_DEVICE      0x04
225*4e1bc9a0SAchim Leubner #define IOCTL_ERR_STATUS_NOT_RESPONDING      0x05
226*4e1bc9a0SAchim Leubner #define IOCTL_ERR_STATUS_INTERNAL_ERROR      0x06
227*4e1bc9a0SAchim Leubner #define IOCTL_ERR_STATUS_NOT_SUPPORTED       0x07
228*4e1bc9a0SAchim Leubner #define IOCTL_ERR_FW_EVENTLOG_DISABLED       0x08
229*4e1bc9a0SAchim Leubner #define IOCTL_MJ_FATAL_ERROR_SOFT_RESET_TRIG 0x72
230*4e1bc9a0SAchim Leubner #define IOCTL_MJ_FATAL_ERR_CHK_SEND_TRUE     0x77
231*4e1bc9a0SAchim Leubner #define IOCTL_MJ_FATAL_ERR_CHK_SEND_FALSE    0x76
232*4e1bc9a0SAchim Leubner #define IOCTL_ERROR_NO_FATAL_ERROR           0x77
233*4e1bc9a0SAchim Leubner 
234*4e1bc9a0SAchim Leubner #define ADAPTER_WWN_START_OFFSET	     0x804
235*4e1bc9a0SAchim Leubner #define ADAPTER_WWN_END_OFFSET		     0x80b
236*4e1bc9a0SAchim Leubner #define ADAPTER_WWN_SPC_START_OFFSET	     0x704
237*4e1bc9a0SAchim Leubner #define ADAPTER_WWN_SPC_END_OFFSET	     0x70b
238*4e1bc9a0SAchim Leubner 
239*4e1bc9a0SAchim Leubner /*
240*4e1bc9a0SAchim Leubner  * IOCTL Return Codes
241*4e1bc9a0SAchim Leubner  */
242*4e1bc9a0SAchim Leubner #define IOCTL_CALL_SUCCESS                  0x00
243*4e1bc9a0SAchim Leubner #define IOCTL_CALL_FAIL                     0x01
244*4e1bc9a0SAchim Leubner #define IOCTL_CALL_PENDING                  0x02
245*4e1bc9a0SAchim Leubner #define IOCTL_CALL_INVALID_CODE             0x03
246*4e1bc9a0SAchim Leubner #define IOCTL_CALL_INVALID_DEVICE           0x04
247*4e1bc9a0SAchim Leubner #define IOCTL_CALL_TIMEOUT                  0x08
248*4e1bc9a0SAchim Leubner 
249*4e1bc9a0SAchim Leubner /*
250*4e1bc9a0SAchim Leubner  * DIF operation
251*4e1bc9a0SAchim Leubner  */
252*4e1bc9a0SAchim Leubner #define DIF_INSERT                0
253*4e1bc9a0SAchim Leubner #define DIF_VERIFY_FORWARD        1
254*4e1bc9a0SAchim Leubner #define DIF_VERIFY_DELETE         2
255*4e1bc9a0SAchim Leubner #define DIF_VERIFY_REPLACE        3
256*4e1bc9a0SAchim Leubner 
257*4e1bc9a0SAchim Leubner #define DIF_UDT_SIZE              6
258*4e1bc9a0SAchim Leubner 
259*4e1bc9a0SAchim Leubner /*
260*4e1bc9a0SAchim Leubner  * Login state in tiDeviceInfo_t
261*4e1bc9a0SAchim Leubner  */
262*4e1bc9a0SAchim Leubner #define INI_LGN_STATE_FREE            0x00000000
263*4e1bc9a0SAchim Leubner #define INI_LGN_STATE_LOGIN           0x00000001
264*4e1bc9a0SAchim Leubner #define INI_LGN_STATE_FAIL            0x00000002
265*4e1bc9a0SAchim Leubner #define INI_LGN_STATE_OTHERS          0x0000000F
266*4e1bc9a0SAchim Leubner 
267*4e1bc9a0SAchim Leubner /*
268*4e1bc9a0SAchim Leubner  * SecurityCipherMode in tiEncryptInfo_t and tiCOMEncryptSetMode()
269*4e1bc9a0SAchim Leubner  */
270*4e1bc9a0SAchim Leubner #define TI_ENCRYPT_SEC_MODE_FACT_INIT 0x00000000
271*4e1bc9a0SAchim Leubner #define TI_ENCRYPT_SEC_MODE_A         0x40000000
272*4e1bc9a0SAchim Leubner #define TI_ENCRYPT_SEC_MODE_B         0x80000000
273*4e1bc9a0SAchim Leubner #define TI_ENCRYPT_ATTRIB_ALLOW_SMF   0x00000200
274*4e1bc9a0SAchim Leubner #define TI_ENCRYPT_ATTRIB_AUTH_REQ    0x00000100
275*4e1bc9a0SAchim Leubner #define TI_ENCRYPT_ATTRIB_CIPHER_XTS  0x00000002
276*4e1bc9a0SAchim Leubner #define TI_ENCRYPT_ATTRIB_CIPHER_ECB  0x00000001
277*4e1bc9a0SAchim Leubner 
278*4e1bc9a0SAchim Leubner /*
279*4e1bc9a0SAchim Leubner  * Status in tiEncryptInfo_t
280*4e1bc9a0SAchim Leubner  */
281*4e1bc9a0SAchim Leubner #define TI_ENCRYPT_STATUS_NO_NVRAM        0x00000001
282*4e1bc9a0SAchim Leubner #define TI_ENCRYPT_STATUS_NVRAM_ERROR     0x00000002
283*4e1bc9a0SAchim Leubner #define TI_ENCRYPT_STATUS_ENGINE_ERROR    0x00000004
284*4e1bc9a0SAchim Leubner 
285*4e1bc9a0SAchim Leubner /*
286*4e1bc9a0SAchim Leubner  * EncryptMode in tiEncrypt_t
287*4e1bc9a0SAchim Leubner  */
288*4e1bc9a0SAchim Leubner #define TI_ENCRYPT_MODE_XTS_AES       0x00400000
289*4e1bc9a0SAchim Leubner #define TI_ENCRYPT_MODE_ECB_AES       0x00000000
290*4e1bc9a0SAchim Leubner 
291*4e1bc9a0SAchim Leubner /*
292*4e1bc9a0SAchim Leubner  * Encrypt blob types
293*4e1bc9a0SAchim Leubner  */
294*4e1bc9a0SAchim Leubner #define TI_PLAINTEXT          0
295*4e1bc9a0SAchim Leubner #define TI_ENCRYPTED_KEK_PMCA 1
296*4e1bc9a0SAchim Leubner #define TI_ENCRYPTED_KEK_PMCB 2
297*4e1bc9a0SAchim Leubner 
298*4e1bc9a0SAchim Leubner /*
299*4e1bc9a0SAchim Leubner  * Encrypt DEK table key entry sizes
300*4e1bc9a0SAchim Leubner  */
301*4e1bc9a0SAchim Leubner #define TI_DEK_TABLE_KEY_SIZE16 0
302*4e1bc9a0SAchim Leubner #define TI_DEK_TABLE_KEY_SIZE24 1
303*4e1bc9a0SAchim Leubner #define TI_DEK_TABLE_KEY_SIZE32 2
304*4e1bc9a0SAchim Leubner #define TI_DEK_TABLE_KEY_SIZE40 3
305*4e1bc9a0SAchim Leubner #define TI_DEK_TABLE_KEY_SIZE48 4
306*4e1bc9a0SAchim Leubner #define TI_DEK_TABLE_KEY_SIZE56 5
307*4e1bc9a0SAchim Leubner #define TI_DEK_TABLE_KEY_SIZE64 6
308*4e1bc9a0SAchim Leubner #define TI_DEK_TABLE_KEY_SIZE72 7
309*4e1bc9a0SAchim Leubner #define TI_DEK_TABLE_KEY_SIZE80 8
310*4e1bc9a0SAchim Leubner 
311*4e1bc9a0SAchim Leubner /* KEK blob size and DEK blob size and host DEK table entry number */
312*4e1bc9a0SAchim Leubner #define TI_KEK_BLOB_SIZE           48
313*4e1bc9a0SAchim Leubner #define TI_KEK_MAX_TABLE_ENTRIES   8
314*4e1bc9a0SAchim Leubner 
315*4e1bc9a0SAchim Leubner #define TI_DEK_MAX_TABLES          2
316*4e1bc9a0SAchim Leubner #define TI_DEK_MAX_TABLE_ENTRIES   (1024*4)
317*4e1bc9a0SAchim Leubner 
318*4e1bc9a0SAchim Leubner #define TI_DEK_BLOB_SIZE           80
319*4e1bc9a0SAchim Leubner 
320*4e1bc9a0SAchim Leubner 
321*4e1bc9a0SAchim Leubner /************************************************************
322*4e1bc9a0SAchim Leubner *  tiHWEventMode_t page operation definitions
323*4e1bc9a0SAchim Leubner ************************************************************/
324*4e1bc9a0SAchim Leubner #define tiModePageGet                                    1
325*4e1bc9a0SAchim Leubner #define tiModePageSet                                    2
326*4e1bc9a0SAchim Leubner 
327*4e1bc9a0SAchim Leubner /* controller configuration page code */
328*4e1bc9a0SAchim Leubner #define TI_SAS_PROTOCOL_TIMER_CONFIG_PAGE     0x04
329*4e1bc9a0SAchim Leubner #define TI_INTERRUPT_CONFIGURATION_PAGE       0x05
330*4e1bc9a0SAchim Leubner #define TI_ENCRYPTION_GENERAL_CONFIG_PAGE     0x20
331*4e1bc9a0SAchim Leubner #define TI_ENCRYPTION_DEK_CONFIG_PAGE         0x21
332*4e1bc9a0SAchim Leubner #define TI_ENCRYPTION_CONTROL_PARM_PAGE       0x22
333*4e1bc9a0SAchim Leubner #define TI_ENCRYPTION_HMAC_CONFIG_PAGE        0x23
334*4e1bc9a0SAchim Leubner 
335*4e1bc9a0SAchim Leubner 
336*4e1bc9a0SAchim Leubner /* encryption self test type */
337*4e1bc9a0SAchim Leubner #define TI_ENCRYPTION_TEST_TYPE_BIST          0x01
338*4e1bc9a0SAchim Leubner #define TI_ENCRYPTION_TEST_TYPE_HMAC          0x02
339*4e1bc9a0SAchim Leubner 
340*4e1bc9a0SAchim Leubner /* SHA algorithm type */
341*4e1bc9a0SAchim Leubner #define TI_SHA_ALG_1                          0x04
342*4e1bc9a0SAchim Leubner #define TI_SHA_ALG_256                        0x08
343*4e1bc9a0SAchim Leubner #define TI_SHA_ALG_224                        0x10
344*4e1bc9a0SAchim Leubner #define TI_SHA_ALG_512                        0x20
345*4e1bc9a0SAchim Leubner #define TI_SHA_ALG_384                        0x40
346*4e1bc9a0SAchim Leubner 
347*4e1bc9a0SAchim Leubner #define TI_SHA_1_DIGEST_SIZE                    20
348*4e1bc9a0SAchim Leubner #define TI_SHA_256_DIGEST_SIZE                  32
349*4e1bc9a0SAchim Leubner #define TI_SHA_224_DIGEST_SIZE                  28
350*4e1bc9a0SAchim Leubner #define TI_SHA_512_DIGEST_SIZE                  64
351*4e1bc9a0SAchim Leubner #define TI_SHA_384_DIGEST_SIZE                  48
352*4e1bc9a0SAchim Leubner 
353*4e1bc9a0SAchim Leubner 
354*4e1bc9a0SAchim Leubner /*****************************************************************************
355*4e1bc9a0SAchim Leubner  *  INITIATOR SPECIFIC DEFINES AND ENUMS
356*4e1bc9a0SAchim Leubner  *****************************************************************************/
357*4e1bc9a0SAchim Leubner 
358*4e1bc9a0SAchim Leubner /*
359*4e1bc9a0SAchim Leubner  * ostiInitiatorIOCompleted() statusDetail contains SCSI status,
360*4e1bc9a0SAchim Leubner  * when status passed in ostiInitiatorIOCompleted() is tiIOSuccess.
361*4e1bc9a0SAchim Leubner  */
362*4e1bc9a0SAchim Leubner #define SCSI_STAT_GOOD              0x00
363*4e1bc9a0SAchim Leubner #define SCSI_STAT_CHECK_CONDITION   0x02
364*4e1bc9a0SAchim Leubner #define SCSI_STAT_CONDITION_MET     0x04
365*4e1bc9a0SAchim Leubner #define SCSI_STAT_BUSY              0x08
366*4e1bc9a0SAchim Leubner #define SCSI_STAT_INTERMEDIATE      0x10
367*4e1bc9a0SAchim Leubner #define SCSI_STAT_INTER_CONDIT_MET  0x14
368*4e1bc9a0SAchim Leubner #define SCSI_STAT_RESV_CONFLICT     0x18
369*4e1bc9a0SAchim Leubner #define SCSI_STAT_COMMANDTERMINATED 0x22
370*4e1bc9a0SAchim Leubner #define SCSI_STAT_TASK_SET_FULL     0x28
371*4e1bc9a0SAchim Leubner #define SCSI_STAT_ACA_ACTIVE        0x30
372*4e1bc9a0SAchim Leubner #define SCSI_STAT_TASK_ABORTED      0x40
373*4e1bc9a0SAchim Leubner 
374*4e1bc9a0SAchim Leubner /*
375*4e1bc9a0SAchim Leubner 01: soft error
376*4e1bc9a0SAchim Leubner 02: not ready
377*4e1bc9a0SAchim Leubner 03: medium error
378*4e1bc9a0SAchim Leubner 04: hardware error
379*4e1bc9a0SAchim Leubner 05: illegal request
380*4e1bc9a0SAchim Leubner 06: unit attention
381*4e1bc9a0SAchim Leubner 0b: abort command
382*4e1bc9a0SAchim Leubner */
383*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_NO_SENSE         0x00
384*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_RECOVERED_ERROR  0x01
385*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_NOT_READY        0x02
386*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_MEDIUM_ERROR     0x03
387*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_HARDWARE_ERROR   0x04
388*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_ILLEGAL_REQUEST  0x05
389*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_UNIT_ATTENTION   0x06
390*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_DATA_PROTECT     0x07
391*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_BLANK_CHECK      0x08
392*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_UNIQUE           0x09
393*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_COPY_ABORTED     0x0A
394*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_ABORTED_COMMAND  0x0B
395*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_EQUAL            0x0C
396*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_VOL_OVERFLOW     0x0D
397*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_MISCOMPARE       0x0E
398*4e1bc9a0SAchim Leubner #define SCSI_SENSE_KEY_RESERVED         0x0F
399*4e1bc9a0SAchim Leubner 
400*4e1bc9a0SAchim Leubner 
401*4e1bc9a0SAchim Leubner 
402*4e1bc9a0SAchim Leubner 
403*4e1bc9a0SAchim Leubner /*
404*4e1bc9a0SAchim Leubner  * Reset option in tiCOMReset()
405*4e1bc9a0SAchim Leubner  */
406*4e1bc9a0SAchim Leubner typedef enum
407*4e1bc9a0SAchim Leubner {
408*4e1bc9a0SAchim Leubner   tiSoftReset,
409*4e1bc9a0SAchim Leubner   tiHardReset,
410*4e1bc9a0SAchim Leubner   tiAutoReset
411*4e1bc9a0SAchim Leubner } tiReset_t;
412*4e1bc9a0SAchim Leubner 
413*4e1bc9a0SAchim Leubner /*
414*4e1bc9a0SAchim Leubner  * Bit 0 Mask for the persistent option in tiINIDiscoverTargets()
415*4e1bc9a0SAchim Leubner  */
416*4e1bc9a0SAchim Leubner #define NORMAL_ASSIGN_MASK            0x00000000
417*4e1bc9a0SAchim Leubner #define FORCE_PERSISTENT_ASSIGN_MASK  0x00000001
418*4e1bc9a0SAchim Leubner 
419*4e1bc9a0SAchim Leubner /*
420*4e1bc9a0SAchim Leubner  * Bit 1 Mask for the auto login option in tiINIDiscoverTargets()
421*4e1bc9a0SAchim Leubner  */
422*4e1bc9a0SAchim Leubner #define AUTO_LOGIN_MASK               0x00000000
423*4e1bc9a0SAchim Leubner #define NO_AUTO_LOGIN_MASK            0x00000002
424*4e1bc9a0SAchim Leubner 
425*4e1bc9a0SAchim Leubner 
426*4e1bc9a0SAchim Leubner /*
427*4e1bc9a0SAchim Leubner  * Task Management task used in tiINITaskManagement()
428*4e1bc9a0SAchim Leubner  *
429*4e1bc9a0SAchim Leubner  * 1 AG_ABORT TASK - aborts the task identified by the Referenced  Task Tag field.
430*4e1bc9a0SAchim Leubner  * 2 AG_ABORT TASK SET - aborts all Tasks issued by this initiator on the Logical Unit
431*4e1bc9a0SAchim Leubner  * 3 AG_CLEAR ACA - clears the Auto Contingent Allegiance condition.
432*4e1bc9a0SAchim Leubner  * 4 AG_CLEAR TASK SET - Aborts all Tasks (from all initiators) for the Logical Unit.
433*4e1bc9a0SAchim Leubner  * 5 AG_LOGICAL UNIT RESET
434*4e1bc9a0SAchim Leubner  * 6 AG_TARGET WARM RESET  - iSCSI only
435*4e1bc9a0SAchim Leubner  * 7 AG_TARGET_COLD_RESET  - iSCSI only
436*4e1bc9a0SAchim Leubner  * 8 AG_TASK_REASSIGN      - iSCSI only
437*4e1bc9a0SAchim Leubner  * 9 AG_QUERY_TASK         - SAS only
438*4e1bc9a0SAchim Leubner  */
439*4e1bc9a0SAchim Leubner 
440*4e1bc9a0SAchim Leubner #define AG_ABORT_TASK          1
441*4e1bc9a0SAchim Leubner #define AG_ABORT_TASK_SET      2
442*4e1bc9a0SAchim Leubner #define AG_CLEAR_ACA           3
443*4e1bc9a0SAchim Leubner #define AG_CLEAR_TASK_SET      4
444*4e1bc9a0SAchim Leubner #define AG_LOGICAL_UNIT_RESET  5
445*4e1bc9a0SAchim Leubner #define AG_TARGET_WARM_RESET   6    /* iSCSI only */
446*4e1bc9a0SAchim Leubner #define AG_TARGET_COLD_RESET   7    /* iSCSI only */
447*4e1bc9a0SAchim Leubner #define AG_TASK_REASSIGN       8    /* iSCSI only */
448*4e1bc9a0SAchim Leubner #define AG_QUERY_TASK          9    /* SAS only   */
449*4e1bc9a0SAchim Leubner 
450*4e1bc9a0SAchim Leubner 
451*4e1bc9a0SAchim Leubner /*
452*4e1bc9a0SAchim Leubner  * Event types for ostiInitiatorEvent()
453*4e1bc9a0SAchim Leubner  */
454*4e1bc9a0SAchim Leubner typedef enum
455*4e1bc9a0SAchim Leubner {
456*4e1bc9a0SAchim Leubner   tiIntrEventTypeCnxError,
457*4e1bc9a0SAchim Leubner   tiIntrEventTypeDiscovery,
458*4e1bc9a0SAchim Leubner   tiIntrEventTypeTransportRecovery,
459*4e1bc9a0SAchim Leubner   tiIntrEventTypeTaskManagement,
460*4e1bc9a0SAchim Leubner   tiIntrEventTypeDeviceChange,
461*4e1bc9a0SAchim Leubner   tiIntrEventTypeLogin,
462*4e1bc9a0SAchim Leubner   tiIntrEventTypeLocalAbort
463*4e1bc9a0SAchim Leubner } tiIntrEventType_t;
464*4e1bc9a0SAchim Leubner 
465*4e1bc9a0SAchim Leubner /*
466*4e1bc9a0SAchim Leubner  * Event status for ostiInitiatorEvent()
467*4e1bc9a0SAchim Leubner  */
468*4e1bc9a0SAchim Leubner typedef enum
469*4e1bc9a0SAchim Leubner {
470*4e1bc9a0SAchim Leubner   tiCnxUp,
471*4e1bc9a0SAchim Leubner   tiCnxDown
472*4e1bc9a0SAchim Leubner } tiCnxEventStatus_t;
473*4e1bc9a0SAchim Leubner 
474*4e1bc9a0SAchim Leubner typedef enum
475*4e1bc9a0SAchim Leubner {
476*4e1bc9a0SAchim Leubner   tiDiscOK,
477*4e1bc9a0SAchim Leubner   tiDiscFailed
478*4e1bc9a0SAchim Leubner } tiDiscEventStatus_t;
479*4e1bc9a0SAchim Leubner 
480*4e1bc9a0SAchim Leubner typedef enum
481*4e1bc9a0SAchim Leubner {
482*4e1bc9a0SAchim Leubner   tiLoginOK,
483*4e1bc9a0SAchim Leubner   tiLoginFailed,
484*4e1bc9a0SAchim Leubner   tiLogoutOK,
485*4e1bc9a0SAchim Leubner   tiLogoutFailed
486*4e1bc9a0SAchim Leubner } tiLoginEventStatus_t;
487*4e1bc9a0SAchim Leubner 
488*4e1bc9a0SAchim Leubner typedef enum
489*4e1bc9a0SAchim Leubner {
490*4e1bc9a0SAchim Leubner   tiRecOK,
491*4e1bc9a0SAchim Leubner   tiRecFailed,
492*4e1bc9a0SAchim Leubner   tiRecStarted
493*4e1bc9a0SAchim Leubner } tiRecEventStatus_t;
494*4e1bc9a0SAchim Leubner 
495*4e1bc9a0SAchim Leubner typedef enum
496*4e1bc9a0SAchim Leubner {
497*4e1bc9a0SAchim Leubner   tiTMOK,
498*4e1bc9a0SAchim Leubner   tiTMFailed
499*4e1bc9a0SAchim Leubner } tiTMEventStatus_t;
500*4e1bc9a0SAchim Leubner 
501*4e1bc9a0SAchim Leubner typedef enum
502*4e1bc9a0SAchim Leubner {
503*4e1bc9a0SAchim Leubner   tiDeviceRemoval,
504*4e1bc9a0SAchim Leubner   tiDeviceArrival,
505*4e1bc9a0SAchim Leubner   tiDeviceLoginReceived
506*4e1bc9a0SAchim Leubner } tiDevEventStatus_t;
507*4e1bc9a0SAchim Leubner 
508*4e1bc9a0SAchim Leubner typedef enum
509*4e1bc9a0SAchim Leubner {
510*4e1bc9a0SAchim Leubner   tiAbortOK,
511*4e1bc9a0SAchim Leubner   tiAbortFailed,
512*4e1bc9a0SAchim Leubner   tiAbortDelayed,
513*4e1bc9a0SAchim Leubner   tiAbortInProgress
514*4e1bc9a0SAchim Leubner } tiAbortEventStatus_t;
515*4e1bc9a0SAchim Leubner 
516*4e1bc9a0SAchim Leubner /*
517*4e1bc9a0SAchim Leubner  * SCSI SAM-2 Task Attribute
518*4e1bc9a0SAchim Leubner  */
519*4e1bc9a0SAchim Leubner #define TASK_UNTAGGED       0       /* Untagged      */
520*4e1bc9a0SAchim Leubner #define TASK_SIMPLE         1       /* Simple        */
521*4e1bc9a0SAchim Leubner #define TASK_ORDERED        2       /* Ordered       */
522*4e1bc9a0SAchim Leubner #define TASK_HEAD_OF_QUEUE  3       /* Head of Queue */
523*4e1bc9a0SAchim Leubner #define TASK_ACA            4       /* ACA           */
524*4e1bc9a0SAchim Leubner 
525*4e1bc9a0SAchim Leubner /*
526*4e1bc9a0SAchim Leubner  * Data direction for I/O request
527*4e1bc9a0SAchim Leubner  */
528*4e1bc9a0SAchim Leubner typedef enum
529*4e1bc9a0SAchim Leubner {
530*4e1bc9a0SAchim Leubner   tiDirectionIn   = 0x0000,
531*4e1bc9a0SAchim Leubner   tiDirectionOut  = 0x0001
532*4e1bc9a0SAchim Leubner }tiDataDirection_t;
533*4e1bc9a0SAchim Leubner 
534*4e1bc9a0SAchim Leubner /*
535*4e1bc9a0SAchim Leubner  * NVRAM error subEvents for encryption
536*4e1bc9a0SAchim Leubner  */
537*4e1bc9a0SAchim Leubner typedef enum
538*4e1bc9a0SAchim Leubner {
539*4e1bc9a0SAchim Leubner     tiNVRAMSuccess       = 0x0000,
540*4e1bc9a0SAchim Leubner     tiNVRAMWriteFail     = 0x0001,
541*4e1bc9a0SAchim Leubner     tiNVRAMReadFail      = 0x0002,
542*4e1bc9a0SAchim Leubner     tiNVRAMNotFound      = 0x0003,
543*4e1bc9a0SAchim Leubner     tiNVRAMAccessTimeout = 0x0004
544*4e1bc9a0SAchim Leubner }tiEncryptSubEvent_t;
545*4e1bc9a0SAchim Leubner 
546*4e1bc9a0SAchim Leubner /* Event Logging */
547*4e1bc9a0SAchim Leubner 
548*4e1bc9a0SAchim Leubner /* Event Severity Codes */
549*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SEV_OFF            0x00
550*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SEV_ALWAYS_ON      0x01
551*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SEV_ERROR          0x02
552*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SEV_WARNING        0x03
553*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SEV_INFORMATIONAL  0x04
554*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SEV_DEBUG_L1       0x05
555*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SEV_DEBUG_L2       0x06
556*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SEV_DEBUG_L3       0x07
557*4e1bc9a0SAchim Leubner 
558*4e1bc9a0SAchim Leubner /* Event Source */
559*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_HW            0xF0000000
560*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_ITSDK         0x0F000000
561*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_FW            0x00F00000
562*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_TD_LAYER      0x000F0000
563*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_TARGET        0x0000F000
564*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_OSLAYER       0x00000F00
565*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_RESERVED      0x000000F0
566*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_RESERVED1     0x0000000F
567*4e1bc9a0SAchim Leubner /* Event Shifter */
568*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_HW_SHIFTER            28
569*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_ITSDK_SHIFTER         24
570*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_FW_SHIFTER            20
571*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_COMMON_LAYER_SHIFTER  16
572*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_TARGET_SHIFTER        12
573*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_OSLAYER_SHIFTER       8
574*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_RESERVED_SHIFTER      4
575*4e1bc9a0SAchim Leubner #define IOCTL_EVT_SRC_RESERVED1_SHIFTER     0
576*4e1bc9a0SAchim Leubner 
577*4e1bc9a0SAchim Leubner #define EVENTLOG_MAX_MSG_LEN          110
578*4e1bc9a0SAchim Leubner 
579*4e1bc9a0SAchim Leubner #define EVENT_ID_MAX        0xffffffff
580*4e1bc9a0SAchim Leubner 
581*4e1bc9a0SAchim Leubner #define DISCOVERY_IN_PROGRESS 0xFFFFFFFF
582*4e1bc9a0SAchim Leubner 
583*4e1bc9a0SAchim Leubner #define TI_SSP_INDIRECT_CDB_SIZE         64
584*4e1bc9a0SAchim Leubner /*
585*4e1bc9a0SAchim Leubner  * Flags in tiSuperScsiInitiatorRequest_t
586*4e1bc9a0SAchim Leubner  */
587*4e1bc9a0SAchim Leubner #define TI_SCSI_INITIATOR_DIF             0x00000001
588*4e1bc9a0SAchim Leubner #define TI_SCSI_INITIATOR_ENCRYPT         0x00000002
589*4e1bc9a0SAchim Leubner #define TI_SCSI_INITIATOR_INDIRECT_CDB    0x00000004
590*4e1bc9a0SAchim Leubner /*****************************************************************************
591*4e1bc9a0SAchim Leubner  *  TARGET SPECIFIC DEFINES AND ENUMS
592*4e1bc9a0SAchim Leubner  *****************************************************************************/
593*4e1bc9a0SAchim Leubner 
594*4e1bc9a0SAchim Leubner /*
595*4e1bc9a0SAchim Leubner  * Event types for ostiTargetEvent()
596*4e1bc9a0SAchim Leubner  */
597*4e1bc9a0SAchim Leubner typedef enum
598*4e1bc9a0SAchim Leubner {
599*4e1bc9a0SAchim Leubner   tiTgtEventTypeCnxError,
600*4e1bc9a0SAchim Leubner   tiTgtEventTypeDeviceChange
601*4e1bc9a0SAchim Leubner } tiTgtEventType_t;
602*4e1bc9a0SAchim Leubner 
603*4e1bc9a0SAchim Leubner /*
604*4e1bc9a0SAchim Leubner  * Flags in tiSuperScsiTargetRequest_t
605*4e1bc9a0SAchim Leubner  */
606*4e1bc9a0SAchim Leubner #define TI_SCSI_TARGET_DIF         0x00000001
607*4e1bc9a0SAchim Leubner #define TI_SCSI_TARGET_MIRROR      0x00000002
608*4e1bc9a0SAchim Leubner #define TI_SCSI_TARGET_ENCRYPT     0x00000004
609*4e1bc9a0SAchim Leubner #endif  /* TIDEFS_H */
610