sampidefs.h revision 285242
1193323Sed/******************************************************************************* 2193323Sed*Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved. 3193323Sed* 4193323Sed*Redistribution and use in source and binary forms, with or without modification, are permitted provided 5193323Sed*that the following conditions are met: 6193323Sed*1. Redistributions of source code must retain the above copyright notice, this list of conditions and the 7193323Sed*following disclaimer. 8193323Sed*2. Redistributions in binary form must reproduce the above copyright notice, 9193323Sed*this list of conditions and the following disclaimer in the documentation and/or other materials provided 10193323Sed*with the distribution. 11193323Sed* 12193323Sed*THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED 13193323Sed*WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 14193323Sed*FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 15193323Sed*FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 16205218Srdivacky*NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 17193323Sed*BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 18198090Srdivacky*LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 19193323Sed*SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE 20193323Sed* 21193323Sed* $FreeBSD: projects/pms/sys/dev/pms/RefTisa/sallsdk/spc/sampidefs.h 285242 2015-07-07 13:17:02Z achim $ 22208599Srdivacky* 23193323Sed********************************************************************************/ 24198090Srdivacky/*******************************************************************************/ 25202878Srdivacky/*! \file sampidefs.h 26202878Srdivacky * \brief The file defines the constants used by SAS/SATA LL layer 27206083Srdivacky * 28202878Srdivacky */ 29202878Srdivacky 30193323Sed/*******************************************************************************/ 31193323Sed 32193323Sed#ifndef __SAMPIDEFS_H__ 33193323Sed 34202878Srdivacky#define __SAMPIDEFS_H__ 35202878Srdivacky 36193323Sed/* for Request Opcode of IOMB */ 37218893Sdim#define OPC_INB_ECHO 0x001 /* */ 38218893Sdim 39193323Sed#define OPC_INB_PHYSTART 0x004 /* */ 40193323Sed#define OPC_INB_PHYSTOP 0x005 /* */ 41193323Sed#define OPC_INB_SSPINIIOSTART 0x006 /* */ 42193323Sed#define OPC_INB_SSPINITMSTART 0x007 /* */ 43193323Sed#define OPC_INB_SSPINIEXTIOSTART 0x008 /* V reserved */ 44193323Sed#define OPC_INB_DEV_HANDLE_ACCEPT 0x009 /* */ 45193323Sed#define OPC_INB_SSPTGTIOSTART 0x00a /* */ 46193323Sed#define OPC_INB_SSPTGTRSPSTART 0x00b /* */ 47193323Sed#define OPC_INB_SSP_ABORT 0x00f /* */ 48208599Srdivacky#define OPC_INB_DEREG_DEV_HANDLE 0x010 /* 16 */ 49208599Srdivacky#define OPC_INB_GET_DEV_HANDLE 0x011 /* 17 */ 50208599Srdivacky#define OPC_INB_SMP_REQUEST 0x012 /* 18 */ 51208599Srdivacky 52208599Srdivacky#define OPC_INB_SMP_ABORT 0x014 /* 20 */ 53208599Srdivacky 54208599Srdivacky#define OPC_INB_SPC_REG_DEV 0x016 /* 22 V reserved */ 55208599Srdivacky#define OPC_INB_SATA_HOST_OPSTART 0x017 /* 23 */ 56208599Srdivacky#define OPC_INB_SATA_ABORT 0x018 /* 24 */ 57208599Srdivacky#define OPC_INB_LOCAL_PHY_CONTROL 0x019 /* 25 */ 58208599Srdivacky#define OPC_INB_SPC_GET_DEV_INFO 0x01a /* 26 V reserved */ 59208599Srdivacky 60208599Srdivacky#define OPC_INB_FW_FLASH_UPDATE 0x020 /* 32 */ 61208599Srdivacky 62212904Sdim#define OPC_INB_GPIO 0x022 /* 34 */ 63212904Sdim#define OPC_INB_SAS_DIAG_MODE_START_END 0x023 /* 35 */ 64212904Sdim#define OPC_INB_SAS_DIAG_EXECUTE 0x024 /* 36 */ 65210299Sed#define OPC_INB_SPC_SAS_HW_EVENT_ACK 0x025 /* 37 V reserved */ 66210299Sed#define OPC_INB_GET_TIME_STAMP 0x026 /* 38 */ 67210299Sed#define OPC_INB_PORT_CONTROL 0x027 /* 39 */ 68208599Srdivacky#define OPC_INB_GET_NVMD_DATA 0x028 /* 40 */ 69208599Srdivacky#define OPC_INB_SET_NVMD_DATA 0x029 /* 41 */ 70208599Srdivacky#define OPC_INB_SET_DEVICE_STATE 0x02a /* 42 */ 71193323Sed#define OPC_INB_GET_DEVICE_STATE 0x02b /* 43 */ 72193323Sed#define OPC_INB_SET_DEV_INFO 0x02c /* 44 */ 73193323Sed#define OPC_INB_SAS_RE_INITIALIZE 0x02d /* 45 V reserved */ 74193323Sed#define OPC_INB_SGPIO 0x02e /* 46 */ 75218893Sdim#define OPC_INB_PCIE_DIAG_EXECUTE 0x02f /* 47 */ 76193323Sed 77193323Sed#define OPC_INB_SET_CONTROLLER_CONFIG 0x030 /* 48 */ 78193323Sed#define OPC_INB_GET_CONTROLLER_CONFIG 0x031 /* 49 */ 79193323Sed 80208599Srdivacky#define OPC_INB_REG_DEV 0x032 /* 50 SPCV */ 81193323Sed#define OPC_INB_SAS_HW_EVENT_ACK 0x033 /* 51 SPCV */ 82193323Sed#define OPC_INB_GET_DEV_INFO 0x034 /* 52 SPCV */ 83193323Sed#define OPC_INB_GET_PHY_PROFILE 0x035 /* 53 SPCV */ 84193323Sed#define OPC_INB_FLASH_OP_EXT 0x036 /* 54 SPCV */ 85193323Sed#define OPC_INB_SET_PHY_PROFILE 0x037 /* 55 SPCV */ 86193323Sed#define OPC_INB_GET_DFE_DATA 0x038 /* 56 SPCV */ 87193323Sed#define OPC_INB_GET_VHIST_CAP 0x039 /* 57 SPCV12g */ 88193323Sed 89218893Sdim 90193323Sed#define OPC_INB_KEK_MANAGEMENT 0x100 /* 256 SPCV */ 91193323Sed#define OPC_INB_DEK_MANAGEMENT 0x101 /* 257 SPCV */ 92193323Sed#define OPC_INB_SSP_DIF_ENC_OPSTART 0x102 /* 258 SPCV */ 93193323Sed#define OPC_INB_SATA_DIF_ENC_OPSTART 0x103 /* 259 SPCV */ 94193323Sed#define OPC_INB_OPR_MGMT 0x104 /* 260 SPCV */ 95193323Sed#define OPC_INB_ENC_TEST_EXECUTE 0x105 /* 261 SPCV */ 96193323Sed#define OPC_INB_SET_OPERATOR 0x106 /* 262 SPCV */ 97193323Sed#define OPC_INB_GET_OPERATOR 0x107 /* 263 SPCV */ 98193323Sed#define OPC_INB_DIF_ENC_OFFLOAD_CMD 0x110 /* 272 SPCV */ 99193323Sed 100193323Sed#define OPC_INB_FW_PROFILE 0x888 /* 2184 SPCV */ 101193323Sed 102193323Sed/* for Response Opcode of IOMB */ 103193323Sed#define OPC_OUB_ECHO 0x001 /* 1 */ 104193323Sed 105193323Sed#define OPC_OUB_SPC_HW_EVENT 0x004 /* 4 V reserved Now OPC_OUB_HW_EVENT */ 106210299Sed#define OPC_OUB_SSP_COMP 0x005 /* 5 */ 107193323Sed#define OPC_OUB_SMP_COMP 0x006 /* 6 */ 108193323Sed#define OPC_OUB_LOCAL_PHY_CNTRL 0x007 /* 7 */ 109193323Sed 110193323Sed#define OPC_OUB_SPC_DEV_REGIST 0x00a /* 10 V reserved Now OPC_OUB_DEV_REGIST */ 111193323Sed#define OPC_OUB_DEREG_DEV 0x00b /* 11 */ 112218893Sdim#define OPC_OUB_GET_DEV_HANDLE 0x00c /* 12 */ 113202878Srdivacky#define OPC_OUB_SATA_COMP 0x00d /* 13 */ 114218893Sdim#define OPC_OUB_SATA_EVENT 0x00e /* 14 */ 115210299Sed#define OPC_OUB_SSP_EVENT 0x00f /* 15 */ 116218893Sdim 117218893Sdim#define OPC_OUB_SPC_DEV_HANDLE_ARRIV 0x010 /* 16 V reserved Now OPC_OUB_DEV_HANDLE_ARRIV */ 118210299Sed 119218893Sdim#define OPC_OUB_SSP_RECV_EVENT 0x012 /* 18 */ 120218893Sdim#define OPC_OUB_SPC_DEV_INFO 0x013 /* 19 V reserved Now OPC_OUB_DEV_INFO*/ 121210299Sed#define OPC_OUB_FW_FLASH_UPDATE 0x014 /* 20 */ 122210299Sed 123210299Sed#define OPC_OUB_GPIO_RESPONSE 0x016 /* 22 */ 124210299Sed#define OPC_OUB_GPIO_EVENT 0x017 /* 23 */ 125218893Sdim#define OPC_OUB_GENERAL_EVENT 0x018 /* 24 */ 126218893Sdim 127210299Sed#define OPC_OUB_SSP_ABORT_RSP 0x01a /* 26 */ 128202878Srdivacky#define OPC_OUB_SATA_ABORT_RSP 0x01b /* 27 */ 129210299Sed#define OPC_OUB_SAS_DIAG_MODE_START_END 0x01c /* 28 */ 130210299Sed#define OPC_OUB_SAS_DIAG_EXECUTE 0x01d /* 29 */ 131210299Sed#define OPC_OUB_GET_TIME_STAMP 0x01e /* 30 */ 132218893Sdim#define OPC_OUB_SPC_SAS_HW_EVENT_ACK 0x01f /* 31 V reserved Now OPC_OUB_SAS_HW_EVENT_ACK*/ 133218893Sdim#define OPC_OUB_PORT_CONTROL 0x020 /* 32 */ 134210299Sed#define OPC_OUB_SKIP_ENTRY 0x021 /* 33 */ 135202878Srdivacky#define OPC_OUB_SMP_ABORT_RSP 0x022 /* 34 */ 136210299Sed#define OPC_OUB_GET_NVMD_DATA 0x023 /* 35 */ 137210299Sed#define OPC_OUB_SET_NVMD_DATA 0x024 /* 36 */ 138210299Sed#define OPC_OUB_DEVICE_HANDLE_REMOVAL 0x025 /* 37 */ 139210299Sed#define OPC_OUB_SET_DEVICE_STATE 0x026 /* 38 */ 140210299Sed#define OPC_OUB_GET_DEVICE_STATE 0x027 /* 39 */ 141210299Sed#define OPC_OUB_SET_DEV_INFO 0x028 /* 40 */ 142210299Sed#define OPC_OUB_SAS_RE_INITIALIZE 0x029 /* 41 V reserved not replaced */ 143210299Sed 144210299Sed#define OPC_OUB_HW_EVENT 0x700 /* 1792 SPCV Was OPC_OUB_SPC_HW_EVENT*/ 145202878Srdivacky#define OPC_OUB_DEV_HANDLE_ARRIV 0x720 /* 1824 SPCV Was OPC_OUB_SPC_DEV_HANDLE_ARRIV*/ 146210299Sed 147210299Sed#define OPC_OUB_PHY_START_RESPONSE 0x804 /* 2052 SPCV */ 148210299Sed#define OPC_OUB_PHY_STOP_RESPONSE 0x805 /* 2053 SPCV */ 149210299Sed#define OPC_OUB_SGPIO_RESPONSE 0x82E /* 2094 SPCV */ 150202878Srdivacky#define OPC_OUB_PCIE_DIAG_EXECUTE 0x82F /* 2095 SPCV */ 151202878Srdivacky 152218893Sdim#define OPC_OUB_SET_CONTROLLER_CONFIG 0x830 /* 2096 SPCV */ 153202878Srdivacky#define OPC_OUB_GET_CONTROLLER_CONFIG 0x831 /* 2097 SPCV */ 154218893Sdim#define OPC_OUB_DEV_REGIST 0x832 /* 2098 SPCV */ 155202878Srdivacky#define OPC_OUB_SAS_HW_EVENT_ACK 0x833 /* 2099 SPCV */ 156202878Srdivacky#define OPC_OUB_DEV_INFO 0x834 /* 2100 SPCV */ 157210299Sed#define OPC_OUB_GET_PHY_PROFILE_RSP 0x835 /* 2101 SPCV */ 158210299Sed#define OPC_OUB_FLASH_OP_EXT_RSP 0x836 /* 2102 SPCV */ 159210299Sed#define OPC_OUB_SET_PHY_PROFILE_RSP 0x837 /* 2103 SPCV */ 160210299Sed#define OPC_OUB_GET_DFE_DATA_RSP 0x838 /* 2104 SPCV */ 161210299Sed#define OPC_OUB_GET_VIST_CAP_RSP 0x839 /* Can be 2104 for SPCV12g */ 162210299Sed 163210299Sed#define OPC_OUB_FW_PROFILE 0x888 /* 2184 */ 164210299Sed 165210299Sed#define OPC_OUB_KEK_MANAGEMENT 0x900 /* 2304 SPCV */ 166210299Sed#define OPC_OUB_DEK_MANAGEMENT 0x901 /* 2305 SPCV */ 167202878Srdivacky#define OPC_OUB_COMBINED_SSP_COMP 0x902 /* 2306 SPCV */ 168202878Srdivacky#define OPC_OUB_COMBINED_SATA_COMP 0x903 /* 2307 SPCV */ 169202878Srdivacky#define OPC_OUB_OPR_MGMT 0x904 /* 2308 SPCV */ 170210299Sed#define OPC_OUB_ENC_TEST_EXECUTE 0x905 /* 2309 SPCV */ 171210299Sed#define OPC_OUB_SET_OPERATOR 0x906 /* 2310 SPCV */ 172210299Sed#define OPC_OUB_GET_OPERATOR 0x907 /* 2311 SPCV */ 173210299Sed#define OPC_OUB_DIF_ENC_OFFLOAD_RSP 0x910 /* 2320 SPCV */ 174210299Sed 175210299Sed/* Definitions for encryption key management */ 176202878Srdivacky#define KEK_MGMT_SUBOP_INVALIDATE 0x1 177210299Sed#define KEK_MGMT_SUBOP_UPDATE 0x2 178210299Sed#define KEK_MGMT_SUBOP_KEYCARDINVALIDATE 0x3 179210299Sed#define KEK_MGMT_SUBOP_KEYCARDUPDATE 0x4 180210299Sed 181210299Sed#define DEK_MGMT_SUBOP_INVALIDATE 0x1 182202878Srdivacky#define DEK_MGMT_SUBOP_UPDATE 0x2 183210299Sed 184210299Sed/*************************************************** 185210299Sed * typedef for IOMB structure 186210299Sed ***************************************************/ 187210299Sed/** \brief the data structure of Echo Command 188210299Sed * 189210299Sed * use to describe MPI Echo Command (64 bytes) 190210299Sed * 191202878Srdivacky */ 192210299Sedtypedef struct agsaEchoCmd_s { 193210299Sed bit32 tag; 194202878Srdivacky bit32 payload[14]; 195210299Sed} agsaEchoCmd_t; 196210299Sed 197202878Srdivacky/** \brief the data structure of PHY Start Command 198210299Sed * 199210299Sed * use to describe MPI PHY Start Command (64 bytes) 200210299Sed * 201210299Sed */ 202210299Sedtypedef struct agsaPhyStartCmd_s { 203210299Sed bit32 tag; 204210299Sed bit32 SscdAseSHLmMlrPhyId; 205210299Sed agsaSASIdentify_t sasIdentify; 206210299Sed bit32 analogSetupIdx; 207210299Sed bit32 SAWT_DAWT; 208210299Sed bit32 reserved[5]; 209210299Sed} agsaPhyStartCmd_t; 210210299Sed 211210299Sed#define SPINHOLD_DISABLE (0x00 << 14) 212202878Srdivacky#define SPINHOLD_ENABLE (0x01 << 14) 213210299Sed#define LINKMODE_SAS (0x01 << 12) 214210299Sed#define LINKMODE_DSATA (0x02 << 12) 215202878Srdivacky#define LINKMODE_AUTO (0x03 << 12) 216218893Sdim#define LINKRATE_15 (0x01 << 8) 217210299Sed#define LINKRATE_30 (0x02 << 8) 218210299Sed#define LINKRATE_60 (0x04 << 8) 219218893Sdim#define LINKRATE_12 (0x08 << 8) 220202878Srdivacky 221218893Sdim/** \brief the data structure of PHY Stop Command 222210299Sed * 223218893Sdim * use to describe MPI PHY Start Command (64 bytes) 224210299Sed * 225210299Sed */ 226218893Sdimtypedef struct agsaPhyStopCmd_s { 227210299Sed bit32 tag; 228218893Sdim bit32 phyId; 229218893Sdim bit32 reserved[13]; 230210299Sed} agsaPhyStopCmd_t; 231210299Sed 232210299Sed/** \brief the data structure of SSP INI IO Start Command 233210299Sed * 234210299Sed * use to describe MPI SSP INI IO Start Command (64 bytes) 235210299Sed * 236210299Sed */ 237210299Sedtypedef struct agsaSSPIniIOStartCmd_s { 238210299Sed bit32 tag; 239210299Sed bit32 deviceId; 240210299Sed bit32 dataLen; 241210299Sed bit32 dirMTlr; 242202878Srdivacky agsaSSPCmdInfoUnit_t SSPInfoUnit; 243202878Srdivacky bit32 AddrLow0; 244210299Sed bit32 AddrHi0; 245210299Sed bit32 Len0; 246210299Sed bit32 E0; 247210299Sed} agsaSSPIniIOStartCmd_t; 248210299Sed 249202878Srdivacky/** \brief the data structure of SSP INI TM Start Command 250202878Srdivacky * 251202878Srdivacky * use to describe MPI SSP INI TM Start Command (64 bytes) 252193323Sed * 253193323Sed */ 254193323Sedtypedef struct agsaSSPIniTMStartCmd_s { 255193323Sed bit32 tag; 256193323Sed bit32 deviceId; 257193323Sed bit32 relatedTag; 258193323Sed bit32 TMfunction; 259193323Sed bit8 lun[8]; 260193323Sed bit32 dsAdsMReport; 261193323Sed bit32 reserved[8]; 262193323Sed} agsaSSPIniTMStartCmd_t; 263193323Sed 264193323Sed/** \brief the data structure of SSP INI Extended IO Start Command 265193323Sed * 266193323Sed * use to describe MPI SSP INI Extended CDB Start Command (96 bytes to support 32 CDB) 267193323Sed * 268193323Sed */ 269218893Sdimtypedef struct agsaSSPIniExtIOStartCmd_s { 270204642Srdivacky bit32 tag; 271204642Srdivacky bit32 deviceId; 272204642Srdivacky bit32 dataLen; 273204642Srdivacky bit32 SSPIuLendirMTlr; 274204642Srdivacky bit8 SSPIu[1]; 275218893Sdim /* variable lengh */ 276204642Srdivacky /* bit32 AddrLow0; */ 277204642Srdivacky /* bit32 AddrHi0; */ 278218893Sdim /* bit32 Len0; */ 279204642Srdivacky /* bit32 E0; */ 280204642Srdivacky} agsaSSPIniExtIOStartCmd_t; 281204642Srdivacky 282204642Srdivackytypedef struct agsaSSPIniEncryptIOStartCmd_s 283218893Sdim{ 284193323Sed bit32 tag; /* 1 */ 285193323Sed bit32 deviceId; /* 2 */ 286218893Sdim bit32 dataLen; /* 3 */ 287193323Sed bit32 dirMTlr; /* 4 */ 288193323Sed bit32 sspiu_0_3_indcdbalL; /* 5 */ 289218893Sdim bit32 sspiu_4_7_indcdbalH; /* 6 */ 290193323Sed bit32 sspiu_8_11; /* 7 */ 291218893Sdim bit32 sspiu_12_15; /* 8 */ 292218893Sdim bit32 sspiu_16_19; /* 9 */ 293218893Sdim bit32 sspiu_19_23; /* 10 */ 294218893Sdim bit32 sspiu_24_27; /* 11 */ 295218893Sdim bit32 epl_descL; /* 12 */ 296218893Sdim bit32 dpl_descL; /* 13 */ 297193323Sed bit32 edpl_descH; /* 14 */ 298193323Sed bit32 DIF_flags; /* 15 */ 299218893Sdim bit32 udt; /* 16 0x10 */ 300193323Sed bit32 udtReplacementLo; /* 17 */ 301193323Sed bit32 udtReplacementHi; /* 18 */ 302193323Sed bit32 DIF_seed; /* 19 */ 303218893Sdim bit32 encryptFlagsLo; /* 20 0x14 */ 304218893Sdim bit32 encryptFlagsHi; /* 21 */ 305193323Sed bit32 keyTag_W0; /* 22 */ 306218893Sdim bit32 keyTag_W1; /* 23 */ 307218893Sdim bit32 tweakVal_W0; /* 24 0x18 */ 308193323Sed bit32 tweakVal_W1; /* 25 */ 309218893Sdim bit32 tweakVal_W2; /* 26 */ 310218893Sdim bit32 tweakVal_W3; /* 27 */ 311218893Sdim bit32 AddrLow0; /* 28 0x1C */ 312218893Sdim bit32 AddrHi0; /* 29 */ 313218893Sdim bit32 Len0; /* 30 */ 314218893Sdim bit32 E0; /* 31 */ 315193323Sed} agsaSSPIniEncryptIOStartCmd_t; 316218893Sdim 317218893Sdim/** \brief the data structure of SSP Abort Command 318193323Sed * 319193323Sed * use to describe MPI SSP Abort Command (64 bytes) 320193323Sed * 321218893Sdim */ 322218893Sdimtypedef struct agsaSSPAbortCmd_s { 323193323Sed bit32 tag; 324193323Sed bit32 deviceId; 325218893Sdim bit32 HTagAbort; 326193323Sed bit32 abortAll; 327218893Sdim bit32 reserved[11]; 328218893Sdim} agsaSSPAbortCmd_t; 329218893Sdim 330193323Sed/** \brief the data structure of Register Device Command 331193323Sed * 332193323Sed * use to describe MPI DEVICE REGISTER Command (64 bytes) 333193323Sed * 334193323Sed */ 335218893Sdimtypedef struct agsaRegDevCmd_s { 336218893Sdim bit32 tag; 337218893Sdim bit32 phyIdportId; 338193323Sed bit32 dTypeLRateAwtHa; 339208599Srdivacky bit32 ITNexusTimeOut; 340193323Sed bit32 sasAddrHi; 341193323Sed bit32 sasAddrLo; 342193323Sed bit32 DeviceId; 343193323Sed bit32 reserved[8]; 344198090Srdivacky} agsaRegDevCmd_t; 345198090Srdivacky 346198090Srdivacky/** \brief the data structure of Deregister Device Handle Command 347198090Srdivacky * 348198090Srdivacky * use to describe MPI DEREGISTER DEVIDE HANDLE Command (64 bytes) 349193323Sed * 350193323Sed */ 351193323Sedtypedef struct agsaDeregDevHandleCmd_s { 352193323Sed bit32 tag; 353218893Sdim bit32 deviceId; 354193323Sed bit32 portId; 355193323Sed bit32 reserved[12]; 356193323Sed} agsaDeregDevHandleCmd_t; 357193323Sed 358193323Sed/** \brief the data structure of Get Device Handle Command 359193323Sed * 360193323Sed * use to describe MPI GET DEVIDE HANDLE Command (64 bytes) 361193323Sed * 362193323Sed */ 363193323Sedtypedef struct agsaGetDevHandleCmd_s { 364193323Sed bit32 tag; 365193323Sed bit32 DevADevTMaxDIDportId; 366218893Sdim bit32 skipCount; 367193323Sed bit32 reserved[12]; 368218893Sdim} agsaGetDevHandleCmd_t; 369193323Sed 370193323Sed/** \brief the data structure of SMP Request Command 371193323Sed * 372198090Srdivacky * use to describe MPI SMP REQUEST Command (64 bytes) 373193323Sed * 374193323Sed */ 375193323Sed 376193323Sedtypedef struct agsaSMPCmd_s { 377193323Sed bit32 tag; 378218893Sdim bit32 deviceId; 379193323Sed bit32 IR_IP_OV_res_phyId_DPdLen_res; 380193323Sed /* Bits [0] - IR */ 381193323Sed /* Bits [1] - IP */ 382193323Sed /* Bits [15:2] - Reserved */ 383193323Sed /* Bits [23:16] - Len */ 384193323Sed /* Bits [31:24] - Reserved */ 385193323Sed bit32 SMPCmd[12]; 386198090Srdivacky} agsaSMPCmd_t; 387218893Sdim 388193323Sed 389193323Sedtypedef struct agsaSMPCmd_V_s { 390193323Sed bit32 tag; /* 1 */ 391193323Sed bit32 deviceId; /* 2 */ 392193323Sed bit32 IR_IP_OV_res_phyId_DPdLen_res;/* 3 */ 393193323Sed /* Bits [0] - IR */ 394193323Sed /* Bits [1] - IP */ 395193323Sed /* Bits [15:2] - Reserved */ 396193323Sed /* Bits [23:16] - Len */ 397193323Sed /* Bits [31:24] - Reserved */ 398193323Sed bit32 SMPHDR; /* 4 */ 399193323Sed bit32 SMP3_0; /* 5 */ 400193323Sed bit32 SMP7_4; /* 6 */ 401193323Sed bit32 SMP11_8; /* 7 */ 402193323Sed bit32 IndirL_SMPRF15_12; /* 8 */ 403198090Srdivacky bit32 IndirH_or_SMPRF19_16; /* 9 */ 404210299Sed bit32 IndirLen_or_SMPRF23_20; /* 10 */ 405210299Sed bit32 R_or_SMPRF27_24; /* 11 */ 406210299Sed bit32 ISRAL_or_SMPRF31_28; /* 12 */ 407210299Sed bit32 ISRAH_or_SMPRF35_32; /* 13 */ 408198090Srdivacky bit32 ISRL_or_SMPRF39_36; /* 14 */ 409208599Srdivacky bit32 R_or_SMPRF43_40; /* 15 */ 410207618Srdivacky} agsaSMPCmd_V_t; 411198090Srdivacky 412198090Srdivacky/** \brief the data structure of SMP Abort Command 413218893Sdim * 414218893Sdim * use to describe MPI SMP Abort Command (64 bytes) 415218893Sdim * 416218893Sdim */ 417218893Sdimtypedef struct agsaSMPAbortCmd_s { 418218893Sdim bit32 tag; 419218893Sdim bit32 deviceId; 420193323Sed bit32 HTagAbort; 421193323Sed bit32 Scp; 422193323Sed bit32 reserved[11]; 423193323Sed} agsaSMPAbortCmd_t; 424193323Sed 425193323Sed/** \brief the data structure of SATA Start Command 426193323Sed * 427193323Sed * use to describe MPI SATA Start Command (64 bytes) 428218893Sdim * 429198090Srdivacky */ 430210299Sedtypedef struct agsaSATAStartCmd_s { 431210299Sed bit32 tag; /* 1 */ 432193323Sed bit32 deviceId; /* 2 */ 433193323Sed bit32 dataLen; /* 3 */ 434193323Sed bit32 optNCQTagataProt; /* 4 */ 435193323Sed agsaFisRegHostToDevice_t sataFis; /* 5 6 7 8 9 */ 436193323Sed bit32 reserved1; /* 10 */ 437193323Sed bit32 reserved2; /* 11 */ 438218893Sdim bit32 AddrLow0; /* 12 */ 439218893Sdim bit32 AddrHi0; /* 13 */ 440218893Sdim bit32 Len0; /* 14 */ 441218893Sdim bit32 E0; /* 15 */ 442218893Sdim bit32 ATAPICDB[4]; /* 16-19 */ 443218893Sdim} agsaSATAStartCmd_t; 444218893Sdim 445218893Sdimtypedef struct agsaSATAEncryptStartCmd_s 446218893Sdim{ 447218893Sdim bit32 tag; /* 1 */ 448218893Sdim bit32 IniDeviceId; /* 2 */ 449218893Sdim bit32 dataLen; /* 3 */ 450218893Sdim bit32 optNCQTagataProt; /* 4 */ 451218893Sdim agsaFisRegHostToDevice_t sataFis; /* 5 6 7 8 9 */ 452218893Sdim bit32 reserved1; /* 10 */ 453218893Sdim bit32 Res_EPL_DESCL; /* 11 */ 454218893Sdim bit32 resSKIPBYTES; /* 12 */ 455218893Sdim bit32 Res_DPL_DESCL_NDPLR; /* 13 DIF per LA Address lo if DPLE is 1 */ 456218893Sdim bit32 Res_EDPL_DESCH; /* 14 DIF per LA Address hi if DPLE is 1 */ 457218893Sdim bit32 DIF_flags; /* 15 */ 458218893Sdim bit32 udt; /* 16 */ 459218893Sdim bit32 udtReplacementLo; /* 17 */ 460218893Sdim bit32 udtReplacementHi; /* 18 */ 461218893Sdim bit32 DIF_seed; /* 19 */ 462218893Sdim bit32 encryptFlagsLo; /* 20 */ 463218893Sdim bit32 encryptFlagsHi; /* 21 */ 464218893Sdim bit32 keyTagLo; /* 22 */ 465218893Sdim bit32 keyTagHi; /* 23 */ 466218893Sdim bit32 tweakVal_W0; /* 24 */ 467218893Sdim bit32 tweakVal_W1; /* 25 */ 468218893Sdim bit32 tweakVal_W2; /* 26 */ 469218893Sdim bit32 tweakVal_W3; /* 27 */ 470218893Sdim bit32 AddrLow0; /* 28 */ 471218893Sdim bit32 AddrHi0; /* 29 */ 472218893Sdim bit32 Len0; /* 30 */ 473218893Sdim bit32 E0; /* 31 */ 474218893Sdim} agsaSATAEncryptStartCmd_t; 475218893Sdim 476218893Sdim/** \brief the data structure of SATA Abort Command 477218893Sdim * 478218893Sdim * use to describe MPI SATA Abort Command (64 bytes) 479218893Sdim * 480218893Sdim */ 481218893Sdimtypedef struct agsaSATAAbortCmd_s { 482218893Sdim bit32 tag; 483218893Sdim bit32 deviceId; 484218893Sdim bit32 HTagAbort; 485218893Sdim bit32 abortAll; 486218893Sdim bit32 reserved[11]; 487218893Sdim} agsaSATAAbortCmd_t; 488218893Sdim 489218893Sdim/** \brief the data structure of Local PHY Control Command 490218893Sdim * 491218893Sdim * use to describe MPI LOCAL PHY CONTROL Command (64 bytes) 492218893Sdim * 493218893Sdim */ 494218893Sdimtypedef struct agsaLocalPhyCntrlCmd_s { 495218893Sdim bit32 tag; 496218893Sdim bit32 phyOpPhyId; 497218893Sdim bit32 reserved1[14]; 498218893Sdim} agsaLocalPhyCntrlCmd_t; 499218893Sdim 500218893Sdim/** \brief the data structure of Get Device Info Command 501193323Sed * 502208599Srdivacky * use to describe MPI GET DEVIDE INFO Command (64 bytes) 503208599Srdivacky * 504208599Srdivacky */ 505208599Srdivackytypedef struct agsaGetDevInfoCmd_s { 506208599Srdivacky bit32 tag; 507208599Srdivacky bit32 DeviceId; 508218893Sdim bit32 reserved[13]; 509208599Srdivacky} agsaGetDevInfoCmd_t; 510208599Srdivacky 511208599Srdivacky/** \brief the data structure of HW Reset Command 512218893Sdim * 513193323Sed * use to describe MPI HW Reset Command (64 bytes) 514218893Sdim * 515193323Sed */ 516218893Sdimtypedef struct agsaHWResetCmd_s { 517218893Sdim bit32 option; 518218893Sdim bit32 reserved[14]; 519193323Sed} agsaHWResetCmd_t; 520193323Sed 521208599Srdivacky/** \brief the data structure of Firmware download 522208599Srdivacky * 523208599Srdivacky * use to describe MPI FW DOWNLOAD Command (64 bytes) 524208599Srdivacky */ 525208599Srdivackytypedef struct agsaFwFlashUpdate_s { 526208599Srdivacky bit32 tag; 527208599Srdivacky bit32 curImageOffset; 528208599Srdivacky bit32 curImageLen; 529208599Srdivacky bit32 totalImageLen; 530208599Srdivacky bit32 reserved0[7]; 531218893Sdim bit32 SGLAL; 532218893Sdim bit32 SGLAH; 533218893Sdim bit32 Len; 534218893Sdim bit32 extReserved; 535218893Sdim} agsaFwFlashUpdate_t; 536218893Sdim 537218893Sdim 538218893Sdim/** \brief the data structure EXT Flash Op 539218893Sdim * 540218893Sdim * use to describe Extented Flash Operation Command (128 bytes) 541218893Sdim */ 542218893Sdimtypedef struct agsaFwFlashOpExt_s { 543208599Srdivacky bit32 tag; 544218893Sdim bit32 Command; 545218893Sdim bit32 PartOffset; 546208599Srdivacky bit32 DataLength; 547208599Srdivacky bit32 Reserved0[7]; 548193323Sed bit32 SGLAL; 549193323Sed bit32 SGLAH; 550202375Srdivacky bit32 Len; 551193323Sed bit32 E_sgl; 552193323Sed bit32 Reserved[15]; 553193323Sed} agsaFwFlashOpExt_t; 554193323Sed 555202375Srdivacky/** \brief the data structure EXT Flash Op 556218893Sdim * 557218893Sdim * use to describe Extented Flash Operation Command (64 bytes) 558218893Sdim */ 559218893Sdimtypedef struct agsaFwFlashOpExtRsp_s { 560202375Srdivacky bit32 tag; 561218893Sdim bit32 Command; 562202375Srdivacky bit32 Status; 563218893Sdim bit32 Epart_Size; 564193323Sed bit32 EpartSectSize; 565193323Sed bit32 Reserved[10]; 566198090Srdivacky} agsaFwFlashOpExtRsp_t; 567206083Srdivacky 568206083Srdivacky 569206083Srdivacky#define FWFLASH_IOMB_RESERVED_LEN 0x07 570206083Srdivacky 571206083Srdivacky#ifdef SPC_ENABLE_PROFILE 572206083Srdivackytypedef struct agsaFwProfileIOMB_s { 573206083Srdivacky bit32 tag; 574206083Srdivacky bit32 tcid_processor_cmd; 575206083Srdivacky bit32 codeStartAdd; 576218893Sdim bit32 codeEndAdd; 577218893Sdim bit32 reserved0[7]; 578218893Sdim bit32 SGLAL; 579206083Srdivacky bit32 SGLAH; 580218893Sdim bit32 Len; 581218893Sdim bit32 extReserved; 582218893Sdim} agsaFwProfileIOMB_t; 583206083Srdivacky#define FWPROFILE_IOMB_RESERVED_LEN 0x07 584206083Srdivacky#endif 585206083Srdivacky/** \brief the data structure of GPIO Commannd 586206083Srdivacky * 587218893Sdim * use to describe MPI GPIO Command (64 bytes) 588206083Srdivacky */ 589206083Srdivackytypedef struct agsaGPIOCmd_s { 590206083Srdivacky bit32 tag; 591206083Srdivacky bit32 eOBIDGeGsGrGw; 592206083Srdivacky bit32 GpioWrMsk; 593206083Srdivacky bit32 GpioWrVal; 594218893Sdim bit32 GpioIe; 595207618Srdivacky bit32 OT11_0; 596207618Srdivacky bit32 OT19_12; /* reserved for SPCv controller */ 597207618Srdivacky bit32 GPIEVChange; 598207618Srdivacky bit32 GPIEVRise; 599207618Srdivacky bit32 GPIEVFall; 600206083Srdivacky bit32 reserved[5]; 601206083Srdivacky} agsaGPIOCmd_t; 602206083Srdivacky 603206083Srdivacky 604206083Srdivacky#define GPIO_GW_BIT 0x1 605218893Sdim#define GPIO_GR_BIT 0x2 606218893Sdim#define GPIO_GS_BIT 0x4 607218893Sdim#define GPIO_GE_BIT 0x8 608218893Sdim 609218893Sdim/** \brief the data structure of SAS Diagnostic Start/End Command 610218893Sdim * 611218893Sdim * use to describe MPI SAS Diagnostic Start/End Command (64 bytes) 612218893Sdim */ 613218893Sdimtypedef struct agsaSASDiagStartEndCmd_s { 614218893Sdim bit32 tag; 615218893Sdim bit32 OperationPhyId; 616218893Sdim bit32 reserved[13]; 617218893Sdim} agsaSASDiagStartEndCmd_t; 618218893Sdim 619218893Sdim/** \brief the data structure of SAS Diagnostic Execute Command 620206083Srdivacky * 621218893Sdim * use to describe MPI SAS Diagnostic Execute Command for SPCv (128 bytes) 622218893Sdim */ 623218893Sdimtypedef struct agsaSASDiagExecuteCmd_s { 624218893Sdim bit32 tag; /* 1 */ 625218893Sdim bit32 CmdTypeDescPhyId;/* 2 */ 626218893Sdim bit32 Pat1Pat2; /* 3 */ 627218893Sdim bit32 Threshold; /* 4 */ 628218893Sdim bit32 CodePatErrMsk; /* 5 */ 629218893Sdim bit32 Pmon; /* 6 */ 630218893Sdim bit32 PERF1CTL; /* 7 */ 631218893Sdim bit32 THRSHLD1; /* 8 */ 632218893Sdim bit32 reserved[23]; /* 9 31 */ 633198090Srdivacky} agsaSASDiagExecuteCmd_t; 634207618Srdivacky 635198090Srdivacky 636198090Srdivacky/** \brief the data structure of SAS Diagnostic Execute Command 637198090Srdivacky * 638206083Srdivacky * use to describe MPI SAS Diagnostic Execute Command for SPC (64 bytes) 639206083Srdivacky */ 640206083Srdivackytypedef struct agsa_SPC_SASDiagExecuteCmd_s { 641205218Srdivacky bit32 tag; /* 1 */ 642207618Srdivacky bit32 CmdTypeDescPhyId;/* 2 */ 643207618Srdivacky bit32 Pat1Pat2; /* 3 */ 644207618Srdivacky bit32 Threshold; /* 4 */ 645207618Srdivacky bit32 CodePatErrMsk; /* 5 */ 646207618Srdivacky bit32 Pmon; /* 6 */ 647207618Srdivacky bit32 PERF1CTL; /* 7 */ 648207618Srdivacky bit32 reserved[8]; /* 8 15 */ 649210299Sed} agsa_SPC_SASDiagExecuteCmd_t; 650207618Srdivacky#define SAS_DIAG_PARAM_BYTES 24 651207618Srdivacky 652207618Srdivacky 653198090Srdivacky/** \brief the data structure of SSP TGT IO Start Command 654198090Srdivacky * 655198090Srdivacky * use to describe MPI SSP TGT IO Start Command (64 bytes) 656198090Srdivacky * 657198090Srdivacky */ 658198090Srdivackytypedef struct agsaSSPTgtIOStartCmd_s { 659198090Srdivacky bit32 tag; /* 1 */ 660198090Srdivacky bit32 deviceId; /* 2 */ 661198090Srdivacky bit32 dataLen; /* 3 */ 662218893Sdim bit32 dataOffset; /* 4 */ 663198090Srdivacky bit32 INITagAgrDir; /* 5 */ 664198090Srdivacky bit32 reserved; /* 6 */ 665198090Srdivacky bit32 DIF_flags; /* 7 */ 666198090Srdivacky bit32 udt; /* 8 */ 667198090Srdivacky bit32 udtReplacementLo; /* 9 */ 668198090Srdivacky bit32 udtReplacementHi; /* 10 */ 669218893Sdim bit32 DIF_seed; /* 11 */ 670218893Sdim bit32 AddrLow0; /* 12 */ 671218893Sdim bit32 AddrHi0; /* 13 */ 672218893Sdim bit32 Len0; /* 14 */ 673218893Sdim bit32 E0; /* 15 */ 674218893Sdim} agsaSSPTgtIOStartCmd_t; 675218893Sdim 676207618Srdivacky/** \brief the data structure of SSP TGT Response Start Command 677207618Srdivacky * 678206083Srdivacky * use to describe MPI SSP TGT Response Start Command (64 bytes) 679207618Srdivacky * 680218893Sdim */ 681198090Srdivackytypedef struct agsaSSPTgtRspStartCmd_s { 682198090Srdivacky bit32 tag; 683207618Srdivacky bit32 deviceId; 684207618Srdivacky bit32 RspLen; 685206083Srdivacky bit32 INITag_IP_AN; 686207618Srdivacky bit32 reserved[7]; 687206083Srdivacky bit32 AddrLow0; 688206083Srdivacky bit32 AddrHi0; 689206083Srdivacky bit32 Len0; 690207618Srdivacky bit32 E0; 691206083Srdivacky} agsaSSPTgtRspStartCmd_t; 692206083Srdivacky 693210299Sed/** \brief the data structure of Device Handle Accept Command 694206083Srdivacky * 695206083Srdivacky * use to describe MPI Device Handle Accept Command (64 bytes) 696206083Srdivacky * 697206083Srdivacky */ 698206083Srdivackytypedef struct agsaDevHandleAcceptCmd_s { 699206083Srdivacky bit32 tag; 700206083Srdivacky bit32 Ctag; 701206083Srdivacky bit32 deviceId; 702206083Srdivacky bit32 DevA_MCN_R_R_HA_ITNT; 703206083Srdivacky bit32 reserved[11]; 704206083Srdivacky} agsaDevHandleAcceptCmd_t; 705206083Srdivacky 706206083Srdivacky/** \brief the data structure of SAS HW Event Ack Command 707206083Srdivacky * 708206083Srdivacky * use to describe MPI SAS HW Event Ack Command (64 bytes) 709206083Srdivacky * 710206083Srdivacky */ 711206083Srdivackytypedef struct agsaSASHwEventAckCmd_s { 712206083Srdivacky bit32 tag; 713207618Srdivacky bit32 sEaPhyIdPortId; 714207618Srdivacky bit32 Param0; 715207618Srdivacky bit32 Param1; 716207618Srdivacky bit32 reserved[11]; 717207618Srdivacky} agsaSASHwEventAckCmd_t; 718207618Srdivacky 719210299Sed/** \brief the data structure of Get Time Stamp Command 720210299Sed * 721207618Srdivacky * use to describe MPI Get Time Stamp Command (64 bytes) 722210299Sed * 723207618Srdivacky */ 724206083Srdivackytypedef struct agsaGetTimeStampCmd_s { 725205218Srdivacky bit32 tag; 726206083Srdivacky bit32 reserved[14]; 727206083Srdivacky} agsaGetTimeStampCmd_t; 728206083Srdivacky 729206083Srdivacky/** \brief the data structure of Port Control Command 730206083Srdivacky * 731206083Srdivacky * use to describe MPI Port Control Command (64 bytes) 732206083Srdivacky * 733206083Srdivacky */ 734207618Srdivackytypedef struct agsaPortControlCmd_s { 735207618Srdivacky bit32 tag; 736207618Srdivacky bit32 portOPPortId; 737206083Srdivacky bit32 Param0; 738206083Srdivacky bit32 Param1; 739206083Srdivacky bit32 reserved[11]; 740198090Srdivacky} agsaPortControlCmd_t; 741198090Srdivacky 742198090Srdivacky/** \brief the data structure of Set NVM Data Command 743198090Srdivacky * 744198090Srdivacky * use to describe MPI Set NVM Data Command (64 bytes) 745198090Srdivacky * 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