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