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