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