sampidefs.h revision 285809
1/******************************************************************************* 2*Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved. 3* 4*Redistribution and use in source and binary forms, with or without modification, are permitted provided 5*that the following conditions are met: 6*1. Redistributions of source code must retain the above copyright notice, this list of conditions and the 7*following disclaimer. 8*2. Redistributions in binary form must reproduce the above copyright notice, 9*this list of conditions and the following disclaimer in the documentation and/or other materials provided 10*with the distribution. 11* 12*THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED 13*WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 14*FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 15*FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 16*NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 17*BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 18*LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 19*SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE 20* 21* $FreeBSD$ 22* 23********************************************************************************/ 24/*******************************************************************************/ 25/*! \file sampidefs.h 26 * \brief The file defines the constants used by SAS/SATA LL layer 27 * 28 */ 29 30/*******************************************************************************/ 31 32#ifndef __SAMPIDEFS_H__ 33 34#define __SAMPIDEFS_H__ 35 36/* for Request Opcode of IOMB */ 37#define OPC_INB_ECHO 0x001 /* */ 38 39#define OPC_INB_PHYSTART 0x004 /* */ 40#define OPC_INB_PHYSTOP 0x005 /* */ 41#define OPC_INB_SSPINIIOSTART 0x006 /* */ 42#define OPC_INB_SSPINITMSTART 0x007 /* */ 43#define OPC_INB_SSPINIEXTIOSTART 0x008 /* V reserved */ 44#define OPC_INB_DEV_HANDLE_ACCEPT 0x009 /* */ 45#define OPC_INB_SSPTGTIOSTART 0x00a /* */ 46#define OPC_INB_SSPTGTRSPSTART 0x00b /* */ 47#define OPC_INB_SSP_ABORT 0x00f /* */ 48#define OPC_INB_DEREG_DEV_HANDLE 0x010 /* 16 */ 49#define OPC_INB_GET_DEV_HANDLE 0x011 /* 17 */ 50#define OPC_INB_SMP_REQUEST 0x012 /* 18 */ 51 52#define OPC_INB_SMP_ABORT 0x014 /* 20 */ 53 54#define OPC_INB_SPC_REG_DEV 0x016 /* 22 V reserved */ 55#define OPC_INB_SATA_HOST_OPSTART 0x017 /* 23 */ 56#define OPC_INB_SATA_ABORT 0x018 /* 24 */ 57#define OPC_INB_LOCAL_PHY_CONTROL 0x019 /* 25 */ 58#define OPC_INB_SPC_GET_DEV_INFO 0x01a /* 26 V reserved */ 59 60#define OPC_INB_FW_FLASH_UPDATE 0x020 /* 32 */ 61 62#define OPC_INB_GPIO 0x022 /* 34 */ 63#define OPC_INB_SAS_DIAG_MODE_START_END 0x023 /* 35 */ 64#define OPC_INB_SAS_DIAG_EXECUTE 0x024 /* 36 */ 65#define OPC_INB_SPC_SAS_HW_EVENT_ACK 0x025 /* 37 V reserved */ 66#define OPC_INB_GET_TIME_STAMP 0x026 /* 38 */ 67#define OPC_INB_PORT_CONTROL 0x027 /* 39 */ 68#define OPC_INB_GET_NVMD_DATA 0x028 /* 40 */ 69#define OPC_INB_SET_NVMD_DATA 0x029 /* 41 */ 70#define OPC_INB_SET_DEVICE_STATE 0x02a /* 42 */ 71#define OPC_INB_GET_DEVICE_STATE 0x02b /* 43 */ 72#define OPC_INB_SET_DEV_INFO 0x02c /* 44 */ 73#define OPC_INB_SAS_RE_INITIALIZE 0x02d /* 45 V reserved */ 74#define OPC_INB_SGPIO 0x02e /* 46 */ 75#define OPC_INB_PCIE_DIAG_EXECUTE 0x02f /* 47 */ 76 77#define OPC_INB_SET_CONTROLLER_CONFIG 0x030 /* 48 */ 78#define OPC_INB_GET_CONTROLLER_CONFIG 0x031 /* 49 */ 79 80#define OPC_INB_REG_DEV 0x032 /* 50 SPCV */ 81#define OPC_INB_SAS_HW_EVENT_ACK 0x033 /* 51 SPCV */ 82#define OPC_INB_GET_DEV_INFO 0x034 /* 52 SPCV */ 83#define OPC_INB_GET_PHY_PROFILE 0x035 /* 53 SPCV */ 84#define OPC_INB_FLASH_OP_EXT 0x036 /* 54 SPCV */ 85#define OPC_INB_SET_PHY_PROFILE 0x037 /* 55 SPCV */ 86#define OPC_INB_GET_DFE_DATA 0x038 /* 56 SPCV */ 87#define OPC_INB_GET_VHIST_CAP 0x039 /* 57 SPCV12g */ 88 89 90#define OPC_INB_KEK_MANAGEMENT 0x100 /* 256 SPCV */ 91#define OPC_INB_DEK_MANAGEMENT 0x101 /* 257 SPCV */ 92#define OPC_INB_SSP_DIF_ENC_OPSTART 0x102 /* 258 SPCV */ 93#define OPC_INB_SATA_DIF_ENC_OPSTART 0x103 /* 259 SPCV */ 94#define OPC_INB_OPR_MGMT 0x104 /* 260 SPCV */ 95#define OPC_INB_ENC_TEST_EXECUTE 0x105 /* 261 SPCV */ 96#define OPC_INB_SET_OPERATOR 0x106 /* 262 SPCV */ 97#define OPC_INB_GET_OPERATOR 0x107 /* 263 SPCV */ 98#define OPC_INB_DIF_ENC_OFFLOAD_CMD 0x110 /* 272 SPCV */ 99 100#define OPC_INB_FW_PROFILE 0x888 /* 2184 SPCV */ 101 102/* for Response Opcode of IOMB */ 103#define OPC_OUB_ECHO 0x001 /* 1 */ 104 105#define OPC_OUB_SPC_HW_EVENT 0x004 /* 4 V reserved Now OPC_OUB_HW_EVENT */ 106#define OPC_OUB_SSP_COMP 0x005 /* 5 */ 107#define OPC_OUB_SMP_COMP 0x006 /* 6 */ 108#define OPC_OUB_LOCAL_PHY_CNTRL 0x007 /* 7 */ 109 110#define OPC_OUB_SPC_DEV_REGIST 0x00a /* 10 V reserved Now OPC_OUB_DEV_REGIST */ 111#define OPC_OUB_DEREG_DEV 0x00b /* 11 */ 112#define OPC_OUB_GET_DEV_HANDLE 0x00c /* 12 */ 113#define OPC_OUB_SATA_COMP 0x00d /* 13 */ 114#define OPC_OUB_SATA_EVENT 0x00e /* 14 */ 115#define OPC_OUB_SSP_EVENT 0x00f /* 15 */ 116 117#define OPC_OUB_SPC_DEV_HANDLE_ARRIV 0x010 /* 16 V reserved Now OPC_OUB_DEV_HANDLE_ARRIV */ 118 119#define OPC_OUB_SSP_RECV_EVENT 0x012 /* 18 */ 120#define OPC_OUB_SPC_DEV_INFO 0x013 /* 19 V reserved Now OPC_OUB_DEV_INFO*/ 121#define OPC_OUB_FW_FLASH_UPDATE 0x014 /* 20 */ 122 123#define OPC_OUB_GPIO_RESPONSE 0x016 /* 22 */ 124#define OPC_OUB_GPIO_EVENT 0x017 /* 23 */ 125#define OPC_OUB_GENERAL_EVENT 0x018 /* 24 */ 126 127#define OPC_OUB_SSP_ABORT_RSP 0x01a /* 26 */ 128#define OPC_OUB_SATA_ABORT_RSP 0x01b /* 27 */ 129#define OPC_OUB_SAS_DIAG_MODE_START_END 0x01c /* 28 */ 130#define OPC_OUB_SAS_DIAG_EXECUTE 0x01d /* 29 */ 131#define OPC_OUB_GET_TIME_STAMP 0x01e /* 30 */ 132#define OPC_OUB_SPC_SAS_HW_EVENT_ACK 0x01f /* 31 V reserved Now OPC_OUB_SAS_HW_EVENT_ACK*/ 133#define OPC_OUB_PORT_CONTROL 0x020 /* 32 */ 134#define OPC_OUB_SKIP_ENTRY 0x021 /* 33 */ 135#define OPC_OUB_SMP_ABORT_RSP 0x022 /* 34 */ 136#define OPC_OUB_GET_NVMD_DATA 0x023 /* 35 */ 137#define OPC_OUB_SET_NVMD_DATA 0x024 /* 36 */ 138#define OPC_OUB_DEVICE_HANDLE_REMOVAL 0x025 /* 37 */ 139#define OPC_OUB_SET_DEVICE_STATE 0x026 /* 38 */ 140#define OPC_OUB_GET_DEVICE_STATE 0x027 /* 39 */ 141#define OPC_OUB_SET_DEV_INFO 0x028 /* 40 */ 142#define OPC_OUB_SAS_RE_INITIALIZE 0x029 /* 41 V reserved not replaced */ 143 144#define OPC_OUB_HW_EVENT 0x700 /* 1792 SPCV Was OPC_OUB_SPC_HW_EVENT*/ 145#define OPC_OUB_DEV_HANDLE_ARRIV 0x720 /* 1824 SPCV Was OPC_OUB_SPC_DEV_HANDLE_ARRIV*/ 146 147#define OPC_OUB_PHY_START_RESPONSE 0x804 /* 2052 SPCV */ 148#define OPC_OUB_PHY_STOP_RESPONSE 0x805 /* 2053 SPCV */ 149#define OPC_OUB_SGPIO_RESPONSE 0x82E /* 2094 SPCV */ 150#define OPC_OUB_PCIE_DIAG_EXECUTE 0x82F /* 2095 SPCV */ 151 152#define OPC_OUB_SET_CONTROLLER_CONFIG 0x830 /* 2096 SPCV */ 153#define OPC_OUB_GET_CONTROLLER_CONFIG 0x831 /* 2097 SPCV */ 154#define OPC_OUB_DEV_REGIST 0x832 /* 2098 SPCV */ 155#define OPC_OUB_SAS_HW_EVENT_ACK 0x833 /* 2099 SPCV */ 156#define OPC_OUB_DEV_INFO 0x834 /* 2100 SPCV */ 157#define OPC_OUB_GET_PHY_PROFILE_RSP 0x835 /* 2101 SPCV */ 158#define OPC_OUB_FLASH_OP_EXT_RSP 0x836 /* 2102 SPCV */ 159#define OPC_OUB_SET_PHY_PROFILE_RSP 0x837 /* 2103 SPCV */ 160#define OPC_OUB_GET_DFE_DATA_RSP 0x838 /* 2104 SPCV */ 161#define OPC_OUB_GET_VIST_CAP_RSP 0x839 /* Can be 2104 for SPCV12g */ 162 163#define OPC_OUB_FW_PROFILE 0x888 /* 2184 */ 164 165#define OPC_OUB_KEK_MANAGEMENT 0x900 /* 2304 SPCV */ 166#define OPC_OUB_DEK_MANAGEMENT 0x901 /* 2305 SPCV */ 167#define OPC_OUB_COMBINED_SSP_COMP 0x902 /* 2306 SPCV */ 168#define OPC_OUB_COMBINED_SATA_COMP 0x903 /* 2307 SPCV */ 169#define OPC_OUB_OPR_MGMT 0x904 /* 2308 SPCV */ 170#define OPC_OUB_ENC_TEST_EXECUTE 0x905 /* 2309 SPCV */ 171#define OPC_OUB_SET_OPERATOR 0x906 /* 2310 SPCV */ 172#define OPC_OUB_GET_OPERATOR 0x907 /* 2311 SPCV */ 173#define OPC_OUB_DIF_ENC_OFFLOAD_RSP 0x910 /* 2320 SPCV */ 174 175/* Definitions for encryption key management */ 176#define KEK_MGMT_SUBOP_INVALIDATE 0x1 177#define KEK_MGMT_SUBOP_UPDATE 0x2 178#define KEK_MGMT_SUBOP_KEYCARDINVALIDATE 0x3 179#define KEK_MGMT_SUBOP_KEYCARDUPDATE 0x4 180 181#define DEK_MGMT_SUBOP_INVALIDATE 0x1 182#define DEK_MGMT_SUBOP_UPDATE 0x2 183 184/*************************************************** 185 * typedef for IOMB structure 186 ***************************************************/ 187/** \brief the data structure of Echo Command 188 * 189 * use to describe MPI Echo Command (64 bytes) 190 * 191 */ 192typedef struct agsaEchoCmd_s { 193 bit32 tag; 194 bit32 payload[14]; 195} agsaEchoCmd_t; 196 197/** \brief the data structure of PHY Start Command 198 * 199 * use to describe MPI PHY Start Command (64 bytes) 200 * 201 */ 202typedef struct agsaPhyStartCmd_s { 203 bit32 tag; 204 bit32 SscdAseSHLmMlrPhyId; 205 agsaSASIdentify_t sasIdentify; 206 bit32 analogSetupIdx; 207 bit32 SAWT_DAWT; 208 bit32 reserved[5]; 209} agsaPhyStartCmd_t; 210 211#define SPINHOLD_DISABLE (0x00 << 14) 212#define SPINHOLD_ENABLE (0x01 << 14) 213#define LINKMODE_SAS (0x01 << 12) 214#define LINKMODE_DSATA (0x02 << 12) 215#define LINKMODE_AUTO (0x03 << 12) 216#define LINKRATE_15 (0x01 << 8) 217#define LINKRATE_30 (0x02 << 8) 218#define LINKRATE_60 (0x04 << 8) 219#define LINKRATE_12 (0x08 << 8) 220 221/** \brief the data structure of PHY Stop Command 222 * 223 * use to describe MPI PHY Start Command (64 bytes) 224 * 225 */ 226typedef struct agsaPhyStopCmd_s { 227 bit32 tag; 228 bit32 phyId; 229 bit32 reserved[13]; 230} agsaPhyStopCmd_t; 231 232/** \brief the data structure of SSP INI IO Start Command 233 * 234 * use to describe MPI SSP INI IO Start Command (64 bytes) 235 * 236 */ 237typedef struct agsaSSPIniIOStartCmd_s { 238 bit32 tag; 239 bit32 deviceId; 240 bit32 dataLen; 241 bit32 dirMTlr; 242 agsaSSPCmdInfoUnit_t SSPInfoUnit; 243 bit32 AddrLow0; 244 bit32 AddrHi0; 245 bit32 Len0; 246 bit32 E0; 247} agsaSSPIniIOStartCmd_t; 248 249/** \brief the data structure of SSP INI TM Start Command 250 * 251 * use to describe MPI SSP INI TM Start Command (64 bytes) 252 * 253 */ 254typedef struct agsaSSPIniTMStartCmd_s { 255 bit32 tag; 256 bit32 deviceId; 257 bit32 relatedTag; 258 bit32 TMfunction; 259 bit8 lun[8]; 260 bit32 dsAdsMReport; 261 bit32 reserved[8]; 262} agsaSSPIniTMStartCmd_t; 263 264/** \brief the data structure of SSP INI Extended IO Start Command 265 * 266 * use to describe MPI SSP INI Extended CDB Start Command (96 bytes to support 32 CDB) 267 * 268 */ 269typedef struct agsaSSPIniExtIOStartCmd_s { 270 bit32 tag; 271 bit32 deviceId; 272 bit32 dataLen; 273 bit32 SSPIuLendirMTlr; 274 bit8 SSPIu[1]; 275 /* variable lengh */ 276 /* bit32 AddrLow0; */ 277 /* bit32 AddrHi0; */ 278 /* bit32 Len0; */ 279 /* bit32 E0; */ 280} agsaSSPIniExtIOStartCmd_t; 281 282typedef struct agsaSSPIniEncryptIOStartCmd_s 283{ 284 bit32 tag; /* 1 */ 285 bit32 deviceId; /* 2 */ 286 bit32 dataLen; /* 3 */ 287 bit32 dirMTlr; /* 4 */ 288 bit32 sspiu_0_3_indcdbalL; /* 5 */ 289 bit32 sspiu_4_7_indcdbalH; /* 6 */ 290 bit32 sspiu_8_11; /* 7 */ 291 bit32 sspiu_12_15; /* 8 */ 292 bit32 sspiu_16_19; /* 9 */ 293 bit32 sspiu_19_23; /* 10 */ 294 bit32 sspiu_24_27; /* 11 */ 295 bit32 epl_descL; /* 12 */ 296 bit32 dpl_descL; /* 13 */ 297 bit32 edpl_descH; /* 14 */ 298 bit32 DIF_flags; /* 15 */ 299 bit32 udt; /* 16 0x10 */ 300 bit32 udtReplacementLo; /* 17 */ 301 bit32 udtReplacementHi; /* 18 */ 302 bit32 DIF_seed; /* 19 */ 303 bit32 encryptFlagsLo; /* 20 0x14 */ 304 bit32 encryptFlagsHi; /* 21 */ 305 bit32 keyTag_W0; /* 22 */ 306 bit32 keyTag_W1; /* 23 */ 307 bit32 tweakVal_W0; /* 24 0x18 */ 308 bit32 tweakVal_W1; /* 25 */ 309 bit32 tweakVal_W2; /* 26 */ 310 bit32 tweakVal_W3; /* 27 */ 311 bit32 AddrLow0; /* 28 0x1C */ 312 bit32 AddrHi0; /* 29 */ 313 bit32 Len0; /* 30 */ 314 bit32 E0; /* 31 */ 315} agsaSSPIniEncryptIOStartCmd_t; 316 317/** \brief the data structure of SSP Abort Command 318 * 319 * use to describe MPI SSP Abort Command (64 bytes) 320 * 321 */ 322typedef struct agsaSSPAbortCmd_s { 323 bit32 tag; 324 bit32 deviceId; 325 bit32 HTagAbort; 326 bit32 abortAll; 327 bit32 reserved[11]; 328} agsaSSPAbortCmd_t; 329 330/** \brief the data structure of Register Device Command 331 * 332 * use to describe MPI DEVICE REGISTER Command (64 bytes) 333 * 334 */ 335typedef struct agsaRegDevCmd_s { 336 bit32 tag; 337 bit32 phyIdportId; 338 bit32 dTypeLRateAwtHa; 339 bit32 ITNexusTimeOut; 340 bit32 sasAddrHi; 341 bit32 sasAddrLo; 342 bit32 DeviceId; 343 bit32 reserved[8]; 344} agsaRegDevCmd_t; 345 346/** \brief the data structure of Deregister Device Handle Command 347 * 348 * use to describe MPI DEREGISTER DEVIDE HANDLE Command (64 bytes) 349 * 350 */ 351typedef struct agsaDeregDevHandleCmd_s { 352 bit32 tag; 353 bit32 deviceId; 354 bit32 portId; 355 bit32 reserved[12]; 356} agsaDeregDevHandleCmd_t; 357 358/** \brief the data structure of Get Device Handle Command 359 * 360 * use to describe MPI GET DEVIDE HANDLE Command (64 bytes) 361 * 362 */ 363typedef struct agsaGetDevHandleCmd_s { 364 bit32 tag; 365 bit32 DevADevTMaxDIDportId; 366 bit32 skipCount; 367 bit32 reserved[12]; 368} agsaGetDevHandleCmd_t; 369 370/** \brief the data structure of SMP Request Command 371 * 372 * use to describe MPI SMP REQUEST Command (64 bytes) 373 * 374 */ 375 376typedef struct agsaSMPCmd_s { 377 bit32 tag; 378 bit32 deviceId; 379 bit32 IR_IP_OV_res_phyId_DPdLen_res; 380 /* Bits [0] - IR */ 381 /* Bits [1] - IP */ 382 /* Bits [15:2] - Reserved */ 383 /* Bits [23:16] - Len */ 384 /* Bits [31:24] - Reserved */ 385 bit32 SMPCmd[12]; 386} agsaSMPCmd_t; 387 388 389typedef struct agsaSMPCmd_V_s { 390 bit32 tag; /* 1 */ 391 bit32 deviceId; /* 2 */ 392 bit32 IR_IP_OV_res_phyId_DPdLen_res;/* 3 */ 393 /* Bits [0] - IR */ 394 /* Bits [1] - IP */ 395 /* Bits [15:2] - Reserved */ 396 /* Bits [23:16] - Len */ 397 /* Bits [31:24] - Reserved */ 398 bit32 SMPHDR; /* 4 */ 399 bit32 SMP3_0; /* 5 */ 400 bit32 SMP7_4; /* 6 */ 401 bit32 SMP11_8; /* 7 */ 402 bit32 IndirL_SMPRF15_12; /* 8 */ 403 bit32 IndirH_or_SMPRF19_16; /* 9 */ 404 bit32 IndirLen_or_SMPRF23_20; /* 10 */ 405 bit32 R_or_SMPRF27_24; /* 11 */ 406 bit32 ISRAL_or_SMPRF31_28; /* 12 */ 407 bit32 ISRAH_or_SMPRF35_32; /* 13 */ 408 bit32 ISRL_or_SMPRF39_36; /* 14 */ 409 bit32 R_or_SMPRF43_40; /* 15 */ 410} agsaSMPCmd_V_t; 411 412/** \brief the data structure of SMP Abort Command 413 * 414 * use to describe MPI SMP Abort Command (64 bytes) 415 * 416 */ 417typedef struct agsaSMPAbortCmd_s { 418 bit32 tag; 419 bit32 deviceId; 420 bit32 HTagAbort; 421 bit32 Scp; 422 bit32 reserved[11]; 423} agsaSMPAbortCmd_t; 424 425/** \brief the data structure of SATA Start Command 426 * 427 * use to describe MPI SATA Start Command (64 bytes) 428 * 429 */ 430typedef struct agsaSATAStartCmd_s { 431 bit32 tag; /* 1 */ 432 bit32 deviceId; /* 2 */ 433 bit32 dataLen; /* 3 */ 434 bit32 optNCQTagataProt; /* 4 */ 435 agsaFisRegHostToDevice_t sataFis; /* 5 6 7 8 9 */ 436 bit32 reserved1; /* 10 */ 437 bit32 reserved2; /* 11 */ 438 bit32 AddrLow0; /* 12 */ 439 bit32 AddrHi0; /* 13 */ 440 bit32 Len0; /* 14 */ 441 bit32 E0; /* 15 */ 442 bit32 ATAPICDB[4]; /* 16-19 */ 443} agsaSATAStartCmd_t; 444 445typedef struct agsaSATAEncryptStartCmd_s 446{ 447 bit32 tag; /* 1 */ 448 bit32 IniDeviceId; /* 2 */ 449 bit32 dataLen; /* 3 */ 450 bit32 optNCQTagataProt; /* 4 */ 451 agsaFisRegHostToDevice_t sataFis; /* 5 6 7 8 9 */ 452 bit32 reserved1; /* 10 */ 453 bit32 Res_EPL_DESCL; /* 11 */ 454 bit32 resSKIPBYTES; /* 12 */ 455 bit32 Res_DPL_DESCL_NDPLR; /* 13 DIF per LA Address lo if DPLE is 1 */ 456 bit32 Res_EDPL_DESCH; /* 14 DIF per LA Address hi if DPLE is 1 */ 457 bit32 DIF_flags; /* 15 */ 458 bit32 udt; /* 16 */ 459 bit32 udtReplacementLo; /* 17 */ 460 bit32 udtReplacementHi; /* 18 */ 461 bit32 DIF_seed; /* 19 */ 462 bit32 encryptFlagsLo; /* 20 */ 463 bit32 encryptFlagsHi; /* 21 */ 464 bit32 keyTagLo; /* 22 */ 465 bit32 keyTagHi; /* 23 */ 466 bit32 tweakVal_W0; /* 24 */ 467 bit32 tweakVal_W1; /* 25 */ 468 bit32 tweakVal_W2; /* 26 */ 469 bit32 tweakVal_W3; /* 27 */ 470 bit32 AddrLow0; /* 28 */ 471 bit32 AddrHi0; /* 29 */ 472 bit32 Len0; /* 30 */ 473 bit32 E0; /* 31 */ 474} agsaSATAEncryptStartCmd_t; 475 476/** \brief the data structure of SATA Abort Command 477 * 478 * use to describe MPI SATA Abort Command (64 bytes) 479 * 480 */ 481typedef struct agsaSATAAbortCmd_s { 482 bit32 tag; 483 bit32 deviceId; 484 bit32 HTagAbort; 485 bit32 abortAll; 486 bit32 reserved[11]; 487} agsaSATAAbortCmd_t; 488 489/** \brief the data structure of Local PHY Control Command 490 * 491 * use to describe MPI LOCAL PHY CONTROL Command (64 bytes) 492 * 493 */ 494typedef struct agsaLocalPhyCntrlCmd_s { 495 bit32 tag; 496 bit32 phyOpPhyId; 497 bit32 reserved1[14]; 498} agsaLocalPhyCntrlCmd_t; 499 500/** \brief the data structure of Get Device Info Command 501 * 502 * use to describe MPI GET DEVIDE INFO Command (64 bytes) 503 * 504 */ 505typedef struct agsaGetDevInfoCmd_s { 506 bit32 tag; 507 bit32 DeviceId; 508 bit32 reserved[13]; 509} agsaGetDevInfoCmd_t; 510 511/** \brief the data structure of HW Reset Command 512 * 513 * use to describe MPI HW Reset Command (64 bytes) 514 * 515 */ 516typedef struct agsaHWResetCmd_s { 517 bit32 option; 518 bit32 reserved[14]; 519} agsaHWResetCmd_t; 520 521/** \brief the data structure of Firmware download 522 * 523 * use to describe MPI FW DOWNLOAD Command (64 bytes) 524 */ 525typedef struct agsaFwFlashUpdate_s { 526 bit32 tag; 527 bit32 curImageOffset; 528 bit32 curImageLen; 529 bit32 totalImageLen; 530 bit32 reserved0[7]; 531 bit32 SGLAL; 532 bit32 SGLAH; 533 bit32 Len; 534 bit32 extReserved; 535} agsaFwFlashUpdate_t; 536 537 538/** \brief the data structure EXT Flash Op 539 * 540 * use to describe Extented Flash Operation Command (128 bytes) 541 */ 542typedef struct agsaFwFlashOpExt_s { 543 bit32 tag; 544 bit32 Command; 545 bit32 PartOffset; 546 bit32 DataLength; 547 bit32 Reserved0[7]; 548 bit32 SGLAL; 549 bit32 SGLAH; 550 bit32 Len; 551 bit32 E_sgl; 552 bit32 Reserved[15]; 553} agsaFwFlashOpExt_t; 554 555/** \brief the data structure EXT Flash Op 556 * 557 * use to describe Extented Flash Operation Command (64 bytes) 558 */ 559typedef struct agsaFwFlashOpExtRsp_s { 560 bit32 tag; 561 bit32 Command; 562 bit32 Status; 563 bit32 Epart_Size; 564 bit32 EpartSectSize; 565 bit32 Reserved[10]; 566} agsaFwFlashOpExtRsp_t; 567 568 569#define FWFLASH_IOMB_RESERVED_LEN 0x07 570 571#ifdef SPC_ENABLE_PROFILE 572typedef struct agsaFwProfileIOMB_s { 573 bit32 tag; 574 bit32 tcid_processor_cmd; 575 bit32 codeStartAdd; 576 bit32 codeEndAdd; 577 bit32 reserved0[7]; 578 bit32 SGLAL; 579 bit32 SGLAH; 580 bit32 Len; 581 bit32 extReserved; 582} agsaFwProfileIOMB_t; 583#define FWPROFILE_IOMB_RESERVED_LEN 0x07 584#endif 585/** \brief the data structure of GPIO Commannd 586 * 587 * use to describe MPI GPIO Command (64 bytes) 588 */ 589typedef struct agsaGPIOCmd_s { 590 bit32 tag; 591 bit32 eOBIDGeGsGrGw; 592 bit32 GpioWrMsk; 593 bit32 GpioWrVal; 594 bit32 GpioIe; 595 bit32 OT11_0; 596 bit32 OT19_12; /* reserved for SPCv controller */ 597 bit32 GPIEVChange; 598 bit32 GPIEVRise; 599 bit32 GPIEVFall; 600 bit32 reserved[5]; 601} agsaGPIOCmd_t; 602 603 604#define GPIO_GW_BIT 0x1 605#define GPIO_GR_BIT 0x2 606#define GPIO_GS_BIT 0x4 607#define GPIO_GE_BIT 0x8 608 609/** \brief the data structure of SAS Diagnostic Start/End Command 610 * 611 * use to describe MPI SAS Diagnostic Start/End Command (64 bytes) 612 */ 613typedef struct agsaSASDiagStartEndCmd_s { 614 bit32 tag; 615 bit32 OperationPhyId; 616 bit32 reserved[13]; 617} agsaSASDiagStartEndCmd_t; 618 619/** \brief the data structure of SAS Diagnostic Execute Command 620 * 621 * use to describe MPI SAS Diagnostic Execute Command for SPCv (128 bytes) 622 */ 623typedef struct agsaSASDiagExecuteCmd_s { 624 bit32 tag; /* 1 */ 625 bit32 CmdTypeDescPhyId;/* 2 */ 626 bit32 Pat1Pat2; /* 3 */ 627 bit32 Threshold; /* 4 */ 628 bit32 CodePatErrMsk; /* 5 */ 629 bit32 Pmon; /* 6 */ 630 bit32 PERF1CTL; /* 7 */ 631 bit32 THRSHLD1; /* 8 */ 632 bit32 reserved[23]; /* 9 31 */ 633} agsaSASDiagExecuteCmd_t; 634 635 636/** \brief the data structure of SAS Diagnostic Execute Command 637 * 638 * use to describe MPI SAS Diagnostic Execute Command for SPC (64 bytes) 639 */ 640typedef struct agsa_SPC_SASDiagExecuteCmd_s { 641 bit32 tag; /* 1 */ 642 bit32 CmdTypeDescPhyId;/* 2 */ 643 bit32 Pat1Pat2; /* 3 */ 644 bit32 Threshold; /* 4 */ 645 bit32 CodePatErrMsk; /* 5 */ 646 bit32 Pmon; /* 6 */ 647 bit32 PERF1CTL; /* 7 */ 648 bit32 reserved[8]; /* 8 15 */ 649} agsa_SPC_SASDiagExecuteCmd_t; 650#define SAS_DIAG_PARAM_BYTES 24 651 652 653/** \brief the data structure of SSP TGT IO Start Command 654 * 655 * use to describe MPI SSP TGT IO Start Command (64 bytes) 656 * 657 */ 658typedef struct agsaSSPTgtIOStartCmd_s { 659 bit32 tag; /* 1 */ 660 bit32 deviceId; /* 2 */ 661 bit32 dataLen; /* 3 */ 662 bit32 dataOffset; /* 4 */ 663 bit32 INITagAgrDir; /* 5 */ 664 bit32 reserved; /* 6 */ 665 bit32 DIF_flags; /* 7 */ 666 bit32 udt; /* 8 */ 667 bit32 udtReplacementLo; /* 9 */ 668 bit32 udtReplacementHi; /* 10 */ 669 bit32 DIF_seed; /* 11 */ 670 bit32 AddrLow0; /* 12 */ 671 bit32 AddrHi0; /* 13 */ 672 bit32 Len0; /* 14 */ 673 bit32 E0; /* 15 */ 674} agsaSSPTgtIOStartCmd_t; 675 676/** \brief the data structure of SSP TGT Response Start Command 677 * 678 * use to describe MPI SSP TGT Response Start Command (64 bytes) 679 * 680 */ 681typedef struct agsaSSPTgtRspStartCmd_s { 682 bit32 tag; 683 bit32 deviceId; 684 bit32 RspLen; 685 bit32 INITag_IP_AN; 686 bit32 reserved[7]; 687 bit32 AddrLow0; 688 bit32 AddrHi0; 689 bit32 Len0; 690 bit32 E0; 691} agsaSSPTgtRspStartCmd_t; 692 693/** \brief the data structure of Device Handle Accept Command 694 * 695 * use to describe MPI Device Handle Accept Command (64 bytes) 696 * 697 */ 698typedef struct agsaDevHandleAcceptCmd_s { 699 bit32 tag; 700 bit32 Ctag; 701 bit32 deviceId; 702 bit32 DevA_MCN_R_R_HA_ITNT; 703 bit32 reserved[11]; 704} agsaDevHandleAcceptCmd_t; 705 706/** \brief the data structure of SAS HW Event Ack Command 707 * 708 * use to describe MPI SAS HW Event Ack Command (64 bytes) 709 * 710 */ 711typedef struct agsaSASHwEventAckCmd_s { 712 bit32 tag; 713 bit32 sEaPhyIdPortId; 714 bit32 Param0; 715 bit32 Param1; 716 bit32 reserved[11]; 717} agsaSASHwEventAckCmd_t; 718 719/** \brief the data structure of Get Time Stamp Command 720 * 721 * use to describe MPI Get Time Stamp Command (64 bytes) 722 * 723 */ 724typedef struct agsaGetTimeStampCmd_s { 725 bit32 tag; 726 bit32 reserved[14]; 727} agsaGetTimeStampCmd_t; 728 729/** \brief the data structure of Port Control Command 730 * 731 * use to describe MPI Port Control Command (64 bytes) 732 * 733 */ 734typedef struct agsaPortControlCmd_s { 735 bit32 tag; 736 bit32 portOPPortId; 737 bit32 Param0; 738 bit32 Param1; 739 bit32 reserved[11]; 740} agsaPortControlCmd_t; 741 742/** \brief the data structure of Set NVM Data Command 743 * 744 * use to describe MPI Set NVM Data Command (64 bytes) 745 * 746 */ 747typedef struct agNVMIndirect_s { 748 bit32 signature; 749 bit32 reserved[7]; 750 bit32 ISglAL; 751 bit32 ISglAH; 752 bit32 ILen; 753 bit32 reserved1; 754} agNVMIndirect_t; 755 756typedef union agsaSetNVMData_s { 757 bit32 NVMData[12]; 758 agNVMIndirect_t indirectData; 759} agsaSetNVMData_t; 760 761typedef struct agsaSetNVMDataCmd_s { 762 bit32 tag; 763 bit32 LEN_IR_VPDD; 764 bit32 VPDOffset; 765 agsaSetNVMData_t Data; 766} agsaSetNVMDataCmd_t; 767 768/** \brief the data structure of Get NVM Data Command 769 * 770 * use to describe MPI Get NVM Data Command (64 bytes) 771 * 772 */ 773typedef struct agsaGetNVMDataCmd_s { 774 bit32 tag; 775 bit32 LEN_IR_VPDD; 776 bit32 VPDOffset; 777 bit32 reserved[8]; 778 bit32 respAddrLo; 779 bit32 respAddrHi; 780 bit32 respLen; 781 bit32 reserved1; 782} agsaGetNVMDataCmd_t; 783 784#define TWI_DEVICE 0x0 785#define C_SEEPROM 0x1 786#define VPD_FLASH 0x4 787#define AAP1_RDUMP 0x5 788#define IOP_RDUMP 0x6 789#define EXPAN_ROM 0x7 790 791#define DIRECT_MODE 0x0 792#define INDIRECT_MODE 0x1 793 794#define IRMode 0x80000000 795#define IPMode 0x80000000 796#define NVMD_TYPE 0x0000000F 797#define NVMD_STAT 0x0000FFFF 798#define NVMD_LEN 0xFF000000 799 800#define TWI_DEVICE 0x0 801#define SEEPROM 0x1 802 803/** \brief the data structure of Set Device State Command 804 * 805 * use to describe MPI Set Device State Command (64 bytes) 806 * 807 */ 808typedef struct agsaSetDeviceStateCmd_s { 809 bit32 tag; 810 bit32 deviceId; 811 bit32 NDS; 812 bit32 reserved[12]; 813} agsaSetDeviceStateCmd_t; 814 815#define DS_OPERATIONAL 0x01 816#define DS_IN_RECOVERY 0x03 817#define DS_IN_ERROR 0x04 818#define DS_NON_OPERATIONAL 0x07 819 820/** \brief the data structure of Get Device State Command 821 * 822 * use to describe MPI Get Device State Command (64 bytes) 823 * 824 */ 825typedef struct agsaGetDeviceStateCmd_s { 826 bit32 tag; 827 bit32 deviceId; 828 bit32 reserved[13]; 829} agsaGetDeviceStateCmd_t; 830 831/** \brief the data structure of Set Device Info Command 832 * 833 * use to describe MPI OPC_INB_SET_DEV_INFO (0x02c) Command (64 bytes) 834 * 835 */ 836typedef struct agsaSetDevInfoCmd_s { 837 bit32 tag; 838 bit32 deviceId; 839 bit32 SA_SR_SI; 840 bit32 DEVA_MCN_R_ITNT; 841 bit32 reserved[11]; 842} agsaSetDevInfoCmd_t; 843 844#define SET_DEV_INFO_V_DW3_MASK 0x0000003F 845#define SET_DEV_INFO_V_DW4_MASK 0xFF07FFFF 846#define SET_DEV_INFO_SPC_DW3_MASK 0x7 847#define SET_DEV_INFO_SPC_DW4_MASK 0x003FFFF 848 849#define SET_DEV_INFO_V_DW3_SM_SHIFT 3 850#define SET_DEV_INFO_V_DW3_SA_SHIFT 2 851#define SET_DEV_INFO_V_DW3_SR_SHIFT 1 852#define SET_DEV_INFO_V_DW3_SI_SHIFT 0 853 854#define SET_DEV_INFO_V_DW4_MCN_SHIFT 24 855#define SET_DEV_INFO_V_DW4_AWT_SHIFT 17 856#define SET_DEV_INFO_V_DW4_RETRY_SHIFT 16 857#define SET_DEV_INFO_V_DW4_ITNEXUS_SHIFT 0 858 859/** \brief the data structure of SAS Re_Initialize Command 860 * 861 * use to describe MPI SAS RE_INITIALIZE Command (64 bytes) 862 * 863 */ 864typedef struct agsaSasReInitializeCmd_s { 865 bit32 tag; 866 bit32 setFlags; 867 bit32 MaxPorts; 868 bit32 openRejReCmdData; 869 bit32 sataHOLTMO; 870 bit32 reserved[10]; 871} agsaSasReInitializeCmd_t; 872 873 874/** \brief the data structure of SGPIO Command 875 * 876 * use to describe MPI serial GPIO Command (64 bytes) 877 * 878 */ 879typedef struct agsaSGpioCmd_s { 880 bit32 tag; 881 bit32 regIndexRegTypeFunctionFrameType; 882 bit32 regCount; 883 bit32 writeData[OSSA_SGPIO_MAX_WRITE_DATA_COUNT]; 884} agsaSGpioCmd_t; 885 886/** \brief the data structure of PCIE Diagnostic Command 887 * 888 * use to describe MPI PCIE Diagnostic Command for SPCv (128 bytes) 889 * 890 */ 891typedef struct agsaPCIeDiagExecuteCmd_s { 892 bit32 tag; /* 1 */ 893 bit32 CmdTypeDesc; /* 2 */ 894 bit32 UUM_EDA; /* 3 */ 895 bit32 UDTR1_UDT0; /* 4 */ 896 bit32 UDT5_UDT2; /* 5 */ 897 bit32 UDTR5_UDTR2; /* 6 */ 898 bit32 Res_IOS; /* 7 */ 899 bit32 rdAddrLower; /* 8 */ 900 bit32 rdAddrUpper; /* 9 */ 901 bit32 wrAddrLower; /* 10 */ 902 bit32 wrAddrUpper; /* 11 */ 903 bit32 len; /* 12 */ 904 bit32 pattern; /* 13 */ 905 bit32 reserved2[2]; /* 14 15 */ 906 bit32 reserved3[16]; /* 15 31 */ 907} agsaPCIeDiagExecuteCmd_t; 908 909 910/** \brief the data structure of PCI Diagnostic Command for SPC 911 * 912 * use to describe MPI PCI Diagnostic Command for SPC (64 bytes) 913 * 914 */ 915typedef struct agsa_SPC_PCIDiagExecuteCmd_s { 916 bit32 tag; 917 bit32 CmdTypeDesc; 918 bit32 reserved1[5]; 919 bit32 rdAddrLower; 920 bit32 rdAddrUpper; 921 bit32 wrAddrLower; 922 bit32 wrAddrUpper; 923 bit32 len; 924 bit32 pattern; 925 bit32 reserved2[2]; 926} agsa_SPC_PCIDiagExecuteCmd_t; 927 928/** \brief the data structure of GET DFE Data Command 929 * 930 * use to describe GET DFE Data Command for SPCv (128 bytes) 931 * 932 */ 933typedef struct agsaGetDDEFDataCmd_s { 934 bit32 tag; /* 1 */ 935 bit32 reserved_In_Ln;/* 2 */ 936 bit32 MCNT; /* 3 */ 937 bit32 reserved1[3]; /* 4 - 6 */ 938 bit32 Buf_AddrL; /* 7 */ 939 bit32 Buf_AddrH; /* 8 */ 940 bit32 Buf_Len; /* 9 */ 941 bit32 E_reserved; /* 10 */ 942 bit32 reserved2[21]; /* 11 - 31 */ 943} agsaGetDDEFDataCmd_t; 944 945 946/*********************************************** 947 * outbound IOMBs 948 ***********************************************/ 949/** \brief the data structure of Echo Response 950 * 951 * use to describe MPI Echo Response (64 bytes) 952 * 953 */ 954typedef struct agsaEchoRsp_s { 955 bit32 tag; 956 bit32 payload[14]; 957} agsaEchoRsp_t; 958 959/** \brief the data structure of HW Event from Outbound 960 * 961 * use to describe MPI HW Event (64 bytes) 962 * 963 */ 964typedef struct agsaHWEvent_SPC_OUB_s { 965 bit32 LRStatusEventPhyIdPortId; 966 bit32 EVParam; 967 bit32 NpipPortState; 968 agsaSASIdentify_t sasIdentify; 969 agsaFisRegDeviceToHost_t sataFis; 970} agsaHWEvent_SPC_OUB_t; 971 972#define PHY_ID_BITS 0x000000F0 973#define LINK_RATE_MASK 0xF0000000 974#define STATUS_BITS 0x0F000000 975#define HW_EVENT_BITS 0x00FFFF00 976 977typedef struct agsaHWEvent_Phy_OUB_s { 978 bit32 tag; 979 bit32 Status; 980 bit32 ReservedPhyId; 981} agsaHWEvent_Phy_OUB_t; 982 983/** \brief the data structure of HW Event from Outbound 984 * 985 * use to describe MPI HW Event (64 bytes) 986 * 987 */ 988typedef struct agsaHWEvent_V_OUB_s { 989 bit32 LRStatEventPortId; 990 bit32 EVParam; 991 bit32 RsvPhyIdNpipRsvPortState; 992 agsaSASIdentify_t sasIdentify; 993 agsaFisRegDeviceToHost_t sataFis; 994} agsaHWEvent_V_OUB_t; 995 996#define PHY_ID_V_BITS 0x00FF0000 997#define NIPP_V_BITS 0x0000FF00 998 999 1000 1001/** \brief the data structure of SSP Completion Response 1002 * 1003 * use to describe MPI SSP Completion Response (1024 bytes) 1004 * 1005 */ 1006typedef struct agsaSSPCompletionRsp_s { 1007 bit32 tag; 1008 bit32 status; 1009 bit32 param; 1010 bit32 SSPTag; 1011 agsaSSPResponseInfoUnit_t SSPrsp; 1012 bit32 respData; 1013 bit32 senseData[5]; 1014 bit32 respData1[239]; 1015} agsaSSPCompletionRsp_t; 1016 1017 1018/** \brief the data structure of SSP Completion DIF Response 1019 * 1020 * use to describe MPI SSP Completion DIF Response (1024 bytes) 1021 * 1022 */ 1023typedef struct agsaSSPCompletionDifRsp_s { 1024 bit32 tag; 1025 bit32 status; 1026 bit32 param; 1027 bit32 SSPTag; 1028 bit32 Device_Id; 1029 bit32 UpperLBA; 1030 bit32 LowerLBA; 1031 bit32 sasAddressHi; 1032 bit32 sasAddressLo; 1033 bit32 ExpectedCRCUDT01; 1034 bit32 ExpectedUDT2345; 1035 bit32 ActualCRCUDT01; 1036 bit32 ActualUDT2345; 1037 bit32 DIFErrDevID; 1038 bit32 ErrBoffsetEDataLen; 1039 bit32 EDATA_FRM; 1040 1041} agsaSSPCompletionDifRsp_t; 1042 1043 1044/* SSPTag bit fields Bits [31:16] */ 1045#define SSP_RESCV_BIT 0x00010000 /* Bits [16] */ 1046#define SSP_RESCV_PAD 0x00060000 /* Bits [18:17] */ 1047#define SSP_RESCV_PAD_SHIFT 17 1048#define SSP_AGR_S_BIT (1 << 19) /* Bits [19] */ 1049 1050/** \brief the data structure of SMP Completion Response 1051 * 1052 * use to describe MPI SMP Completion Response (1024 bytes) 1053 * 1054 */ 1055typedef struct agsaSMPCompletionRsp_s { 1056 bit32 tag; 1057 bit32 status; 1058 bit32 param; 1059 bit32 SMPrsp[252]; 1060} agsaSMPCompletionRsp_t; 1061 1062/** \brief the data structure of Deregister Device Response 1063 * 1064 * use to describe MPI Deregister Device Response (64 bytes) 1065 * 1066 */ 1067typedef struct agsaDeregDevHandleRsp_s { 1068 bit32 tag; 1069 bit32 status; 1070 bit32 deviceId; 1071 bit32 reserved[12]; 1072} agsaDeregDevHandleRsp_t; 1073 1074/** \brief the data structure of Get Device Handle Response 1075 * 1076 * use to describe MPI Get Device Handle Response (64 bytes) 1077 * 1078 */ 1079typedef struct agsaGetDevHandleRsp_s { 1080 bit32 tag; 1081 bit32 DeviceIdcPortId; 1082 bit32 deviceId[13]; 1083} agsaGetDevHandleRsp_t; 1084 1085#define DEVICE_IDC_BITS 0x00FFFF00 1086#define DEVICE_ID_BITS 0x00000FFF 1087 1088/** \brief the data structure of Local Phy Control Response 1089 * 1090 * use to describe MPI Local Phy Control Response (64 bytes) 1091 * 1092 */ 1093typedef struct agsaLocalPhyCntrlRsp_s { 1094 bit32 tag; 1095 bit32 phyOpId; 1096 bit32 status; 1097 bit32 reserved[12]; 1098} agsaLocalPhyCntrlRsp_t; 1099 1100#define LOCAL_PHY_OP_BITS 0x0000FF00 1101#define LOCAL_PHY_PHYID 0x000000FF 1102 1103/** \brief the data structure of DEVICE_REGISTRATION Response 1104 * 1105 * use to describe device registration response (64 bytes) 1106 * 1107 */ 1108typedef struct agsaDeviceRegistrationRsp_s { 1109 bit32 tag; 1110 bit32 status; 1111 bit32 deviceId; 1112 bit32 reserved[12]; 1113} agsaDeviceRegistrationRsp_t; 1114 1115 1116#define FAILURE_OUT_OF_RESOURCE 0x01 /* The device registration failed because the SPC 8x6G is running out of device handle resources. The parameter DEVICE_ID is not used. */ 1117#define FAILURE_DEVICE_ALREADY_REGISTERED 0x02 /* The device registration failed because the SPC 8x6G detected an existing device handle with a similar SAS address. The parameter DEVICE_ID contains the existing DEVICE _ID assigned to the SAS device. */ 1118#define FAILURE_INVALID_PHY_ID 0x03 /* Only for directly-attached SATA registration. The device registration failed because the SPC 8x6G detected an invalid (out-of-range) PHY ID. */ 1119#define FAILURE_PHY_ID_ALREADY_REGISTERED 0x04 /* Only for directly-attached SATA registration. The device registration failed because the SPC 8x6G detected an already -registered PHY ID for a directly attached SATA drive. */ 1120#define FAILURE_PORT_ID_OUT_OF_RANGE 0x05 /* PORT_ID specified in the REGISTER_DEVICE Command is out-of range (0-7). */ 1121#define FAILURE_PORT_NOT_VALID_STATE 0x06 /* The PORT_ID specified in the REGISTER_DEVICE Command is not in PORT_VALID state. */ 1122#define FAILURE_DEVICE_TYPE_NOT_VALID 0x07 /* The device type, specified in the �S field in the REGISTER_DEVICE Command is not valid. */ 1123 1124#define MPI_ERR_DEVICE_HANDLE_UNAVAILABLE 0x1020 /* The device registration failed because the SPCv controller is running out of device handle resources. The parameter DEVICE_ID is not used. */ 1125#define MPI_ERR_DEVICE_ALREADY_REGISTERED 0x1021 /* The device registration failed because the SPCv controller detected an existing device handle with the same SAS address. The parameter DEVICE_ID contains the existing DEVICE _ID assigned to the SAS device. */ 1126#define MPI_ERR_DEVICE_TYPE_NOT_VALID 0x1022 /* The device type, specified in the �S field in the REGISTER_DEVICE_HANDLE Command (page 274) is not valid. */ 1127#define MPI_ERR_PORT_INVALID_PORT_ID 0x1041 /* specified in the REGISTER_DEVICE_HANDLE Command (page 274) is invalid. i.e Out of supported range */ 1128#define MPI_ERR_PORT_STATE_NOT_VALID 0x1042 /* The PORT_ID specified in the REGISTER_DEVICE_HANDLE Command (page 274) is not in PORT_VALID state. */ 1129#define MPI_ERR_PORT_STATE_NOT_IN_USE 0x1043 1130#define MPI_ERR_PORT_OP_NOT_SUPPORTED 0x1044 1131#define MPI_ERR_PORT_SMP_PHY_WIDTH_EXCEED 0x1045 1132#define MPI_ERR_PORT_NOT_IN_CORRECT_STATE 0x1047 /*MPI_ERR_DEVICE_ACCEPT_PENDING*/ 1133 1134 1135#define MPI_ERR_PHY_ID_INVALID 0x1061 /* Only for directly-attached SATA registration. The device registration failed because the SPCv controller detected an invalid (out-of-range) PHY ID. */ 1136#define MPI_ERR_PHY_ID_ALREADY_REGISTERED 0x1062 /* Only for directly-attached SATA registration. The device registration failed because the SPCv controller detected an alreadyregistered PHY ID for a directly-attached SATA drive. */ 1137 1138 1139 1140 1141/** \brief the data structure of SATA Completion Response 1142 * 1143 * use to describe MPI SATA Completion Response (64 bytes) 1144 * 1145 */ 1146typedef struct agsaSATACompletionRsp_s { 1147 bit32 tag; 1148 bit32 status; 1149 bit32 param; 1150 bit32 FSATArsp; 1151 bit32 respData[11]; 1152} agsaSATACompletionRsp_t; 1153 1154/** \brief the data structure of SATA Event Response 1155 * 1156 * use to describe MPI SATA Event Response (64 bytes) 1157 * 1158 */ 1159typedef struct agsaSATAEventRsp_s { 1160 bit32 tag; 1161 bit32 event; 1162 bit32 portId; 1163 bit32 deviceId; 1164 bit32 reserved[11]; 1165} agsaSATAEventRsp_t; 1166 1167/** \brief the data structure of SSP Event Response 1168 * 1169 * use to describe MPI SSP Event Response (64 bytes) 1170 * 1171 */ 1172typedef struct agsaSSPEventRsp_s { 1173 bit32 tag; 1174 bit32 event; 1175 bit32 portId; 1176 bit32 deviceId; 1177 bit32 SSPTag; 1178 bit32 EVT_PARAM0_or_LBAH; 1179 bit32 EVT_PARAM1_or_LBAL; 1180 bit32 SAS_ADDRH; 1181 bit32 SAS_ADDRL; 1182 bit32 UDT1_E_UDT0_E_CRC_E; 1183 bit32 UDT5_E_UDT4_E_UDT3_E_UDT2_E; 1184 bit32 UDT1_A_UDT0_A_CRC_A; 1185 bit32 UDT5_A_UDT4_A_UDT3_A_UDT2_A; 1186 bit32 HW_DEVID_Reserved_DIF_ERR; 1187 bit32 EDATA_LEN_ERR_BOFF; 1188 bit32 EDATA_FRM; 1189} agsaSSPEventRsp_t; 1190 1191#define SSPTAG_BITS 0x0000FFFF 1192 1193/** \brief the data structure of Get Device Info Response 1194 * 1195 * use to describe MPI Get Device Info Response (64 bytes) 1196 * 1197 */ 1198typedef struct agsaGetDevInfoRspSpc_s { 1199 bit32 tag; 1200 bit32 status; 1201 bit32 deviceId; 1202 bit32 dTypeSrateSMPTOArPortID; 1203 bit32 FirstBurstSizeITNexusTimeOut; 1204 bit8 sasAddrHi[4]; 1205 bit8 sasAddrLow[4]; 1206 bit32 reserved[8]; 1207} agsaGetDevInfoRsp_t; 1208 1209#define SMPTO_BITS 0xFFFF 1210#define NEXUSTO_BITS 0xFFFF 1211#define FIRST_BURST 0xFFFF 1212#define FLAG_BITS 0x3 1213#define LINK_RATE_BITS 0xFF 1214#define DEV_TYPE_BITS 0x30000000 1215 1216/** \brief the data structure of Get Device Info Response V 1217 * 1218 * use to describe MPI Get Device Info Response (64 bytes) 1219 * 1220 */ 1221typedef struct agsaGetDevInfoRspV_s { 1222 bit32 tag; 1223 bit32 status; 1224 bit32 deviceId; 1225 bit32 ARSrateSMPTimeOutPortID; 1226 bit32 IRMcnITNexusTimeOut; 1227 bit8 sasAddrHi[4]; 1228 bit8 sasAddrLow[4]; 1229 bit32 reserved[8]; 1230} agsaGetDevInfoRspV_t; 1231 1232#define SMPTO_VBITS 0xFFFF 1233#define NEXUSTO_VBITS 0xFFFF 1234#define FIRST_BURST_MCN 0xF 1235#define FLAG_VBITS 0x3 1236#define LINK_RATE_VBITS 0xFF 1237#define DEV_TYPE_VBITS 0x10000000 1238 1239 1240/** \brief the data structure of Get Phy Profile Command IOMB V 1241 * 1242 */ 1243typedef struct agsaGetPhyProfileCmd_V_s { 1244 bit32 tag; 1245 bit32 Reserved_Ppc_SOP_PHYID; 1246 bit32 reserved[29]; 1247} agsaGetPhyProfileCmd_V_t; 1248 1249 1250/** \brief the data structure of Get Phy Profile Response IOMB V 1251 * 1252 */ 1253typedef struct agsaGetPhyProfileRspV_s { 1254 bit32 tag; 1255 bit32 status; 1256 bit32 Reserved_Ppc_SOP_PHYID; 1257 bit32 PageSpecificArea[12]; 1258} agsaGetPhyProfileRspV_t; 1259 1260/** \brief the data structure of Set Phy Profile Command IOMB V 1261 * 1262 */ 1263typedef struct agsaSetPhyProfileCmd_V_s { 1264 bit32 tag; 1265 bit32 Reserved_Ppc_SOP_PHYID; 1266 bit32 PageSpecificArea[29]; 1267} agsaSetPhyProfileCmd_V_t; 1268 1269/** \brief the data structure of GetVis Command IOMB V 1270 * OPC_OUB_GET_VIST_CAP_RSP 1271 */ 1272typedef struct agsaGetVHistCap_V_s { 1273 bit32 tag; 1274 bit32 Channel; 1275 bit32 NumBitLo; 1276 bit32 NumBitHi; 1277 bit32 reserved0; 1278 bit32 reserved1; 1279 bit32 PcieAddrLo; 1280 bit32 PcieAddrHi; 1281 bit32 ByteCount; 1282 bit32 reserved2[22]; 1283} agsaGetVHistCap_V_t; 1284 1285/** \brief the data structure of Set Phy Profile Response IOMB V 1286 * 1287 */ 1288typedef struct agsaSetPhyProfileRspV_s { 1289 bit32 tag; 1290 bit32 status; 1291 bit32 Reserved_Ppc_PHYID; 1292 bit32 PageSpecificArea[12]; 1293} agsaSetPhyProfileRspV_t; 1294 1295typedef struct agsaGetPhyInfoV_s { 1296 bit32 tag; 1297 bit32 Reserved_SOP_PHYID; 1298 bit32 reserved[28]; 1299} agsaGetPhyInfoV_t; 1300 1301 1302#define SPC_GET_SAS_PHY_ERR_COUNTERS 1 1303#define SPC_GET_SAS_PHY_ERR_COUNTERS_CLR 2 1304#define SPC_GET_SAS_PHY_BW_COUNTERS 3 1305 1306 1307/** \brief the data structure of FW_FLASH_UPDATE Response 1308 * 1309 * use to describe MPI FW_FLASH_UPDATE Response (64 bytes) 1310 * 1311 */ 1312typedef struct agsaFwFlashUpdateRsp_s { 1313 bit32 tag; 1314 bit32 status; 1315 bit32 reserved[13]; 1316} agsaFwFlashUpdateRsp_t; 1317 1318#ifdef SPC_ENABLE_PROFILE 1319typedef struct agsaFwProfileRsp_s { 1320 bit32 tag; 1321 bit32 status; 1322 bit32 len; 1323 bit32 reserved[12]; 1324} agsaFwProfileRsp_t; 1325#endif 1326/** \brief the data structure of GPIO Response 1327 * 1328 * use to describe MPI GPIO Response (64 bytes) 1329 */ 1330typedef struct agsaGPIORsp_s { 1331 bit32 tag; 1332 bit32 reserved[2]; 1333 bit32 GpioRdVal; 1334 bit32 GpioIe; 1335 bit32 OT11_0; 1336 bit32 OT19_12; 1337 bit32 GPIEVChange; 1338 bit32 GPIEVRise; 1339 bit32 GPIEVFall; 1340 bit32 reserved1[5]; 1341} agsaGPIORsp_t; 1342 1343/** \brief the data structure of GPIO Event 1344 * 1345 * use to describe MPI GPIO Event Response (64 bytes) 1346 */ 1347typedef struct agsaGPIOEvent_s { 1348 bit32 GpioEvent; 1349 bit32 reserved[14]; 1350} agsaGPIOEvent_t; 1351 1352/** \brief the data structure of GENERAL_EVENT Response 1353 * 1354 * use to describe MPI GENERNAL_EVENT Notification (64 bytes) 1355 * 1356 */ 1357typedef struct agsaGenernalEventRsp_s { 1358 bit32 status; 1359 bit32 inboundIOMB[14]; 1360} agsaGenernalEventRsp_t; 1361 1362/** \brief the data structure of SSP_ABORT Response 1363 * 1364 * use to describe MPI SSP_ABORT (64 bytes) 1365 * 1366 */ 1367typedef struct agsaSSPAbortRsp_s { 1368 bit32 tag; 1369 bit32 status; 1370 bit32 scp; 1371 bit32 reserved[12]; 1372} agsaSSPAbortRsp_t; 1373 1374/** \brief the data structure of SATA_ABORT Response 1375 * 1376 * use to describe MPI SATA_ABORT (64 bytes) 1377 * 1378 */ 1379typedef struct agsaSATAAbortRsp_s { 1380 bit32 tag; 1381 bit32 status; 1382 bit32 scp; 1383 bit32 reserved[12]; 1384} agsaSATAAbortRsp_t; 1385 1386/** \brief the data structure of SAS Diagnostic Start/End Response 1387 * 1388 * use to describe MPI SAS Diagnostic Start/End Response (64 bytes) 1389 * 1390 */ 1391typedef struct agsaSASDiagStartEndRsp_s { 1392 bit32 tag; 1393 bit32 Status; 1394 bit32 reserved[13]; 1395} agsaSASDiagStartEndRsp_t; 1396 1397/** \brief the data structure of SAS Diagnostic Execute Response 1398 * 1399 * use to describe MPI SAS Diagnostic Execute Response (64 bytes) 1400 * 1401 */ 1402typedef struct agsaSASDiagExecuteRsp_s { 1403 bit32 tag; 1404 bit32 CmdTypeDescPhyId; 1405 bit32 Status; 1406 bit32 ReportData; 1407 bit32 reserved[11]; 1408} agsaSASDiagExecuteRsp_t; 1409 1410/** \brief the data structure of General Event Notification Response 1411 * 1412 * use to describe MPI General Event Notification Response (64 bytes) 1413 * 1414 */ 1415typedef struct agsaGeneralEventRsp_s { 1416 bit32 status; 1417 bit32 inbIOMBpayload[14]; 1418} agsaGeneralEventRsp_t; 1419 1420#define GENERAL_EVENT_PAYLOAD 14 1421#define OPCODE_BITS 0x00000fff 1422 1423/* 1424Table 171 GENERAL_EVENT Notification Status Field Codes 1425Value Name Description 1426*/ 1427#define GEN_EVENT_IOMB_V_BIT_NOT_SET 0x01 /* INBOUND_ Inbound IOMB is received with the V bit in the IOMB header not set. */ 1428#define GEN_EVENT_INBOUND_IOMB_OPC_NOT_SUPPORTED 0x02 /* Inbound IOMB is received with an unsupported OPC. */ 1429#define GEN_EVENT_IOMB_INVALID_OBID 0x03 /* INBOUND Inbound IOMB is received with an invalid OBID. */ 1430#define GEN_EVENT_DS_IN_NON_OPERATIONAL 0x39 /* DEVICE_HANDLE_ACCEPT command failed due to the device being in DS_NON_OPERATIONAL state. */ 1431#define GEN_EVENT_DS_IN_RECOVERY 0x3A /* DEVICE_HANDLE_ACCEPT command failed due to device being in DS_IN_RECOVERY state. */ 1432#define GEN_EVENT_DS_INVALID 0x49 /* DEVICE_HANDLE_ACCEPT command failed due to device being in DS_INVALID state. */ 1433 1434#define GEN_EVENT_IO_XFER_READ_COMPL_ERR 0x50 /* Indicates the PCIe Read Request to fetch one or more inbound IOMBs received 1435 a failed completion response. The first and second Dwords of the 1436 INBOUND IOMB field ( Dwords 2 and 3) contains information to identifying 1437 the location in the inbound queue where the error occurred. 1438 Dword 2 bits[15:0] contains the inbound queue number. 1439 Dword 2 bits[31:16] specifies how many consecutive IOMBs were affected 1440 by the failed DMA. 1441 Dword 3 specifies the Consumer Index [CI] of the inbound queue where 1442 the DMA operation failed.*/ 1443 1444/** \brief the data structure of SSP Request Received Notification 1445 * 1446 * use to describe MPI SSP Request Received Notification ( 1024 bytes) 1447 * 1448 */ 1449typedef struct agsaSSPReqReceivedNotify_s { 1450 bit32 deviceId; 1451 bit32 iniTagSSPIul; 1452 bit32 frameTypeHssa; 1453 bit32 TlrHdsa; 1454 bit32 SSPIu[251]; 1455} agsaSSPReqReceivedNotify_t; 1456 1457#define SSPIUL_BITS 0x0000FFFF 1458#define INITTAG_BITS 0x0000FFFF 1459#define FRAME_TYPE 0x000000FF 1460#define TLR_BITS 0x00000300 1461 1462/** \brief the data structure of Device Handle Arrived Notification 1463 * 1464 * use to describe MPI Device Handle Arrived Notification ( 64 bytes) 1465 * 1466 */ 1467typedef struct agsaDeviceHandleArrivedNotify_s { 1468 bit32 CTag; 1469 bit32 HostAssignedIdFwdDeviceId; 1470 bit32 ProtConrPortId; 1471 bit8 sasAddrHi[4]; 1472 bit8 sasAddrLow[4]; 1473 bit32 reserved[10]; 1474 1475} agsaDeviceHandleArrivedNotify_t; 1476 1477 1478#define Conrate_V_MASK 0x0000F000 1479#define Conrate_V_SHIFT 12 1480#define Conrate_SPC_MASK 0x0000F000 1481#define Conrate_SPC_SHIFT 4 1482 1483#define Protocol_SPC_MASK 0x00000700 1484#define Protocol_SPC_SHIFT 8 1485#define Protocol_SPC_MASK 0x00000700 1486#define Protocol_SPC_SHIFT 8 1487 1488#define PortId_V_MASK 0xFF 1489#define PortId_SPC_MASK 0x0F 1490 1491#define PROTOCOL_BITS 0x00000700 1492#define PROTOCOL_SHIFT 8 1493 1494#define SHIFT_REG_64K_MASK 0xffff0000 1495#define SHIFT_REG_BIT_SHIFT 8 1496#define SPC_GSM_SM_OFFSET 0x400000 1497#define SPCV_GSM_SM_OFFSET 0x0 1498 1499/** \brief the data structure of Get Time Stamp Response 1500 * 1501 * use to describe MPI Get TIme Stamp Response ( 64 bytes) 1502 * 1503 */ 1504typedef struct agsaGetTimeStampRsp_s { 1505 bit32 tag; 1506 bit32 timeStampLower; 1507 bit32 timeStampUpper; 1508 bit32 reserved[12]; 1509} agsaGetTimeStampRsp_t; 1510 1511/** \brief the data structure of SAS HW Event Ack Response 1512 * 1513 * use to describe SAS HW Event Ack Response ( 64 bytes) 1514 * 1515 */ 1516typedef struct agsaSASHwEventAckRsp_s { 1517 bit32 tag; 1518 bit32 status; 1519 bit32 reserved[13]; 1520} agsaSASHwEventAckRsp_t; 1521 1522/** \brief the data structure of Port Control Response 1523 * 1524 * use to describe Port Control Response ( 64 bytes) 1525 * 1526 */ 1527typedef struct agsaPortControlRsp_s { 1528 bit32 tag; 1529 bit32 portOPPortId; 1530 bit32 status; 1531 bit32 rsvdPortState; 1532 bit32 reserved[11]; 1533} agsaPortControlRsp_t; 1534 1535/** \brief the data structure of SMP Abort Response 1536 * 1537 * use to describe SMP Abort Response ( 64 bytes) 1538 * 1539 */ 1540typedef struct agsaSMPAbortRsp_s { 1541 bit32 tag; 1542 bit32 status; 1543 bit32 scp; 1544 bit32 reserved[12]; 1545} agsaSMPAbortRsp_t; 1546 1547/** \brief the data structure of Get NVMD Data Response 1548 * 1549 * use to describe MPI Get NVMD Data Response (64 bytes) 1550 * 1551 */ 1552typedef struct agsaGetNVMDataRsp_s { 1553 bit32 tag; 1554 bit32 iRTdaBnDpsAsNvm; 1555 bit32 DlenStatus; 1556 bit32 NVMData[12]; 1557} agsaGetNVMDataRsp_t; 1558 1559/** \brief the data structure of Set NVMD Data Response 1560 * 1561 * use to describe MPI Set NVMD Data Response (64 bytes) 1562 * 1563 */ 1564typedef struct agsaSetNVMDataRsp_s { 1565 bit32 tag; 1566 bit32 iPTdaBnDpsAsNvm; 1567 bit32 status; 1568 bit32 reserved[12]; 1569} agsaSetNVMDataRsp_t; 1570 1571/** \brief the data structure of Device Handle Removal 1572 * 1573 * use to describe MPI Device Handle Removel Notification (64 bytes) 1574 * 1575 */ 1576typedef struct agsaDeviceHandleRemoval_s { 1577 bit32 portId; 1578 bit32 deviceId; 1579 bit32 reserved[13]; 1580} agsaDeviceHandleRemoval_t; 1581 1582/** \brief the data structure of Set Device State Response 1583 * 1584 * use to describe MPI Set Device State Response (64 bytes) 1585 * 1586 */ 1587typedef struct agsaSetDeviceStateRsp_s { 1588 bit32 tag; 1589 bit32 status; 1590 bit32 deviceId; 1591 bit32 pds_nds; 1592 bit32 reserved[11]; 1593} agsaSetDeviceStateRsp_t; 1594 1595#define NDS_BITS 0x0F 1596#define PDS_BITS 0xF0 1597 1598/** \brief the data structure of Get Device State Response 1599 * 1600 * use to describe MPI Get Device State Response (64 bytes) 1601 * 1602 */ 1603typedef struct agsaGetDeviceStateRsp_s { 1604 bit32 tag; 1605 bit32 status; 1606 bit32 deviceId; 1607 bit32 ds; 1608 bit32 reserved[11]; 1609} agsaGetDeviceStateRsp_t; 1610 1611/** \brief the data structure of Set Device Info Response 1612 * 1613 * use to describe MPI Set Device Info Response (64 bytes) 1614 * 1615 */ 1616typedef struct agsaSetDeviceInfoRsp_s { 1617 bit32 tag; 1618 bit32 status; 1619 bit32 deviceId; 1620 bit32 SA_SR_SI; 1621 bit32 A_R_ITNT; 1622 bit32 reserved[10]; 1623} agsaSetDeviceInfoRsp_t; 1624 1625/** \brief the data structure of SAS Re_Initialize Response 1626 * 1627 * use to describe MPI SAS RE_INITIALIZE Response (64 bytes) 1628 * 1629 */ 1630typedef struct agsaSasReInitializeRsp_s { 1631 bit32 tag; 1632 bit32 status; 1633 bit32 setFlags; 1634 bit32 MaxPorts; 1635 bit32 openRejReCmdData; 1636 bit32 sataHOLTMO; 1637 bit32 reserved[9]; 1638} agsaSasReInitializeRsp_t; 1639 1640/** \brief the data structure of SGPIO Response 1641 * 1642 * use to describe MPI serial GPIO Response IOMB (64 bytes) 1643 * 1644 */ 1645typedef struct agsaSGpioRsp_s { 1646 bit32 tag; 1647 bit32 resultFunctionFrameType; 1648 bit32 readData[OSSA_SGPIO_MAX_READ_DATA_COUNT]; 1649} agsaSGpioRsp_t; 1650 1651 1652/** \brief the data structure of PCIe diag response 1653 * 1654 * use to describe PCIe diag response IOMB (64 bytes) 1655 * 1656 */ 1657 1658typedef struct agsaPCIeDiagExecuteRsp_s { 1659 bit32 tag; /* 1 */ 1660 bit32 CmdTypeDesc; /* 2 */ 1661 bit32 Status; /* 3 */ 1662 bit32 reservedDW4; /* 4 */ 1663 bit32 reservedDW5; /* 5 */ 1664 bit32 ERR_BLKH; /* 6 */ 1665 bit32 ERR_BLKL; /* 7 */ 1666 bit32 DWord8; /* 8 */ 1667 bit32 DWord9; /* 9 */ 1668 bit32 DWord10; /* 10 */ 1669 bit32 DWord11; /* 11 */ 1670 bit32 DIF_ERR; /* 12 */ 1671 bit32 reservedDW13; /* 13 */ 1672 bit32 reservedDW14; /* 14 */ 1673 bit32 reservedDW15; /* 15 */ 1674} agsaPCIeDiagExecuteRsp_t; 1675 1676/** \brief the data structure of PCI diag response 1677 * 1678 * use to describe PCI diag response IOMB for SPC (64 bytes) 1679 * 1680 */ 1681 1682typedef struct agsa_SPC_PCIeDiagExecuteRsp_s { 1683 bit32 tag; /* 1 */ 1684 bit32 CmdTypeDesc; /* 2 */ 1685 bit32 Status; /* 3 */ 1686 bit32 reserved[12]; /* 4 15 */ 1687} agsa_SPC_PCIeDiagExecuteRsp_t; 1688 1689/** \brief the data structure of GET DFE Data Response 1690 * 1691 * use to describe GET DFE Data Response for SPCv (64 bytes) 1692 * 1693 */ 1694typedef struct agsaGetDDEFDataRsp_s { 1695 bit32 tag; /* 1 */ 1696 bit32 status; /* 2 */ 1697 bit32 reserved_In_Ln;/* 3 */ 1698 bit32 MCNT; /* 4 */ 1699 bit32 NBT; /* 5 */ 1700 bit32 reserved[10]; /* 6 - 15 */ 1701} agsaGetDDEFDataRsp_t; 1702 1703/** \brief the data structure of GET Vis Data Response 1704 * 1705 * use to describe GET Vis Data Response for SPCv (64 bytes) 1706 * 1707 */ 1708typedef struct agsaGetVHistCapRsp_s { 1709 bit32 tag; /* 1 */ 1710 bit32 status; /* 2 */ 1711 bit32 channel; /* 3 */ 1712 bit32 BistLo; /* 4 */ 1713 bit32 BistHi; /* 5 */ 1714 bit32 BytesXfered; /* 6 */ 1715 bit32 PciLo; /* 7 */ 1716 bit32 PciHi; /* 8 */ 1717 bit32 PciBytecount; /* 9 */ 1718 bit32 reserved[5]; /* 10 - 15 */ 1719} agsaGetVHistCapRsp_t; 1720 1721typedef struct agsaSetControllerConfigCmd_s { 1722 bit32 tag; 1723 bit32 pageCode; 1724 bit32 configPage[13]; /* Page code specific fields */ 1725} agsaSetControllerConfigCmd_t; 1726 1727 1728typedef struct agsaSetControllerConfigRsp_s { 1729 bit32 tag; 1730 bit32 status; 1731 bit32 errorQualifierPage; 1732 bit32 reserved[12]; 1733} agsaSetControllerConfigRsp_t; 1734 1735typedef struct agsaGetControllerConfigCmd_s { 1736 bit32 tag; 1737 bit32 pageCode; 1738 bit32 INT_VEC_MSK0; 1739 bit32 INT_VEC_MSK1; 1740 bit32 reserved[11]; 1741} agsaGetControllerConfigCmd_t; 1742 1743typedef struct agsaGetControllerConfigRsp_s { 1744 bit32 tag; 1745 bit32 status; 1746 bit32 errorQualifier; 1747 bit32 configPage[12]; /* Page code specific fields */ 1748} agsaGetControllerConfigRsp_t; 1749 1750typedef struct agsaDekManagementCmd_s { 1751 bit32 tag; 1752 bit32 KEKIDX_Reserved_TBLS_DSOP; 1753 bit32 dekIndex; 1754 bit32 tableAddrLo; 1755 bit32 tableAddrHi; 1756 bit32 tableEntries; 1757 bit32 Reserved_DBF_TBL_SIZE; 1758} agsaDekManagementCmd_t; 1759 1760typedef struct agsaDekManagementRsp_s { 1761 bit32 tag; 1762 bit32 status; 1763 bit32 flags; 1764 bit32 dekIndex; 1765 bit32 errorQualifier; 1766 bit32 reserved[12]; 1767} agsaDekManagementRsp_t; 1768 1769typedef struct agsaKekManagementCmd_s { 1770 bit32 tag; 1771 bit32 NEWKIDX_CURKIDX_KBF_Reserved_SKNV_KSOP; 1772 bit32 reserved; 1773 bit32 kekBlob[12]; 1774} agsaKekManagementCmd_t; 1775 1776typedef struct agsaKekManagementRsp_s { 1777 bit32 tag; 1778 bit32 status; 1779 bit32 flags; 1780 bit32 errorQualifier; 1781 bit32 reserved[12]; 1782} agsaKekManagementRsp_t; 1783 1784 1785typedef struct agsaCoalSspComplCxt_s { 1786 bit32 tag; 1787 bit16 SSPTag; 1788 bit16 reserved; 1789} agsaCoalSspComplCxt_t; 1790 1791/** \brief the data structure of SSP Completion Response 1792 * 1793 * use to describe MPI SSP Completion Response (1024 bytes) 1794 * 1795 */ 1796typedef struct agsaSSPCoalescedCompletionRsp_s { 1797 bit32 coalescedCount; 1798 agsaCoalSspComplCxt_t sspComplCxt[1]; /* Open ended array */ 1799} agsaSSPCoalescedCompletionRsp_t; 1800 1801 1802/** \brief the data structure of SATA Completion Response 1803 * 1804 * use to describe MPI SATA Completion Response (1024 bytes) 1805 * 1806 */ 1807typedef struct agsaCoalStpComplCxt_s { 1808 bit32 tag; 1809 bit16 reserved; 1810} agsaCoalStpComplCxt_t; 1811 1812typedef struct agsaSATACoalescedCompletionRsp_s { 1813 bit32 coalescedCount; 1814 agsaCoalStpComplCxt_t stpComplCxt[1]; /* Open ended array */ 1815} agsaSATACoalescedCompletionRsp_t; 1816 1817 1818/** \brief the data structure of Operator Mangement Command 1819 * 1820 * use to describe OPR_MGMT Command (128 bytes) 1821 * 1822 */ 1823typedef struct agsaOperatorMangmentCmd_s{ 1824 bit32 tag; /* 1 */ 1825 bit32 OPRIDX_AUTIDX_R_KBF_PKT_OMO;/* 2 */ 1826 bit8 IDString_Role[32]; /* 3 10 */ 1827#ifndef HAILEAH_HOST_6G_COMPITIBILITY_FLAG 1828 agsaEncryptKekBlob_t Kblob; /* 11 22 */ 1829#endif 1830 bit32 reserved[8]; /* 23 31 */ 1831} agsaOperatorMangmentCmd_t; 1832 1833 1834/* 1835 * 1836 * use to describe OPR_MGMT Response (64 bytes) 1837 * 1838 */ 1839typedef struct agsaOperatorMangmentRsp_s { 1840 bit32 tag; /* 1 */ 1841 bit32 status; /* 2 */ 1842 bit32 OPRIDX_AUTIDX_R_OMO; /* 3 */ 1843 bit32 errorQualifier; /* 4 */ 1844 bit32 reserved[10]; /* 5 15 */ 1845} agsaOperatorMangmenRsp_t; 1846 1847/** \brief the data structure of Set Operator Command 1848 * 1849 * use to describe Set Operator Command (64 bytes) 1850 * 1851 */ 1852typedef struct agsaSetOperatorCmd_s{ 1853 bit32 tag; /* 1 */ 1854 bit32 OPRIDX_PIN_ACS; /* 2 */ 1855 bit32 cert[10]; /* 3 12 */ 1856 bit32 reserved[3]; /* 13 15 */ 1857} agsaSetOperatorCmd_t; 1858 1859/* 1860 * 1861 * use to describe Set Operator Response (64 bytes) 1862 * 1863 */ 1864typedef struct agsaSetOperatorRsp_s { 1865 bit32 tag; /* 1 */ 1866 bit32 status; /* 2 */ 1867 bit32 ERR_QLFR_OPRIDX_PIN_ACS;/* 3 */ 1868 bit32 reserved[12]; /* 4 15 */ 1869} agsaSetOperatorRsp_t; 1870 1871/** \brief the data structure of Get Operator Command 1872 * 1873 * use to describe Get Operator Command (64 bytes) 1874 * 1875 */ 1876typedef struct agsaGetOperatorCmd_s{ 1877 bit32 tag; /* 1 */ 1878 bit32 option; /* 2 */ 1879 bit32 OprBufAddrLo; /* 3 */ 1880 bit32 OprBufAddrHi; /* 4*/ 1881 bit32 reserved[11]; /*5 15*/ 1882} agsaGetOperatorCmd_t; 1883 1884/* 1885 * 1886 * use to describe Get Operator Response (64 bytes) 1887 * 1888 */ 1889typedef struct agsaGetOperatorRsp_s { 1890 bit32 tag; /* 1 */ 1891 bit32 status; /* 2 */ 1892 bit32 Num_Option; /* 3 */ 1893 bit32 IDString[8]; /* 4 11*/ 1894 bit32 reserved[4]; /* 12 15*/ 1895} agsaGetOperatorRsp_t; 1896 1897/* 1898 * 1899 * use to start Encryption BIST (128 bytes) 1900 * 0x105 1901 */ 1902typedef struct agsaEncryptBist_s { 1903 bit32 tag; /* 1 */ 1904 bit32 r_subop; /* 2 */ 1905 bit32 testDiscption[28]; /* 3 31 */ 1906} agsaEncryptBist_t; 1907 1908/* 1909 * 1910 * use to describe Encryption BIST Response (64 bytes) 1911 * 0x905 1912 */ 1913 1914typedef struct agsaEncryptBistRsp_s { 1915 bit32 tag; /* 1 */ 1916 bit32 status; /* 2 */ 1917 bit32 subop; /* 3 */ 1918 bit32 testResults[11]; /* 4 15 */ 1919} agsaEncryptBistRsp_t; 1920 1921/** \brief the data structure of DifEncOffload Command 1922 * 1923 * use to describe Set DifEncOffload Command (128 bytes) 1924 * 1925 */ 1926typedef struct agsaDifEncOffloadCmd_s{ 1927 bit32 tag; /* 1 */ 1928 bit32 option; /* 2 */ 1929 bit32 reserved[2]; /* 3-4 */ 1930 bit32 Src_Data_Len; /* 5 */ 1931 bit32 Dst_Data_Len; /* 6 */ 1932 bit32 flags; /* 7 */ 1933 bit32 UDTR01UDT01; /* 8 */ 1934 bit32 UDT2345; /* 9 */ 1935 bit32 UDTR2345; /* 10 */ 1936 bit32 DPLR0SecCnt_IOSeed; /* 11 */ 1937 bit32 DPL_Addr_Lo; /* 12 */ 1938 bit32 DPL_Addr_Hi; /* 13 */ 1939 bit32 KeyIndex_CMode_KTS_ENT_R; /* 14 */ 1940 bit32 EPLR0SecCnt_KS_ENSS; /* 15 */ 1941 bit32 keyTag_W0; /* 16 */ 1942 bit32 keyTag_W1; /* 17 */ 1943 bit32 tweakVal_W0; /* 18 */ 1944 bit32 tweakVal_W1; /* 19 */ 1945 bit32 tweakVal_W2; /* 20 */ 1946 bit32 tweakVal_W3; /* 21 */ 1947 bit32 EPL_Addr_Lo; /* 22 */ 1948 bit32 EPL_Addr_Hi; /* 23 */ 1949 agsaSgl_t SrcSgl; /* 24-27 */ 1950 agsaSgl_t DstSgl; /* 28-31 */ 1951} agsaDifEncOffloadCmd_t; 1952 1953/* 1954 * 1955 * use to describe DIF/Encryption Offload Response (32 bytes) 1956 * 0x910 1957 */ 1958typedef struct agsaDifEncOffloadRspV_s { 1959 bit32 tag; 1960 bit32 status; 1961 bit32 ExpectedCRCUDT01; 1962 bit32 ExpectedUDT2345; 1963 bit32 ActualCRCUDT01; 1964 bit32 ActualUDT2345; 1965 bit32 DIFErr; 1966 bit32 ErrBoffset; 1967} agsaDifEncOffloadRspV_t; 1968 1969#endif /*__SAMPIDEFS_H__ */ 1970