xref: /freebsd/sys/dev/pms/RefTisa/sallsdk/spc/sampidefs.h (revision 2ff63af9b88c7413b7d71715b5532625752a248e)
1*4e1bc9a0SAchim Leubner /*******************************************************************************
2*4e1bc9a0SAchim Leubner *Copyright (c) 2014 PMC-Sierra, Inc.  All rights reserved.
3*4e1bc9a0SAchim Leubner *
4*4e1bc9a0SAchim Leubner *Redistribution and use in source and binary forms, with or without modification, are permitted provided
5*4e1bc9a0SAchim Leubner *that the following conditions are met:
6*4e1bc9a0SAchim Leubner *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
7*4e1bc9a0SAchim Leubner *following disclaimer.
8*4e1bc9a0SAchim Leubner *2. Redistributions in binary form must reproduce the above copyright notice,
9*4e1bc9a0SAchim Leubner *this list of conditions and the following disclaimer in the documentation and/or other materials provided
10*4e1bc9a0SAchim Leubner *with the distribution.
11*4e1bc9a0SAchim Leubner *
12*4e1bc9a0SAchim Leubner *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
13*4e1bc9a0SAchim Leubner *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14*4e1bc9a0SAchim Leubner *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15*4e1bc9a0SAchim Leubner *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16*4e1bc9a0SAchim Leubner *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
17*4e1bc9a0SAchim Leubner *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18*4e1bc9a0SAchim Leubner *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
19*4e1bc9a0SAchim Leubner *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
20*4e1bc9a0SAchim Leubner *
21*4e1bc9a0SAchim Leubner *
22*4e1bc9a0SAchim Leubner ********************************************************************************/
23*4e1bc9a0SAchim Leubner /*******************************************************************************/
24*4e1bc9a0SAchim Leubner /*! \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