Commit eae225eb5947825bc4e845c33ded9aedd74407cf

Authored by Eric Moore
Committed by James Bottomley
1 parent 86b9c4c16a

[SCSI] fusion: mpi header update - version 1.05.14

Here are the lastest mpi headers for mpt fusion driver, which defines
the firmware to driver interface.

Signed-off-by: Eric Moore <Eric.Moore@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>

Showing 7 changed files with 410 additions and 180 deletions Inline Diff

drivers/message/fusion/lsi/mpi.h
1 /* 1 /*
2 * Copyright (c) 2000-2005 LSI Logic Corporation. 2 * Copyright (c) 2000-2006 LSI Logic Corporation.
3 * 3 *
4 * 4 *
5 * Name: mpi.h 5 * Name: mpi.h
6 * Title: MPI Message independent structures and definitions 6 * Title: MPI Message independent structures and definitions
7 * Creation Date: July 27, 2000 7 * Creation Date: July 27, 2000
8 * 8 *
9 * mpi.h Version: 01.05.11 9 * mpi.h Version: 01.05.12
10 * 10 *
11 * Version History 11 * Version History
12 * --------------- 12 * ---------------
13 * 13 *
14 * Date Version Description 14 * Date Version Description
15 * -------- -------- ------------------------------------------------------ 15 * -------- -------- ------------------------------------------------------
16 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000. 16 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000.
17 * 05-24-00 00.10.02 Added MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH definition. 17 * 05-24-00 00.10.02 Added MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH definition.
18 * 06-06-00 01.00.01 Update MPI_VERSION_MAJOR and MPI_VERSION_MINOR. 18 * 06-06-00 01.00.01 Update MPI_VERSION_MAJOR and MPI_VERSION_MINOR.
19 * 06-22-00 01.00.02 Added MPI_IOCSTATUS_LAN_ definitions. 19 * 06-22-00 01.00.02 Added MPI_IOCSTATUS_LAN_ definitions.
20 * Removed LAN_SUSPEND function definition. 20 * Removed LAN_SUSPEND function definition.
21 * Added MPI_MSGFLAGS_CONTINUATION_REPLY definition. 21 * Added MPI_MSGFLAGS_CONTINUATION_REPLY definition.
22 * 06-30-00 01.00.03 Added MPI_CONTEXT_REPLY_TYPE_LAN definition. 22 * 06-30-00 01.00.03 Added MPI_CONTEXT_REPLY_TYPE_LAN definition.
23 * Added MPI_GET/SET_CONTEXT_REPLY_TYPE macros. 23 * Added MPI_GET/SET_CONTEXT_REPLY_TYPE macros.
24 * 07-27-00 01.00.04 Added MPI_FAULT_ definitions. 24 * 07-27-00 01.00.04 Added MPI_FAULT_ definitions.
25 * Removed MPI_IOCSTATUS_MSG/DATA_XFER_ERROR definitions. 25 * Removed MPI_IOCSTATUS_MSG/DATA_XFER_ERROR definitions.
26 * Added MPI_IOCSTATUS_INTERNAL_ERROR definition. 26 * Added MPI_IOCSTATUS_INTERNAL_ERROR definition.
27 * Added MPI_IOCSTATUS_TARGET_XFER_COUNT_MISMATCH. 27 * Added MPI_IOCSTATUS_TARGET_XFER_COUNT_MISMATCH.
28 * 11-02-00 01.01.01 Original release for post 1.0 work. 28 * 11-02-00 01.01.01 Original release for post 1.0 work.
29 * 12-04-00 01.01.02 Added new function codes. 29 * 12-04-00 01.01.02 Added new function codes.
30 * 01-09-01 01.01.03 Added more definitions to the system interface section 30 * 01-09-01 01.01.03 Added more definitions to the system interface section
31 * Added MPI_IOCSTATUS_TARGET_STS_DATA_NOT_SENT. 31 * Added MPI_IOCSTATUS_TARGET_STS_DATA_NOT_SENT.
32 * 01-25-01 01.01.04 Changed MPI_VERSION_MINOR from 0x00 to 0x01. 32 * 01-25-01 01.01.04 Changed MPI_VERSION_MINOR from 0x00 to 0x01.
33 * 02-20-01 01.01.05 Started using MPI_POINTER. 33 * 02-20-01 01.01.05 Started using MPI_POINTER.
34 * Fixed value for MPI_DIAG_RW_ENABLE. 34 * Fixed value for MPI_DIAG_RW_ENABLE.
35 * Added defines for MPI_DIAG_PREVENT_IOC_BOOT and 35 * Added defines for MPI_DIAG_PREVENT_IOC_BOOT and
36 * MPI_DIAG_CLEAR_FLASH_BAD_SIG. 36 * MPI_DIAG_CLEAR_FLASH_BAD_SIG.
37 * Obsoleted MPI_IOCSTATUS_TARGET_FC_ defines. 37 * Obsoleted MPI_IOCSTATUS_TARGET_FC_ defines.
38 * 02-27-01 01.01.06 Removed MPI_HOST_INDEX_REGISTER define. 38 * 02-27-01 01.01.06 Removed MPI_HOST_INDEX_REGISTER define.
39 * Added function codes for RAID. 39 * Added function codes for RAID.
40 * 04-09-01 01.01.07 Added alternate define for MPI_DOORBELL_ACTIVE, 40 * 04-09-01 01.01.07 Added alternate define for MPI_DOORBELL_ACTIVE,
41 * MPI_DOORBELL_USED, to better match the spec. 41 * MPI_DOORBELL_USED, to better match the spec.
42 * 08-08-01 01.02.01 Original release for v1.2 work. 42 * 08-08-01 01.02.01 Original release for v1.2 work.
43 * Changed MPI_VERSION_MINOR from 0x01 to 0x02. 43 * Changed MPI_VERSION_MINOR from 0x01 to 0x02.
44 * Added define MPI_FUNCTION_TOOLBOX. 44 * Added define MPI_FUNCTION_TOOLBOX.
45 * 09-28-01 01.02.02 New function code MPI_SCSI_ENCLOSURE_PROCESSOR. 45 * 09-28-01 01.02.02 New function code MPI_SCSI_ENCLOSURE_PROCESSOR.
46 * 11-01-01 01.02.03 Changed name to MPI_FUNCTION_SCSI_ENCLOSURE_PROCESSOR. 46 * 11-01-01 01.02.03 Changed name to MPI_FUNCTION_SCSI_ENCLOSURE_PROCESSOR.
47 * 03-14-02 01.02.04 Added MPI_HEADER_VERSION_ defines. 47 * 03-14-02 01.02.04 Added MPI_HEADER_VERSION_ defines.
48 * 05-31-02 01.02.05 Bumped MPI_HEADER_VERSION_UNIT. 48 * 05-31-02 01.02.05 Bumped MPI_HEADER_VERSION_UNIT.
49 * 07-12-02 01.02.06 Added define for MPI_FUNCTION_MAILBOX. 49 * 07-12-02 01.02.06 Added define for MPI_FUNCTION_MAILBOX.
50 * 09-16-02 01.02.07 Bumped value for MPI_HEADER_VERSION_UNIT. 50 * 09-16-02 01.02.07 Bumped value for MPI_HEADER_VERSION_UNIT.
51 * 11-15-02 01.02.08 Added define MPI_IOCSTATUS_TARGET_INVALID_IO_INDEX and 51 * 11-15-02 01.02.08 Added define MPI_IOCSTATUS_TARGET_INVALID_IO_INDEX and
52 * obsoleted define MPI_IOCSTATUS_TARGET_INVALID_IOCINDEX. 52 * obsoleted define MPI_IOCSTATUS_TARGET_INVALID_IOCINDEX.
53 * 04-01-03 01.02.09 New IOCStatus code: MPI_IOCSTATUS_FC_EXCHANGE_CANCELED 53 * 04-01-03 01.02.09 New IOCStatus code: MPI_IOCSTATUS_FC_EXCHANGE_CANCELED
54 * 06-26-03 01.02.10 Bumped MPI_HEADER_VERSION_UNIT value. 54 * 06-26-03 01.02.10 Bumped MPI_HEADER_VERSION_UNIT value.
55 * 01-16-04 01.02.11 Added define for MPI_IOCLOGINFO_TYPE_SHIFT. 55 * 01-16-04 01.02.11 Added define for MPI_IOCLOGINFO_TYPE_SHIFT.
56 * 04-29-04 01.02.12 Added function codes for MPI_FUNCTION_DIAG_BUFFER_POST 56 * 04-29-04 01.02.12 Added function codes for MPI_FUNCTION_DIAG_BUFFER_POST
57 * and MPI_FUNCTION_DIAG_RELEASE. 57 * and MPI_FUNCTION_DIAG_RELEASE.
58 * Added MPI_IOCSTATUS_DIAGNOSTIC_RELEASED define. 58 * Added MPI_IOCSTATUS_DIAGNOSTIC_RELEASED define.
59 * Bumped MPI_HEADER_VERSION_UNIT value. 59 * Bumped MPI_HEADER_VERSION_UNIT value.
60 * 05-11-04 01.03.01 Bumped MPI_VERSION_MINOR for MPI v1.3. 60 * 05-11-04 01.03.01 Bumped MPI_VERSION_MINOR for MPI v1.3.
61 * Added codes for Inband. 61 * Added codes for Inband.
62 * 08-19-04 01.05.01 Added defines for Host Buffer Access Control doorbell. 62 * 08-19-04 01.05.01 Added defines for Host Buffer Access Control doorbell.
63 * Added define for offset of High Priority Request Queue. 63 * Added define for offset of High Priority Request Queue.
64 * Added new function codes and new IOCStatus codes. 64 * Added new function codes and new IOCStatus codes.
65 * Added a IOCLogInfo type of SAS. 65 * Added a IOCLogInfo type of SAS.
66 * 12-07-04 01.05.02 Bumped MPI_HEADER_VERSION_UNIT. 66 * 12-07-04 01.05.02 Bumped MPI_HEADER_VERSION_UNIT.
67 * 12-09-04 01.05.03 Bumped MPI_HEADER_VERSION_UNIT. 67 * 12-09-04 01.05.03 Bumped MPI_HEADER_VERSION_UNIT.
68 * 01-15-05 01.05.04 Bumped MPI_HEADER_VERSION_UNIT. 68 * 01-15-05 01.05.04 Bumped MPI_HEADER_VERSION_UNIT.
69 * 02-09-05 01.05.05 Bumped MPI_HEADER_VERSION_UNIT. 69 * 02-09-05 01.05.05 Bumped MPI_HEADER_VERSION_UNIT.
70 * 02-22-05 01.05.06 Bumped MPI_HEADER_VERSION_UNIT. 70 * 02-22-05 01.05.06 Bumped MPI_HEADER_VERSION_UNIT.
71 * 03-11-05 01.05.07 Removed function codes for SCSI IO 32 and 71 * 03-11-05 01.05.07 Removed function codes for SCSI IO 32 and
72 * TargetAssistExtended requests. 72 * TargetAssistExtended requests.
73 * Removed EEDP IOCStatus codes. 73 * Removed EEDP IOCStatus codes.
74 * 06-24-05 01.05.08 Added function codes for SCSI IO 32 and 74 * 06-24-05 01.05.08 Added function codes for SCSI IO 32 and
75 * TargetAssistExtended requests. 75 * TargetAssistExtended requests.
76 * Added EEDP IOCStatus codes. 76 * Added EEDP IOCStatus codes.
77 * 08-03-05 01.05.09 Bumped MPI_HEADER_VERSION_UNIT. 77 * 08-03-05 01.05.09 Bumped MPI_HEADER_VERSION_UNIT.
78 * 08-30-05 01.05.10 Added 2 new IOCStatus codes for Target. 78 * 08-30-05 01.05.10 Added 2 new IOCStatus codes for Target.
79 * 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT. 79 * 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT.
80 * 10-11-06 01.05.12 Bumped MPI_HEADER_VERSION_UNIT.
80 * -------------------------------------------------------------------------- 81 * --------------------------------------------------------------------------
81 */ 82 */
82 83
83 #ifndef MPI_H 84 #ifndef MPI_H
84 #define MPI_H 85 #define MPI_H
85 86
86 87
87 /***************************************************************************** 88 /*****************************************************************************
88 * 89 *
89 * M P I V e r s i o n D e f i n i t i o n s 90 * M P I V e r s i o n D e f i n i t i o n s
90 * 91 *
91 *****************************************************************************/ 92 *****************************************************************************/
92 93
93 #define MPI_VERSION_MAJOR (0x01) 94 #define MPI_VERSION_MAJOR (0x01)
94 #define MPI_VERSION_MINOR (0x05) 95 #define MPI_VERSION_MINOR (0x05)
95 #define MPI_VERSION_MAJOR_MASK (0xFF00) 96 #define MPI_VERSION_MAJOR_MASK (0xFF00)
96 #define MPI_VERSION_MAJOR_SHIFT (8) 97 #define MPI_VERSION_MAJOR_SHIFT (8)
97 #define MPI_VERSION_MINOR_MASK (0x00FF) 98 #define MPI_VERSION_MINOR_MASK (0x00FF)
98 #define MPI_VERSION_MINOR_SHIFT (0) 99 #define MPI_VERSION_MINOR_SHIFT (0)
99 #define MPI_VERSION ((MPI_VERSION_MAJOR << MPI_VERSION_MAJOR_SHIFT) | \ 100 #define MPI_VERSION ((MPI_VERSION_MAJOR << MPI_VERSION_MAJOR_SHIFT) | \
100 MPI_VERSION_MINOR) 101 MPI_VERSION_MINOR)
101 102
102 #define MPI_VERSION_01_00 (0x0100) 103 #define MPI_VERSION_01_00 (0x0100)
103 #define MPI_VERSION_01_01 (0x0101) 104 #define MPI_VERSION_01_01 (0x0101)
104 #define MPI_VERSION_01_02 (0x0102) 105 #define MPI_VERSION_01_02 (0x0102)
105 #define MPI_VERSION_01_03 (0x0103) 106 #define MPI_VERSION_01_03 (0x0103)
106 #define MPI_VERSION_01_05 (0x0105) 107 #define MPI_VERSION_01_05 (0x0105)
107 /* Note: The major versions of 0xe0 through 0xff are reserved */ 108 /* Note: The major versions of 0xe0 through 0xff are reserved */
108 109
109 /* versioning for this MPI header set */ 110 /* versioning for this MPI header set */
110 #define MPI_HEADER_VERSION_UNIT (0x0D) 111 #define MPI_HEADER_VERSION_UNIT (0x0E)
111 #define MPI_HEADER_VERSION_DEV (0x00) 112 #define MPI_HEADER_VERSION_DEV (0x00)
112 #define MPI_HEADER_VERSION_UNIT_MASK (0xFF00) 113 #define MPI_HEADER_VERSION_UNIT_MASK (0xFF00)
113 #define MPI_HEADER_VERSION_UNIT_SHIFT (8) 114 #define MPI_HEADER_VERSION_UNIT_SHIFT (8)
114 #define MPI_HEADER_VERSION_DEV_MASK (0x00FF) 115 #define MPI_HEADER_VERSION_DEV_MASK (0x00FF)
115 #define MPI_HEADER_VERSION_DEV_SHIFT (0) 116 #define MPI_HEADER_VERSION_DEV_SHIFT (0)
116 #define MPI_HEADER_VERSION ((MPI_HEADER_VERSION_UNIT << 8) | MPI_HEADER_VERSION_DEV) 117 #define MPI_HEADER_VERSION ((MPI_HEADER_VERSION_UNIT << 8) | MPI_HEADER_VERSION_DEV)
117 118
118 /***************************************************************************** 119 /*****************************************************************************
119 * 120 *
120 * I O C S t a t e D e f i n i t i o n s 121 * I O C S t a t e D e f i n i t i o n s
121 * 122 *
122 *****************************************************************************/ 123 *****************************************************************************/
123 124
124 #define MPI_IOC_STATE_RESET (0x00000000) 125 #define MPI_IOC_STATE_RESET (0x00000000)
125 #define MPI_IOC_STATE_READY (0x10000000) 126 #define MPI_IOC_STATE_READY (0x10000000)
126 #define MPI_IOC_STATE_OPERATIONAL (0x20000000) 127 #define MPI_IOC_STATE_OPERATIONAL (0x20000000)
127 #define MPI_IOC_STATE_FAULT (0x40000000) 128 #define MPI_IOC_STATE_FAULT (0x40000000)
128 129
129 #define MPI_IOC_STATE_MASK (0xF0000000) 130 #define MPI_IOC_STATE_MASK (0xF0000000)
130 #define MPI_IOC_STATE_SHIFT (28) 131 #define MPI_IOC_STATE_SHIFT (28)
131 132
132 /* Fault state codes (product independent range 0x8000-0xFFFF) */ 133 /* Fault state codes (product independent range 0x8000-0xFFFF) */
133 134
134 #define MPI_FAULT_REQUEST_MESSAGE_PCI_PARITY_ERROR (0x8111) 135 #define MPI_FAULT_REQUEST_MESSAGE_PCI_PARITY_ERROR (0x8111)
135 #define MPI_FAULT_REQUEST_MESSAGE_PCI_BUS_FAULT (0x8112) 136 #define MPI_FAULT_REQUEST_MESSAGE_PCI_BUS_FAULT (0x8112)
136 #define MPI_FAULT_REPLY_MESSAGE_PCI_PARITY_ERROR (0x8113) 137 #define MPI_FAULT_REPLY_MESSAGE_PCI_PARITY_ERROR (0x8113)
137 #define MPI_FAULT_REPLY_MESSAGE_PCI_BUS_FAULT (0x8114) 138 #define MPI_FAULT_REPLY_MESSAGE_PCI_BUS_FAULT (0x8114)
138 #define MPI_FAULT_DATA_SEND_PCI_PARITY_ERROR (0x8115) 139 #define MPI_FAULT_DATA_SEND_PCI_PARITY_ERROR (0x8115)
139 #define MPI_FAULT_DATA_SEND_PCI_BUS_FAULT (0x8116) 140 #define MPI_FAULT_DATA_SEND_PCI_BUS_FAULT (0x8116)
140 #define MPI_FAULT_DATA_RECEIVE_PCI_PARITY_ERROR (0x8117) 141 #define MPI_FAULT_DATA_RECEIVE_PCI_PARITY_ERROR (0x8117)
141 #define MPI_FAULT_DATA_RECEIVE_PCI_BUS_FAULT (0x8118) 142 #define MPI_FAULT_DATA_RECEIVE_PCI_BUS_FAULT (0x8118)
142 143
143 144
144 /***************************************************************************** 145 /*****************************************************************************
145 * 146 *
146 * P C I S y s t e m I n t e r f a c e R e g i s t e r s 147 * P C I S y s t e m I n t e r f a c e R e g i s t e r s
147 * 148 *
148 *****************************************************************************/ 149 *****************************************************************************/
149 150
150 /* 151 /*
151 * Defines for working with the System Doorbell register. 152 * Defines for working with the System Doorbell register.
152 * Values for doorbell function codes are included in the section that defines 153 * Values for doorbell function codes are included in the section that defines
153 * all the function codes (further on in this file). 154 * all the function codes (further on in this file).
154 */ 155 */
155 #define MPI_DOORBELL_OFFSET (0x00000000) 156 #define MPI_DOORBELL_OFFSET (0x00000000)
156 #define MPI_DOORBELL_ACTIVE (0x08000000) /* DoorbellUsed */ 157 #define MPI_DOORBELL_ACTIVE (0x08000000) /* DoorbellUsed */
157 #define MPI_DOORBELL_USED (MPI_DOORBELL_ACTIVE) 158 #define MPI_DOORBELL_USED (MPI_DOORBELL_ACTIVE)
158 #define MPI_DOORBELL_ACTIVE_SHIFT (27) 159 #define MPI_DOORBELL_ACTIVE_SHIFT (27)
159 #define MPI_DOORBELL_WHO_INIT_MASK (0x07000000) 160 #define MPI_DOORBELL_WHO_INIT_MASK (0x07000000)
160 #define MPI_DOORBELL_WHO_INIT_SHIFT (24) 161 #define MPI_DOORBELL_WHO_INIT_SHIFT (24)
161 #define MPI_DOORBELL_FUNCTION_MASK (0xFF000000) 162 #define MPI_DOORBELL_FUNCTION_MASK (0xFF000000)
162 #define MPI_DOORBELL_FUNCTION_SHIFT (24) 163 #define MPI_DOORBELL_FUNCTION_SHIFT (24)
163 #define MPI_DOORBELL_ADD_DWORDS_MASK (0x00FF0000) 164 #define MPI_DOORBELL_ADD_DWORDS_MASK (0x00FF0000)
164 #define MPI_DOORBELL_ADD_DWORDS_SHIFT (16) 165 #define MPI_DOORBELL_ADD_DWORDS_SHIFT (16)
165 #define MPI_DOORBELL_DATA_MASK (0x0000FFFF) 166 #define MPI_DOORBELL_DATA_MASK (0x0000FFFF)
166 #define MPI_DOORBELL_FUNCTION_SPECIFIC_MASK (0x0000FFFF) 167 #define MPI_DOORBELL_FUNCTION_SPECIFIC_MASK (0x0000FFFF)
167 168
168 /* values for Host Buffer Access Control doorbell function */ 169 /* values for Host Buffer Access Control doorbell function */
169 #define MPI_DB_HPBAC_VALUE_MASK (0x0000F000) 170 #define MPI_DB_HPBAC_VALUE_MASK (0x0000F000)
170 #define MPI_DB_HPBAC_ENABLE_ACCESS (0x01) 171 #define MPI_DB_HPBAC_ENABLE_ACCESS (0x01)
171 #define MPI_DB_HPBAC_DISABLE_ACCESS (0x02) 172 #define MPI_DB_HPBAC_DISABLE_ACCESS (0x02)
172 #define MPI_DB_HPBAC_FREE_BUFFER (0x03) 173 #define MPI_DB_HPBAC_FREE_BUFFER (0x03)
173 174
174 175
175 #define MPI_WRITE_SEQUENCE_OFFSET (0x00000004) 176 #define MPI_WRITE_SEQUENCE_OFFSET (0x00000004)
176 #define MPI_WRSEQ_KEY_VALUE_MASK (0x0000000F) 177 #define MPI_WRSEQ_KEY_VALUE_MASK (0x0000000F)
177 #define MPI_WRSEQ_1ST_KEY_VALUE (0x04) 178 #define MPI_WRSEQ_1ST_KEY_VALUE (0x04)
178 #define MPI_WRSEQ_2ND_KEY_VALUE (0x0B) 179 #define MPI_WRSEQ_2ND_KEY_VALUE (0x0B)
179 #define MPI_WRSEQ_3RD_KEY_VALUE (0x02) 180 #define MPI_WRSEQ_3RD_KEY_VALUE (0x02)
180 #define MPI_WRSEQ_4TH_KEY_VALUE (0x07) 181 #define MPI_WRSEQ_4TH_KEY_VALUE (0x07)
181 #define MPI_WRSEQ_5TH_KEY_VALUE (0x0D) 182 #define MPI_WRSEQ_5TH_KEY_VALUE (0x0D)
182 183
183 #define MPI_DIAGNOSTIC_OFFSET (0x00000008) 184 #define MPI_DIAGNOSTIC_OFFSET (0x00000008)
184 #define MPI_DIAG_CLEAR_FLASH_BAD_SIG (0x00000400) 185 #define MPI_DIAG_CLEAR_FLASH_BAD_SIG (0x00000400)
185 #define MPI_DIAG_PREVENT_IOC_BOOT (0x00000200) 186 #define MPI_DIAG_PREVENT_IOC_BOOT (0x00000200)
186 #define MPI_DIAG_DRWE (0x00000080) 187 #define MPI_DIAG_DRWE (0x00000080)
187 #define MPI_DIAG_FLASH_BAD_SIG (0x00000040) 188 #define MPI_DIAG_FLASH_BAD_SIG (0x00000040)
188 #define MPI_DIAG_RESET_HISTORY (0x00000020) 189 #define MPI_DIAG_RESET_HISTORY (0x00000020)
189 #define MPI_DIAG_RW_ENABLE (0x00000010) 190 #define MPI_DIAG_RW_ENABLE (0x00000010)
190 #define MPI_DIAG_RESET_ADAPTER (0x00000004) 191 #define MPI_DIAG_RESET_ADAPTER (0x00000004)
191 #define MPI_DIAG_DISABLE_ARM (0x00000002) 192 #define MPI_DIAG_DISABLE_ARM (0x00000002)
192 #define MPI_DIAG_MEM_ENABLE (0x00000001) 193 #define MPI_DIAG_MEM_ENABLE (0x00000001)
193 194
194 #define MPI_TEST_BASE_ADDRESS_OFFSET (0x0000000C) 195 #define MPI_TEST_BASE_ADDRESS_OFFSET (0x0000000C)
195 196
196 #define MPI_DIAG_RW_DATA_OFFSET (0x00000010) 197 #define MPI_DIAG_RW_DATA_OFFSET (0x00000010)
197 198
198 #define MPI_DIAG_RW_ADDRESS_OFFSET (0x00000014) 199 #define MPI_DIAG_RW_ADDRESS_OFFSET (0x00000014)
199 200
200 #define MPI_HOST_INTERRUPT_STATUS_OFFSET (0x00000030) 201 #define MPI_HOST_INTERRUPT_STATUS_OFFSET (0x00000030)
201 #define MPI_HIS_IOP_DOORBELL_STATUS (0x80000000) 202 #define MPI_HIS_IOP_DOORBELL_STATUS (0x80000000)
202 #define MPI_HIS_REPLY_MESSAGE_INTERRUPT (0x00000008) 203 #define MPI_HIS_REPLY_MESSAGE_INTERRUPT (0x00000008)
203 #define MPI_HIS_DOORBELL_INTERRUPT (0x00000001) 204 #define MPI_HIS_DOORBELL_INTERRUPT (0x00000001)
204 205
205 #define MPI_HOST_INTERRUPT_MASK_OFFSET (0x00000034) 206 #define MPI_HOST_INTERRUPT_MASK_OFFSET (0x00000034)
206 #define MPI_HIM_RIM (0x00000008) 207 #define MPI_HIM_RIM (0x00000008)
207 #define MPI_HIM_DIM (0x00000001) 208 #define MPI_HIM_DIM (0x00000001)
208 209
209 #define MPI_REQUEST_QUEUE_OFFSET (0x00000040) 210 #define MPI_REQUEST_QUEUE_OFFSET (0x00000040)
210 #define MPI_REQUEST_POST_FIFO_OFFSET (0x00000040) 211 #define MPI_REQUEST_POST_FIFO_OFFSET (0x00000040)
211 212
212 #define MPI_REPLY_QUEUE_OFFSET (0x00000044) 213 #define MPI_REPLY_QUEUE_OFFSET (0x00000044)
213 #define MPI_REPLY_POST_FIFO_OFFSET (0x00000044) 214 #define MPI_REPLY_POST_FIFO_OFFSET (0x00000044)
214 #define MPI_REPLY_FREE_FIFO_OFFSET (0x00000044) 215 #define MPI_REPLY_FREE_FIFO_OFFSET (0x00000044)
215 216
216 #define MPI_HI_PRI_REQUEST_QUEUE_OFFSET (0x00000048) 217 #define MPI_HI_PRI_REQUEST_QUEUE_OFFSET (0x00000048)
217 218
218 219
219 220
220 /***************************************************************************** 221 /*****************************************************************************
221 * 222 *
222 * M e s s a g e F r a m e D e s c r i p t o r s 223 * M e s s a g e F r a m e D e s c r i p t o r s
223 * 224 *
224 *****************************************************************************/ 225 *****************************************************************************/
225 226
226 #define MPI_REQ_MF_DESCRIPTOR_NB_MASK (0x00000003) 227 #define MPI_REQ_MF_DESCRIPTOR_NB_MASK (0x00000003)
227 #define MPI_REQ_MF_DESCRIPTOR_F_BIT (0x00000004) 228 #define MPI_REQ_MF_DESCRIPTOR_F_BIT (0x00000004)
228 #define MPI_REQ_MF_DESCRIPTOR_ADDRESS_MASK (0xFFFFFFF8) 229 #define MPI_REQ_MF_DESCRIPTOR_ADDRESS_MASK (0xFFFFFFF8)
229 230
230 #define MPI_ADDRESS_REPLY_A_BIT (0x80000000) 231 #define MPI_ADDRESS_REPLY_A_BIT (0x80000000)
231 #define MPI_ADDRESS_REPLY_ADDRESS_MASK (0x7FFFFFFF) 232 #define MPI_ADDRESS_REPLY_ADDRESS_MASK (0x7FFFFFFF)
232 233
233 #define MPI_CONTEXT_REPLY_A_BIT (0x80000000) 234 #define MPI_CONTEXT_REPLY_A_BIT (0x80000000)
234 #define MPI_CONTEXT_REPLY_TYPE_MASK (0x60000000) 235 #define MPI_CONTEXT_REPLY_TYPE_MASK (0x60000000)
235 #define MPI_CONTEXT_REPLY_TYPE_SCSI_INIT (0x00) 236 #define MPI_CONTEXT_REPLY_TYPE_SCSI_INIT (0x00)
236 #define MPI_CONTEXT_REPLY_TYPE_SCSI_TARGET (0x01) 237 #define MPI_CONTEXT_REPLY_TYPE_SCSI_TARGET (0x01)
237 #define MPI_CONTEXT_REPLY_TYPE_LAN (0x02) 238 #define MPI_CONTEXT_REPLY_TYPE_LAN (0x02)
238 #define MPI_CONTEXT_REPLY_TYPE_SHIFT (29) 239 #define MPI_CONTEXT_REPLY_TYPE_SHIFT (29)
239 #define MPI_CONTEXT_REPLY_CONTEXT_MASK (0x1FFFFFFF) 240 #define MPI_CONTEXT_REPLY_CONTEXT_MASK (0x1FFFFFFF)
240 241
241 242
242 /****************************************************************************/ 243 /****************************************************************************/
243 /* Context Reply macros */ 244 /* Context Reply macros */
244 /****************************************************************************/ 245 /****************************************************************************/
245 246
246 #define MPI_GET_CONTEXT_REPLY_TYPE(x) (((x) & MPI_CONTEXT_REPLY_TYPE_MASK) \ 247 #define MPI_GET_CONTEXT_REPLY_TYPE(x) (((x) & MPI_CONTEXT_REPLY_TYPE_MASK) \
247 >> MPI_CONTEXT_REPLY_TYPE_SHIFT) 248 >> MPI_CONTEXT_REPLY_TYPE_SHIFT)
248 249
249 #define MPI_SET_CONTEXT_REPLY_TYPE(x, typ) \ 250 #define MPI_SET_CONTEXT_REPLY_TYPE(x, typ) \
250 ((x) = ((x) & ~MPI_CONTEXT_REPLY_TYPE_MASK) | \ 251 ((x) = ((x) & ~MPI_CONTEXT_REPLY_TYPE_MASK) | \
251 (((typ) << MPI_CONTEXT_REPLY_TYPE_SHIFT) & \ 252 (((typ) << MPI_CONTEXT_REPLY_TYPE_SHIFT) & \
252 MPI_CONTEXT_REPLY_TYPE_MASK)) 253 MPI_CONTEXT_REPLY_TYPE_MASK))
253 254
254 255
255 /***************************************************************************** 256 /*****************************************************************************
256 * 257 *
257 * M e s s a g e F u n c t i o n s 258 * M e s s a g e F u n c t i o n s
258 * 0x80 -> 0x8F reserved for private message use per product 259 * 0x80 -> 0x8F reserved for private message use per product
259 * 260 *
260 * 261 *
261 *****************************************************************************/ 262 *****************************************************************************/
262 263
263 #define MPI_FUNCTION_SCSI_IO_REQUEST (0x00) 264 #define MPI_FUNCTION_SCSI_IO_REQUEST (0x00)
264 #define MPI_FUNCTION_SCSI_TASK_MGMT (0x01) 265 #define MPI_FUNCTION_SCSI_TASK_MGMT (0x01)
265 #define MPI_FUNCTION_IOC_INIT (0x02) 266 #define MPI_FUNCTION_IOC_INIT (0x02)
266 #define MPI_FUNCTION_IOC_FACTS (0x03) 267 #define MPI_FUNCTION_IOC_FACTS (0x03)
267 #define MPI_FUNCTION_CONFIG (0x04) 268 #define MPI_FUNCTION_CONFIG (0x04)
268 #define MPI_FUNCTION_PORT_FACTS (0x05) 269 #define MPI_FUNCTION_PORT_FACTS (0x05)
269 #define MPI_FUNCTION_PORT_ENABLE (0x06) 270 #define MPI_FUNCTION_PORT_ENABLE (0x06)
270 #define MPI_FUNCTION_EVENT_NOTIFICATION (0x07) 271 #define MPI_FUNCTION_EVENT_NOTIFICATION (0x07)
271 #define MPI_FUNCTION_EVENT_ACK (0x08) 272 #define MPI_FUNCTION_EVENT_ACK (0x08)
272 #define MPI_FUNCTION_FW_DOWNLOAD (0x09) 273 #define MPI_FUNCTION_FW_DOWNLOAD (0x09)
273 #define MPI_FUNCTION_TARGET_CMD_BUFFER_POST (0x0A) 274 #define MPI_FUNCTION_TARGET_CMD_BUFFER_POST (0x0A)
274 #define MPI_FUNCTION_TARGET_ASSIST (0x0B) 275 #define MPI_FUNCTION_TARGET_ASSIST (0x0B)
275 #define MPI_FUNCTION_TARGET_STATUS_SEND (0x0C) 276 #define MPI_FUNCTION_TARGET_STATUS_SEND (0x0C)
276 #define MPI_FUNCTION_TARGET_MODE_ABORT (0x0D) 277 #define MPI_FUNCTION_TARGET_MODE_ABORT (0x0D)
277 #define MPI_FUNCTION_FC_LINK_SRVC_BUF_POST (0x0E) 278 #define MPI_FUNCTION_FC_LINK_SRVC_BUF_POST (0x0E)
278 #define MPI_FUNCTION_FC_LINK_SRVC_RSP (0x0F) 279 #define MPI_FUNCTION_FC_LINK_SRVC_RSP (0x0F)
279 #define MPI_FUNCTION_FC_EX_LINK_SRVC_SEND (0x10) 280 #define MPI_FUNCTION_FC_EX_LINK_SRVC_SEND (0x10)
280 #define MPI_FUNCTION_FC_ABORT (0x11) 281 #define MPI_FUNCTION_FC_ABORT (0x11)
281 #define MPI_FUNCTION_FW_UPLOAD (0x12) 282 #define MPI_FUNCTION_FW_UPLOAD (0x12)
282 #define MPI_FUNCTION_FC_COMMON_TRANSPORT_SEND (0x13) 283 #define MPI_FUNCTION_FC_COMMON_TRANSPORT_SEND (0x13)
283 #define MPI_FUNCTION_FC_PRIMITIVE_SEND (0x14) 284 #define MPI_FUNCTION_FC_PRIMITIVE_SEND (0x14)
284 285
285 #define MPI_FUNCTION_RAID_ACTION (0x15) 286 #define MPI_FUNCTION_RAID_ACTION (0x15)
286 #define MPI_FUNCTION_RAID_SCSI_IO_PASSTHROUGH (0x16) 287 #define MPI_FUNCTION_RAID_SCSI_IO_PASSTHROUGH (0x16)
287 288
288 #define MPI_FUNCTION_TOOLBOX (0x17) 289 #define MPI_FUNCTION_TOOLBOX (0x17)
289 290
290 #define MPI_FUNCTION_SCSI_ENCLOSURE_PROCESSOR (0x18) 291 #define MPI_FUNCTION_SCSI_ENCLOSURE_PROCESSOR (0x18)
291 292
292 #define MPI_FUNCTION_MAILBOX (0x19) 293 #define MPI_FUNCTION_MAILBOX (0x19)
293 294
294 #define MPI_FUNCTION_SMP_PASSTHROUGH (0x1A) 295 #define MPI_FUNCTION_SMP_PASSTHROUGH (0x1A)
295 #define MPI_FUNCTION_SAS_IO_UNIT_CONTROL (0x1B) 296 #define MPI_FUNCTION_SAS_IO_UNIT_CONTROL (0x1B)
296 #define MPI_FUNCTION_SATA_PASSTHROUGH (0x1C) 297 #define MPI_FUNCTION_SATA_PASSTHROUGH (0x1C)
297 298
298 #define MPI_FUNCTION_DIAG_BUFFER_POST (0x1D) 299 #define MPI_FUNCTION_DIAG_BUFFER_POST (0x1D)
299 #define MPI_FUNCTION_DIAG_RELEASE (0x1E) 300 #define MPI_FUNCTION_DIAG_RELEASE (0x1E)
300 301
301 #define MPI_FUNCTION_SCSI_IO_32 (0x1F) 302 #define MPI_FUNCTION_SCSI_IO_32 (0x1F)
302 303
303 #define MPI_FUNCTION_LAN_SEND (0x20) 304 #define MPI_FUNCTION_LAN_SEND (0x20)
304 #define MPI_FUNCTION_LAN_RECEIVE (0x21) 305 #define MPI_FUNCTION_LAN_RECEIVE (0x21)
305 #define MPI_FUNCTION_LAN_RESET (0x22) 306 #define MPI_FUNCTION_LAN_RESET (0x22)
306 307
307 #define MPI_FUNCTION_TARGET_ASSIST_EXTENDED (0x23) 308 #define MPI_FUNCTION_TARGET_ASSIST_EXTENDED (0x23)
308 #define MPI_FUNCTION_TARGET_CMD_BUF_BASE_POST (0x24) 309 #define MPI_FUNCTION_TARGET_CMD_BUF_BASE_POST (0x24)
309 #define MPI_FUNCTION_TARGET_CMD_BUF_LIST_POST (0x25) 310 #define MPI_FUNCTION_TARGET_CMD_BUF_LIST_POST (0x25)
310 311
311 #define MPI_FUNCTION_INBAND_BUFFER_POST (0x28) 312 #define MPI_FUNCTION_INBAND_BUFFER_POST (0x28)
312 #define MPI_FUNCTION_INBAND_SEND (0x29) 313 #define MPI_FUNCTION_INBAND_SEND (0x29)
313 #define MPI_FUNCTION_INBAND_RSP (0x2A) 314 #define MPI_FUNCTION_INBAND_RSP (0x2A)
314 #define MPI_FUNCTION_INBAND_ABORT (0x2B) 315 #define MPI_FUNCTION_INBAND_ABORT (0x2B)
315 316
316 #define MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET (0x40) 317 #define MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET (0x40)
317 #define MPI_FUNCTION_IO_UNIT_RESET (0x41) 318 #define MPI_FUNCTION_IO_UNIT_RESET (0x41)
318 #define MPI_FUNCTION_HANDSHAKE (0x42) 319 #define MPI_FUNCTION_HANDSHAKE (0x42)
319 #define MPI_FUNCTION_REPLY_FRAME_REMOVAL (0x43) 320 #define MPI_FUNCTION_REPLY_FRAME_REMOVAL (0x43)
320 #define MPI_FUNCTION_HOST_PAGEBUF_ACCESS_CONTROL (0x44) 321 #define MPI_FUNCTION_HOST_PAGEBUF_ACCESS_CONTROL (0x44)
321 322
322 323
323 /* standard version format */ 324 /* standard version format */
324 typedef struct _MPI_VERSION_STRUCT 325 typedef struct _MPI_VERSION_STRUCT
325 { 326 {
326 U8 Dev; /* 00h */ 327 U8 Dev; /* 00h */
327 U8 Unit; /* 01h */ 328 U8 Unit; /* 01h */
328 U8 Minor; /* 02h */ 329 U8 Minor; /* 02h */
329 U8 Major; /* 03h */ 330 U8 Major; /* 03h */
330 } MPI_VERSION_STRUCT, MPI_POINTER PTR_MPI_VERSION_STRUCT, 331 } MPI_VERSION_STRUCT, MPI_POINTER PTR_MPI_VERSION_STRUCT,
331 MpiVersionStruct_t, MPI_POINTER pMpiVersionStruct; 332 MpiVersionStruct_t, MPI_POINTER pMpiVersionStruct;
332 333
333 typedef union _MPI_VERSION_FORMAT 334 typedef union _MPI_VERSION_FORMAT
334 { 335 {
335 MPI_VERSION_STRUCT Struct; 336 MPI_VERSION_STRUCT Struct;
336 U32 Word; 337 U32 Word;
337 } MPI_VERSION_FORMAT, MPI_POINTER PTR_MPI_VERSION_FORMAT, 338 } MPI_VERSION_FORMAT, MPI_POINTER PTR_MPI_VERSION_FORMAT,
338 MpiVersionFormat_t, MPI_POINTER pMpiVersionFormat_t; 339 MpiVersionFormat_t, MPI_POINTER pMpiVersionFormat_t;
339 340
340 341
341 /***************************************************************************** 342 /*****************************************************************************
342 * 343 *
343 * S c a t t e r G a t h e r E l e m e n t s 344 * S c a t t e r G a t h e r E l e m e n t s
344 * 345 *
345 *****************************************************************************/ 346 *****************************************************************************/
346 347
347 /****************************************************************************/ 348 /****************************************************************************/
348 /* Simple element structures */ 349 /* Simple element structures */
349 /****************************************************************************/ 350 /****************************************************************************/
350 351
351 typedef struct _SGE_SIMPLE32 352 typedef struct _SGE_SIMPLE32
352 { 353 {
353 U32 FlagsLength; 354 U32 FlagsLength;
354 U32 Address; 355 U32 Address;
355 } SGE_SIMPLE32, MPI_POINTER PTR_SGE_SIMPLE32, 356 } SGE_SIMPLE32, MPI_POINTER PTR_SGE_SIMPLE32,
356 SGESimple32_t, MPI_POINTER pSGESimple32_t; 357 SGESimple32_t, MPI_POINTER pSGESimple32_t;
357 358
358 typedef struct _SGE_SIMPLE64 359 typedef struct _SGE_SIMPLE64
359 { 360 {
360 U32 FlagsLength; 361 U32 FlagsLength;
361 U64 Address; 362 U64 Address;
362 } SGE_SIMPLE64, MPI_POINTER PTR_SGE_SIMPLE64, 363 } SGE_SIMPLE64, MPI_POINTER PTR_SGE_SIMPLE64,
363 SGESimple64_t, MPI_POINTER pSGESimple64_t; 364 SGESimple64_t, MPI_POINTER pSGESimple64_t;
364 365
365 typedef struct _SGE_SIMPLE_UNION 366 typedef struct _SGE_SIMPLE_UNION
366 { 367 {
367 U32 FlagsLength; 368 U32 FlagsLength;
368 union 369 union
369 { 370 {
370 U32 Address32; 371 U32 Address32;
371 U64 Address64; 372 U64 Address64;
372 }u; 373 }u;
373 } SGE_SIMPLE_UNION, MPI_POINTER PTR_SGE_SIMPLE_UNION, 374 } SGE_SIMPLE_UNION, MPI_POINTER PTR_SGE_SIMPLE_UNION,
374 SGESimpleUnion_t, MPI_POINTER pSGESimpleUnion_t; 375 SGESimpleUnion_t, MPI_POINTER pSGESimpleUnion_t;
375 376
376 /****************************************************************************/ 377 /****************************************************************************/
377 /* Chain element structures */ 378 /* Chain element structures */
378 /****************************************************************************/ 379 /****************************************************************************/
379 380
380 typedef struct _SGE_CHAIN32 381 typedef struct _SGE_CHAIN32
381 { 382 {
382 U16 Length; 383 U16 Length;
383 U8 NextChainOffset; 384 U8 NextChainOffset;
384 U8 Flags; 385 U8 Flags;
385 U32 Address; 386 U32 Address;
386 } SGE_CHAIN32, MPI_POINTER PTR_SGE_CHAIN32, 387 } SGE_CHAIN32, MPI_POINTER PTR_SGE_CHAIN32,
387 SGEChain32_t, MPI_POINTER pSGEChain32_t; 388 SGEChain32_t, MPI_POINTER pSGEChain32_t;
388 389
389 typedef struct _SGE_CHAIN64 390 typedef struct _SGE_CHAIN64
390 { 391 {
391 U16 Length; 392 U16 Length;
392 U8 NextChainOffset; 393 U8 NextChainOffset;
393 U8 Flags; 394 U8 Flags;
394 U64 Address; 395 U64 Address;
395 } SGE_CHAIN64, MPI_POINTER PTR_SGE_CHAIN64, 396 } SGE_CHAIN64, MPI_POINTER PTR_SGE_CHAIN64,
396 SGEChain64_t, MPI_POINTER pSGEChain64_t; 397 SGEChain64_t, MPI_POINTER pSGEChain64_t;
397 398
398 typedef struct _SGE_CHAIN_UNION 399 typedef struct _SGE_CHAIN_UNION
399 { 400 {
400 U16 Length; 401 U16 Length;
401 U8 NextChainOffset; 402 U8 NextChainOffset;
402 U8 Flags; 403 U8 Flags;
403 union 404 union
404 { 405 {
405 U32 Address32; 406 U32 Address32;
406 U64 Address64; 407 U64 Address64;
407 }u; 408 }u;
408 } SGE_CHAIN_UNION, MPI_POINTER PTR_SGE_CHAIN_UNION, 409 } SGE_CHAIN_UNION, MPI_POINTER PTR_SGE_CHAIN_UNION,
409 SGEChainUnion_t, MPI_POINTER pSGEChainUnion_t; 410 SGEChainUnion_t, MPI_POINTER pSGEChainUnion_t;
410 411
411 /****************************************************************************/ 412 /****************************************************************************/
412 /* Transaction Context element */ 413 /* Transaction Context element */
413 /****************************************************************************/ 414 /****************************************************************************/
414 415
415 typedef struct _SGE_TRANSACTION32 416 typedef struct _SGE_TRANSACTION32
416 { 417 {
417 U8 Reserved; 418 U8 Reserved;
418 U8 ContextSize; 419 U8 ContextSize;
419 U8 DetailsLength; 420 U8 DetailsLength;
420 U8 Flags; 421 U8 Flags;
421 U32 TransactionContext[1]; 422 U32 TransactionContext[1];
422 U32 TransactionDetails[1]; 423 U32 TransactionDetails[1];
423 } SGE_TRANSACTION32, MPI_POINTER PTR_SGE_TRANSACTION32, 424 } SGE_TRANSACTION32, MPI_POINTER PTR_SGE_TRANSACTION32,
424 SGETransaction32_t, MPI_POINTER pSGETransaction32_t; 425 SGETransaction32_t, MPI_POINTER pSGETransaction32_t;
425 426
426 typedef struct _SGE_TRANSACTION64 427 typedef struct _SGE_TRANSACTION64
427 { 428 {
428 U8 Reserved; 429 U8 Reserved;
429 U8 ContextSize; 430 U8 ContextSize;
430 U8 DetailsLength; 431 U8 DetailsLength;
431 U8 Flags; 432 U8 Flags;
432 U32 TransactionContext[2]; 433 U32 TransactionContext[2];
433 U32 TransactionDetails[1]; 434 U32 TransactionDetails[1];
434 } SGE_TRANSACTION64, MPI_POINTER PTR_SGE_TRANSACTION64, 435 } SGE_TRANSACTION64, MPI_POINTER PTR_SGE_TRANSACTION64,
435 SGETransaction64_t, MPI_POINTER pSGETransaction64_t; 436 SGETransaction64_t, MPI_POINTER pSGETransaction64_t;
436 437
437 typedef struct _SGE_TRANSACTION96 438 typedef struct _SGE_TRANSACTION96
438 { 439 {
439 U8 Reserved; 440 U8 Reserved;
440 U8 ContextSize; 441 U8 ContextSize;
441 U8 DetailsLength; 442 U8 DetailsLength;
442 U8 Flags; 443 U8 Flags;
443 U32 TransactionContext[3]; 444 U32 TransactionContext[3];
444 U32 TransactionDetails[1]; 445 U32 TransactionDetails[1];
445 } SGE_TRANSACTION96, MPI_POINTER PTR_SGE_TRANSACTION96, 446 } SGE_TRANSACTION96, MPI_POINTER PTR_SGE_TRANSACTION96,
446 SGETransaction96_t, MPI_POINTER pSGETransaction96_t; 447 SGETransaction96_t, MPI_POINTER pSGETransaction96_t;
447 448
448 typedef struct _SGE_TRANSACTION128 449 typedef struct _SGE_TRANSACTION128
449 { 450 {
450 U8 Reserved; 451 U8 Reserved;
451 U8 ContextSize; 452 U8 ContextSize;
452 U8 DetailsLength; 453 U8 DetailsLength;
453 U8 Flags; 454 U8 Flags;
454 U32 TransactionContext[4]; 455 U32 TransactionContext[4];
455 U32 TransactionDetails[1]; 456 U32 TransactionDetails[1];
456 } SGE_TRANSACTION128, MPI_POINTER PTR_SGE_TRANSACTION128, 457 } SGE_TRANSACTION128, MPI_POINTER PTR_SGE_TRANSACTION128,
457 SGETransaction_t128, MPI_POINTER pSGETransaction_t128; 458 SGETransaction_t128, MPI_POINTER pSGETransaction_t128;
458 459
459 typedef struct _SGE_TRANSACTION_UNION 460 typedef struct _SGE_TRANSACTION_UNION
460 { 461 {
461 U8 Reserved; 462 U8 Reserved;
462 U8 ContextSize; 463 U8 ContextSize;
463 U8 DetailsLength; 464 U8 DetailsLength;
464 U8 Flags; 465 U8 Flags;
465 union 466 union
466 { 467 {
467 U32 TransactionContext32[1]; 468 U32 TransactionContext32[1];
468 U32 TransactionContext64[2]; 469 U32 TransactionContext64[2];
469 U32 TransactionContext96[3]; 470 U32 TransactionContext96[3];
470 U32 TransactionContext128[4]; 471 U32 TransactionContext128[4];
471 }u; 472 }u;
472 U32 TransactionDetails[1]; 473 U32 TransactionDetails[1];
473 } SGE_TRANSACTION_UNION, MPI_POINTER PTR_SGE_TRANSACTION_UNION, 474 } SGE_TRANSACTION_UNION, MPI_POINTER PTR_SGE_TRANSACTION_UNION,
474 SGETransactionUnion_t, MPI_POINTER pSGETransactionUnion_t; 475 SGETransactionUnion_t, MPI_POINTER pSGETransactionUnion_t;
475 476
476 477
477 /****************************************************************************/ 478 /****************************************************************************/
478 /* SGE IO types union for IO SGL's */ 479 /* SGE IO types union for IO SGL's */
479 /****************************************************************************/ 480 /****************************************************************************/
480 481
481 typedef struct _SGE_IO_UNION 482 typedef struct _SGE_IO_UNION
482 { 483 {
483 union 484 union
484 { 485 {
485 SGE_SIMPLE_UNION Simple; 486 SGE_SIMPLE_UNION Simple;
486 SGE_CHAIN_UNION Chain; 487 SGE_CHAIN_UNION Chain;
487 } u; 488 } u;
488 } SGE_IO_UNION, MPI_POINTER PTR_SGE_IO_UNION, 489 } SGE_IO_UNION, MPI_POINTER PTR_SGE_IO_UNION,
489 SGEIOUnion_t, MPI_POINTER pSGEIOUnion_t; 490 SGEIOUnion_t, MPI_POINTER pSGEIOUnion_t;
490 491
491 /****************************************************************************/ 492 /****************************************************************************/
492 /* SGE union for SGL's with Simple and Transaction elements */ 493 /* SGE union for SGL's with Simple and Transaction elements */
493 /****************************************************************************/ 494 /****************************************************************************/
494 495
495 typedef struct _SGE_TRANS_SIMPLE_UNION 496 typedef struct _SGE_TRANS_SIMPLE_UNION
496 { 497 {
497 union 498 union
498 { 499 {
499 SGE_SIMPLE_UNION Simple; 500 SGE_SIMPLE_UNION Simple;
500 SGE_TRANSACTION_UNION Transaction; 501 SGE_TRANSACTION_UNION Transaction;
501 } u; 502 } u;
502 } SGE_TRANS_SIMPLE_UNION, MPI_POINTER PTR_SGE_TRANS_SIMPLE_UNION, 503 } SGE_TRANS_SIMPLE_UNION, MPI_POINTER PTR_SGE_TRANS_SIMPLE_UNION,
503 SGETransSimpleUnion_t, MPI_POINTER pSGETransSimpleUnion_t; 504 SGETransSimpleUnion_t, MPI_POINTER pSGETransSimpleUnion_t;
504 505
505 /****************************************************************************/ 506 /****************************************************************************/
506 /* All SGE types union */ 507 /* All SGE types union */
507 /****************************************************************************/ 508 /****************************************************************************/
508 509
509 typedef struct _SGE_MPI_UNION 510 typedef struct _SGE_MPI_UNION
510 { 511 {
511 union 512 union
512 { 513 {
513 SGE_SIMPLE_UNION Simple; 514 SGE_SIMPLE_UNION Simple;
514 SGE_CHAIN_UNION Chain; 515 SGE_CHAIN_UNION Chain;
515 SGE_TRANSACTION_UNION Transaction; 516 SGE_TRANSACTION_UNION Transaction;
516 } u; 517 } u;
517 } SGE_MPI_UNION, MPI_POINTER PTR_SGE_MPI_UNION, 518 } SGE_MPI_UNION, MPI_POINTER PTR_SGE_MPI_UNION,
518 MPI_SGE_UNION_t, MPI_POINTER pMPI_SGE_UNION_t, 519 MPI_SGE_UNION_t, MPI_POINTER pMPI_SGE_UNION_t,
519 SGEAllUnion_t, MPI_POINTER pSGEAllUnion_t; 520 SGEAllUnion_t, MPI_POINTER pSGEAllUnion_t;
520 521
521 522
522 /****************************************************************************/ 523 /****************************************************************************/
523 /* SGE field definition and masks */ 524 /* SGE field definition and masks */
524 /****************************************************************************/ 525 /****************************************************************************/
525 526
526 /* Flags field bit definitions */ 527 /* Flags field bit definitions */
527 528
528 #define MPI_SGE_FLAGS_LAST_ELEMENT (0x80) 529 #define MPI_SGE_FLAGS_LAST_ELEMENT (0x80)
529 #define MPI_SGE_FLAGS_END_OF_BUFFER (0x40) 530 #define MPI_SGE_FLAGS_END_OF_BUFFER (0x40)
530 #define MPI_SGE_FLAGS_ELEMENT_TYPE_MASK (0x30) 531 #define MPI_SGE_FLAGS_ELEMENT_TYPE_MASK (0x30)
531 #define MPI_SGE_FLAGS_LOCAL_ADDRESS (0x08) 532 #define MPI_SGE_FLAGS_LOCAL_ADDRESS (0x08)
532 #define MPI_SGE_FLAGS_DIRECTION (0x04) 533 #define MPI_SGE_FLAGS_DIRECTION (0x04)
533 #define MPI_SGE_FLAGS_ADDRESS_SIZE (0x02) 534 #define MPI_SGE_FLAGS_ADDRESS_SIZE (0x02)
534 #define MPI_SGE_FLAGS_END_OF_LIST (0x01) 535 #define MPI_SGE_FLAGS_END_OF_LIST (0x01)
535 536
536 #define MPI_SGE_FLAGS_SHIFT (24) 537 #define MPI_SGE_FLAGS_SHIFT (24)
537 538
538 #define MPI_SGE_LENGTH_MASK (0x00FFFFFF) 539 #define MPI_SGE_LENGTH_MASK (0x00FFFFFF)
539 #define MPI_SGE_CHAIN_LENGTH_MASK (0x0000FFFF) 540 #define MPI_SGE_CHAIN_LENGTH_MASK (0x0000FFFF)
540 541
541 /* Element Type */ 542 /* Element Type */
542 543
543 #define MPI_SGE_FLAGS_TRANSACTION_ELEMENT (0x00) 544 #define MPI_SGE_FLAGS_TRANSACTION_ELEMENT (0x00)
544 #define MPI_SGE_FLAGS_SIMPLE_ELEMENT (0x10) 545 #define MPI_SGE_FLAGS_SIMPLE_ELEMENT (0x10)
545 #define MPI_SGE_FLAGS_CHAIN_ELEMENT (0x30) 546 #define MPI_SGE_FLAGS_CHAIN_ELEMENT (0x30)
546 #define MPI_SGE_FLAGS_ELEMENT_MASK (0x30) 547 #define MPI_SGE_FLAGS_ELEMENT_MASK (0x30)
547 548
548 /* Address location */ 549 /* Address location */
549 550
550 #define MPI_SGE_FLAGS_SYSTEM_ADDRESS (0x00) 551 #define MPI_SGE_FLAGS_SYSTEM_ADDRESS (0x00)
551 552
552 /* Direction */ 553 /* Direction */
553 554
554 #define MPI_SGE_FLAGS_IOC_TO_HOST (0x00) 555 #define MPI_SGE_FLAGS_IOC_TO_HOST (0x00)
555 #define MPI_SGE_FLAGS_HOST_TO_IOC (0x04) 556 #define MPI_SGE_FLAGS_HOST_TO_IOC (0x04)
556 557
557 /* Address Size */ 558 /* Address Size */
558 559
559 #define MPI_SGE_FLAGS_32_BIT_ADDRESSING (0x00) 560 #define MPI_SGE_FLAGS_32_BIT_ADDRESSING (0x00)
560 #define MPI_SGE_FLAGS_64_BIT_ADDRESSING (0x02) 561 #define MPI_SGE_FLAGS_64_BIT_ADDRESSING (0x02)
561 562
562 /* Context Size */ 563 /* Context Size */
563 564
564 #define MPI_SGE_FLAGS_32_BIT_CONTEXT (0x00) 565 #define MPI_SGE_FLAGS_32_BIT_CONTEXT (0x00)
565 #define MPI_SGE_FLAGS_64_BIT_CONTEXT (0x02) 566 #define MPI_SGE_FLAGS_64_BIT_CONTEXT (0x02)
566 #define MPI_SGE_FLAGS_96_BIT_CONTEXT (0x04) 567 #define MPI_SGE_FLAGS_96_BIT_CONTEXT (0x04)
567 #define MPI_SGE_FLAGS_128_BIT_CONTEXT (0x06) 568 #define MPI_SGE_FLAGS_128_BIT_CONTEXT (0x06)
568 569
569 #define MPI_SGE_CHAIN_OFFSET_MASK (0x00FF0000) 570 #define MPI_SGE_CHAIN_OFFSET_MASK (0x00FF0000)
570 #define MPI_SGE_CHAIN_OFFSET_SHIFT (16) 571 #define MPI_SGE_CHAIN_OFFSET_SHIFT (16)
571 572
572 573
573 /****************************************************************************/ 574 /****************************************************************************/
574 /* SGE operation Macros */ 575 /* SGE operation Macros */
575 /****************************************************************************/ 576 /****************************************************************************/
576 577
577 /* SIMPLE FlagsLength manipulations... */ 578 /* SIMPLE FlagsLength manipulations... */
578 #define MPI_SGE_SET_FLAGS(f) ((U32)(f) << MPI_SGE_FLAGS_SHIFT) 579 #define MPI_SGE_SET_FLAGS(f) ((U32)(f) << MPI_SGE_FLAGS_SHIFT)
579 #define MPI_SGE_GET_FLAGS(fl) (((fl) & ~MPI_SGE_LENGTH_MASK) >> MPI_SGE_FLAGS_SHIFT) 580 #define MPI_SGE_GET_FLAGS(fl) (((fl) & ~MPI_SGE_LENGTH_MASK) >> MPI_SGE_FLAGS_SHIFT)
580 #define MPI_SGE_LENGTH(fl) ((fl) & MPI_SGE_LENGTH_MASK) 581 #define MPI_SGE_LENGTH(fl) ((fl) & MPI_SGE_LENGTH_MASK)
581 #define MPI_SGE_CHAIN_LENGTH(fl) ((fl) & MPI_SGE_CHAIN_LENGTH_MASK) 582 #define MPI_SGE_CHAIN_LENGTH(fl) ((fl) & MPI_SGE_CHAIN_LENGTH_MASK)
582 583
583 #define MPI_SGE_SET_FLAGS_LENGTH(f,l) (MPI_SGE_SET_FLAGS(f) | MPI_SGE_LENGTH(l)) 584 #define MPI_SGE_SET_FLAGS_LENGTH(f,l) (MPI_SGE_SET_FLAGS(f) | MPI_SGE_LENGTH(l))
584 585
585 #define MPI_pSGE_GET_FLAGS(psg) MPI_SGE_GET_FLAGS((psg)->FlagsLength) 586 #define MPI_pSGE_GET_FLAGS(psg) MPI_SGE_GET_FLAGS((psg)->FlagsLength)
586 #define MPI_pSGE_GET_LENGTH(psg) MPI_SGE_LENGTH((psg)->FlagsLength) 587 #define MPI_pSGE_GET_LENGTH(psg) MPI_SGE_LENGTH((psg)->FlagsLength)
587 #define MPI_pSGE_SET_FLAGS_LENGTH(psg,f,l) (psg)->FlagsLength = MPI_SGE_SET_FLAGS_LENGTH(f,l) 588 #define MPI_pSGE_SET_FLAGS_LENGTH(psg,f,l) (psg)->FlagsLength = MPI_SGE_SET_FLAGS_LENGTH(f,l)
588 /* CAUTION - The following are READ-MODIFY-WRITE! */ 589 /* CAUTION - The following are READ-MODIFY-WRITE! */
589 #define MPI_pSGE_SET_FLAGS(psg,f) (psg)->FlagsLength |= MPI_SGE_SET_FLAGS(f) 590 #define MPI_pSGE_SET_FLAGS(psg,f) (psg)->FlagsLength |= MPI_SGE_SET_FLAGS(f)
590 #define MPI_pSGE_SET_LENGTH(psg,l) (psg)->FlagsLength |= MPI_SGE_LENGTH(l) 591 #define MPI_pSGE_SET_LENGTH(psg,l) (psg)->FlagsLength |= MPI_SGE_LENGTH(l)
591 592
592 #define MPI_GET_CHAIN_OFFSET(x) ((x&MPI_SGE_CHAIN_OFFSET_MASK)>>MPI_SGE_CHAIN_OFFSET_SHIFT) 593 #define MPI_GET_CHAIN_OFFSET(x) ((x&MPI_SGE_CHAIN_OFFSET_MASK)>>MPI_SGE_CHAIN_OFFSET_SHIFT)
593 594
594 595
595 596
596 /***************************************************************************** 597 /*****************************************************************************
597 * 598 *
598 * S t a n d a r d M e s s a g e S t r u c t u r e s 599 * S t a n d a r d M e s s a g e S t r u c t u r e s
599 * 600 *
600 *****************************************************************************/ 601 *****************************************************************************/
601 602
602 /****************************************************************************/ 603 /****************************************************************************/
603 /* Standard message request header for all request messages */ 604 /* Standard message request header for all request messages */
604 /****************************************************************************/ 605 /****************************************************************************/
605 606
606 typedef struct _MSG_REQUEST_HEADER 607 typedef struct _MSG_REQUEST_HEADER
607 { 608 {
608 U8 Reserved[2]; /* function specific */ 609 U8 Reserved[2]; /* function specific */
609 U8 ChainOffset; 610 U8 ChainOffset;
610 U8 Function; 611 U8 Function;
611 U8 Reserved1[3]; /* function specific */ 612 U8 Reserved1[3]; /* function specific */
612 U8 MsgFlags; 613 U8 MsgFlags;
613 U32 MsgContext; 614 U32 MsgContext;
614 } MSG_REQUEST_HEADER, MPI_POINTER PTR_MSG_REQUEST_HEADER, 615 } MSG_REQUEST_HEADER, MPI_POINTER PTR_MSG_REQUEST_HEADER,
615 MPIHeader_t, MPI_POINTER pMPIHeader_t; 616 MPIHeader_t, MPI_POINTER pMPIHeader_t;
616 617
617 618
618 /****************************************************************************/ 619 /****************************************************************************/
619 /* Default Reply */ 620 /* Default Reply */
620 /****************************************************************************/ 621 /****************************************************************************/
621 622
622 typedef struct _MSG_DEFAULT_REPLY 623 typedef struct _MSG_DEFAULT_REPLY
623 { 624 {
624 U8 Reserved[2]; /* function specific */ 625 U8 Reserved[2]; /* function specific */
625 U8 MsgLength; 626 U8 MsgLength;
626 U8 Function; 627 U8 Function;
627 U8 Reserved1[3]; /* function specific */ 628 U8 Reserved1[3]; /* function specific */
628 U8 MsgFlags; 629 U8 MsgFlags;
629 U32 MsgContext; 630 U32 MsgContext;
630 U8 Reserved2[2]; /* function specific */ 631 U8 Reserved2[2]; /* function specific */
631 U16 IOCStatus; 632 U16 IOCStatus;
632 U32 IOCLogInfo; 633 U32 IOCLogInfo;
633 } MSG_DEFAULT_REPLY, MPI_POINTER PTR_MSG_DEFAULT_REPLY, 634 } MSG_DEFAULT_REPLY, MPI_POINTER PTR_MSG_DEFAULT_REPLY,
634 MPIDefaultReply_t, MPI_POINTER pMPIDefaultReply_t; 635 MPIDefaultReply_t, MPI_POINTER pMPIDefaultReply_t;
635 636
636 637
637 /* MsgFlags definition for all replies */ 638 /* MsgFlags definition for all replies */
638 639
639 #define MPI_MSGFLAGS_CONTINUATION_REPLY (0x80) 640 #define MPI_MSGFLAGS_CONTINUATION_REPLY (0x80)
640 641
641 642
642 /***************************************************************************** 643 /*****************************************************************************
643 * 644 *
644 * I O C S t a t u s V a l u e s 645 * I O C S t a t u s V a l u e s
645 * 646 *
646 *****************************************************************************/ 647 *****************************************************************************/
647 648
648 /****************************************************************************/ 649 /****************************************************************************/
649 /* Common IOCStatus values for all replies */ 650 /* Common IOCStatus values for all replies */
650 /****************************************************************************/ 651 /****************************************************************************/
651 652
652 #define MPI_IOCSTATUS_SUCCESS (0x0000) 653 #define MPI_IOCSTATUS_SUCCESS (0x0000)
653 #define MPI_IOCSTATUS_INVALID_FUNCTION (0x0001) 654 #define MPI_IOCSTATUS_INVALID_FUNCTION (0x0001)
654 #define MPI_IOCSTATUS_BUSY (0x0002) 655 #define MPI_IOCSTATUS_BUSY (0x0002)
655 #define MPI_IOCSTATUS_INVALID_SGL (0x0003) 656 #define MPI_IOCSTATUS_INVALID_SGL (0x0003)
656 #define MPI_IOCSTATUS_INTERNAL_ERROR (0x0004) 657 #define MPI_IOCSTATUS_INTERNAL_ERROR (0x0004)
657 #define MPI_IOCSTATUS_RESERVED (0x0005) 658 #define MPI_IOCSTATUS_RESERVED (0x0005)
658 #define MPI_IOCSTATUS_INSUFFICIENT_RESOURCES (0x0006) 659 #define MPI_IOCSTATUS_INSUFFICIENT_RESOURCES (0x0006)
659 #define MPI_IOCSTATUS_INVALID_FIELD (0x0007) 660 #define MPI_IOCSTATUS_INVALID_FIELD (0x0007)
660 #define MPI_IOCSTATUS_INVALID_STATE (0x0008) 661 #define MPI_IOCSTATUS_INVALID_STATE (0x0008)
661 #define MPI_IOCSTATUS_OP_STATE_NOT_SUPPORTED (0x0009) 662 #define MPI_IOCSTATUS_OP_STATE_NOT_SUPPORTED (0x0009)
662 663
663 /****************************************************************************/ 664 /****************************************************************************/
664 /* Config IOCStatus values */ 665 /* Config IOCStatus values */
665 /****************************************************************************/ 666 /****************************************************************************/
666 667
667 #define MPI_IOCSTATUS_CONFIG_INVALID_ACTION (0x0020) 668 #define MPI_IOCSTATUS_CONFIG_INVALID_ACTION (0x0020)
668 #define MPI_IOCSTATUS_CONFIG_INVALID_TYPE (0x0021) 669 #define MPI_IOCSTATUS_CONFIG_INVALID_TYPE (0x0021)
669 #define MPI_IOCSTATUS_CONFIG_INVALID_PAGE (0x0022) 670 #define MPI_IOCSTATUS_CONFIG_INVALID_PAGE (0x0022)
670 #define MPI_IOCSTATUS_CONFIG_INVALID_DATA (0x0023) 671 #define MPI_IOCSTATUS_CONFIG_INVALID_DATA (0x0023)
671 #define MPI_IOCSTATUS_CONFIG_NO_DEFAULTS (0x0024) 672 #define MPI_IOCSTATUS_CONFIG_NO_DEFAULTS (0x0024)
672 #define MPI_IOCSTATUS_CONFIG_CANT_COMMIT (0x0025) 673 #define MPI_IOCSTATUS_CONFIG_CANT_COMMIT (0x0025)
673 674
674 /****************************************************************************/ 675 /****************************************************************************/
675 /* SCSIIO Reply (SPI & FCP) initiator values */ 676 /* SCSIIO Reply (SPI & FCP) initiator values */
676 /****************************************************************************/ 677 /****************************************************************************/
677 678
678 #define MPI_IOCSTATUS_SCSI_RECOVERED_ERROR (0x0040) 679 #define MPI_IOCSTATUS_SCSI_RECOVERED_ERROR (0x0040)
679 #define MPI_IOCSTATUS_SCSI_INVALID_BUS (0x0041) 680 #define MPI_IOCSTATUS_SCSI_INVALID_BUS (0x0041)
680 #define MPI_IOCSTATUS_SCSI_INVALID_TARGETID (0x0042) 681 #define MPI_IOCSTATUS_SCSI_INVALID_TARGETID (0x0042)
681 #define MPI_IOCSTATUS_SCSI_DEVICE_NOT_THERE (0x0043) 682 #define MPI_IOCSTATUS_SCSI_DEVICE_NOT_THERE (0x0043)
682 #define MPI_IOCSTATUS_SCSI_DATA_OVERRUN (0x0044) 683 #define MPI_IOCSTATUS_SCSI_DATA_OVERRUN (0x0044)
683 #define MPI_IOCSTATUS_SCSI_DATA_UNDERRUN (0x0045) 684 #define MPI_IOCSTATUS_SCSI_DATA_UNDERRUN (0x0045)
684 #define MPI_IOCSTATUS_SCSI_IO_DATA_ERROR (0x0046) 685 #define MPI_IOCSTATUS_SCSI_IO_DATA_ERROR (0x0046)
685 #define MPI_IOCSTATUS_SCSI_PROTOCOL_ERROR (0x0047) 686 #define MPI_IOCSTATUS_SCSI_PROTOCOL_ERROR (0x0047)
686 #define MPI_IOCSTATUS_SCSI_TASK_TERMINATED (0x0048) 687 #define MPI_IOCSTATUS_SCSI_TASK_TERMINATED (0x0048)
687 #define MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH (0x0049) 688 #define MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH (0x0049)
688 #define MPI_IOCSTATUS_SCSI_TASK_MGMT_FAILED (0x004A) 689 #define MPI_IOCSTATUS_SCSI_TASK_MGMT_FAILED (0x004A)
689 #define MPI_IOCSTATUS_SCSI_IOC_TERMINATED (0x004B) 690 #define MPI_IOCSTATUS_SCSI_IOC_TERMINATED (0x004B)
690 #define MPI_IOCSTATUS_SCSI_EXT_TERMINATED (0x004C) 691 #define MPI_IOCSTATUS_SCSI_EXT_TERMINATED (0x004C)
691 692
692 /****************************************************************************/ 693 /****************************************************************************/
693 /* For use by SCSI Initiator and SCSI Target end-to-end data protection */ 694 /* For use by SCSI Initiator and SCSI Target end-to-end data protection */
694 /****************************************************************************/ 695 /****************************************************************************/
695 696
696 #define MPI_IOCSTATUS_EEDP_GUARD_ERROR (0x004D) 697 #define MPI_IOCSTATUS_EEDP_GUARD_ERROR (0x004D)
697 #define MPI_IOCSTATUS_EEDP_REF_TAG_ERROR (0x004E) 698 #define MPI_IOCSTATUS_EEDP_REF_TAG_ERROR (0x004E)
698 #define MPI_IOCSTATUS_EEDP_APP_TAG_ERROR (0x004F) 699 #define MPI_IOCSTATUS_EEDP_APP_TAG_ERROR (0x004F)
699 700
700 701
701 /****************************************************************************/ 702 /****************************************************************************/
702 /* SCSI Target values */ 703 /* SCSI Target values */
703 /****************************************************************************/ 704 /****************************************************************************/
704 705
705 #define MPI_IOCSTATUS_TARGET_PRIORITY_IO (0x0060) 706 #define MPI_IOCSTATUS_TARGET_PRIORITY_IO (0x0060)
706 #define MPI_IOCSTATUS_TARGET_INVALID_PORT (0x0061) 707 #define MPI_IOCSTATUS_TARGET_INVALID_PORT (0x0061)
707 #define MPI_IOCSTATUS_TARGET_INVALID_IOCINDEX (0x0062) /* obsolete name */ 708 #define MPI_IOCSTATUS_TARGET_INVALID_IOCINDEX (0x0062) /* obsolete name */
708 #define MPI_IOCSTATUS_TARGET_INVALID_IO_INDEX (0x0062) 709 #define MPI_IOCSTATUS_TARGET_INVALID_IO_INDEX (0x0062)
709 #define MPI_IOCSTATUS_TARGET_ABORTED (0x0063) 710 #define MPI_IOCSTATUS_TARGET_ABORTED (0x0063)
710 #define MPI_IOCSTATUS_TARGET_NO_CONN_RETRYABLE (0x0064) 711 #define MPI_IOCSTATUS_TARGET_NO_CONN_RETRYABLE (0x0064)
711 #define MPI_IOCSTATUS_TARGET_NO_CONNECTION (0x0065) 712 #define MPI_IOCSTATUS_TARGET_NO_CONNECTION (0x0065)
712 #define MPI_IOCSTATUS_TARGET_XFER_COUNT_MISMATCH (0x006A) 713 #define MPI_IOCSTATUS_TARGET_XFER_COUNT_MISMATCH (0x006A)
713 #define MPI_IOCSTATUS_TARGET_STS_DATA_NOT_SENT (0x006B) 714 #define MPI_IOCSTATUS_TARGET_STS_DATA_NOT_SENT (0x006B)
714 #define MPI_IOCSTATUS_TARGET_DATA_OFFSET_ERROR (0x006D) 715 #define MPI_IOCSTATUS_TARGET_DATA_OFFSET_ERROR (0x006D)
715 #define MPI_IOCSTATUS_TARGET_TOO_MUCH_WRITE_DATA (0x006E) 716 #define MPI_IOCSTATUS_TARGET_TOO_MUCH_WRITE_DATA (0x006E)
716 #define MPI_IOCSTATUS_TARGET_IU_TOO_SHORT (0x006F) 717 #define MPI_IOCSTATUS_TARGET_IU_TOO_SHORT (0x006F)
717 #define MPI_IOCSTATUS_TARGET_ACK_NAK_TIMEOUT (0x0070) 718 #define MPI_IOCSTATUS_TARGET_ACK_NAK_TIMEOUT (0x0070)
718 #define MPI_IOCSTATUS_TARGET_NAK_RECEIVED (0x0071) 719 #define MPI_IOCSTATUS_TARGET_NAK_RECEIVED (0x0071)
719 720
720 /****************************************************************************/ 721 /****************************************************************************/
721 /* Additional FCP target values (obsolete) */ 722 /* Additional FCP target values (obsolete) */
722 /****************************************************************************/ 723 /****************************************************************************/
723 724
724 #define MPI_IOCSTATUS_TARGET_FC_ABORTED (0x0066) /* obsolete */ 725 #define MPI_IOCSTATUS_TARGET_FC_ABORTED (0x0066) /* obsolete */
725 #define MPI_IOCSTATUS_TARGET_FC_RX_ID_INVALID (0x0067) /* obsolete */ 726 #define MPI_IOCSTATUS_TARGET_FC_RX_ID_INVALID (0x0067) /* obsolete */
726 #define MPI_IOCSTATUS_TARGET_FC_DID_INVALID (0x0068) /* obsolete */ 727 #define MPI_IOCSTATUS_TARGET_FC_DID_INVALID (0x0068) /* obsolete */
727 #define MPI_IOCSTATUS_TARGET_FC_NODE_LOGGED_OUT (0x0069) /* obsolete */ 728 #define MPI_IOCSTATUS_TARGET_FC_NODE_LOGGED_OUT (0x0069) /* obsolete */
728 729
729 /****************************************************************************/ 730 /****************************************************************************/
730 /* Fibre Channel Direct Access values */ 731 /* Fibre Channel Direct Access values */
731 /****************************************************************************/ 732 /****************************************************************************/
732 733
733 #define MPI_IOCSTATUS_FC_ABORTED (0x0066) 734 #define MPI_IOCSTATUS_FC_ABORTED (0x0066)
734 #define MPI_IOCSTATUS_FC_RX_ID_INVALID (0x0067) 735 #define MPI_IOCSTATUS_FC_RX_ID_INVALID (0x0067)
735 #define MPI_IOCSTATUS_FC_DID_INVALID (0x0068) 736 #define MPI_IOCSTATUS_FC_DID_INVALID (0x0068)
736 #define MPI_IOCSTATUS_FC_NODE_LOGGED_OUT (0x0069) 737 #define MPI_IOCSTATUS_FC_NODE_LOGGED_OUT (0x0069)
737 #define MPI_IOCSTATUS_FC_EXCHANGE_CANCELED (0x006C) 738 #define MPI_IOCSTATUS_FC_EXCHANGE_CANCELED (0x006C)
738 739
739 /****************************************************************************/ 740 /****************************************************************************/
740 /* LAN values */ 741 /* LAN values */
741 /****************************************************************************/ 742 /****************************************************************************/
742 743
743 #define MPI_IOCSTATUS_LAN_DEVICE_NOT_FOUND (0x0080) 744 #define MPI_IOCSTATUS_LAN_DEVICE_NOT_FOUND (0x0080)
744 #define MPI_IOCSTATUS_LAN_DEVICE_FAILURE (0x0081) 745 #define MPI_IOCSTATUS_LAN_DEVICE_FAILURE (0x0081)
745 #define MPI_IOCSTATUS_LAN_TRANSMIT_ERROR (0x0082) 746 #define MPI_IOCSTATUS_LAN_TRANSMIT_ERROR (0x0082)
746 #define MPI_IOCSTATUS_LAN_TRANSMIT_ABORTED (0x0083) 747 #define MPI_IOCSTATUS_LAN_TRANSMIT_ABORTED (0x0083)
747 #define MPI_IOCSTATUS_LAN_RECEIVE_ERROR (0x0084) 748 #define MPI_IOCSTATUS_LAN_RECEIVE_ERROR (0x0084)
748 #define MPI_IOCSTATUS_LAN_RECEIVE_ABORTED (0x0085) 749 #define MPI_IOCSTATUS_LAN_RECEIVE_ABORTED (0x0085)
749 #define MPI_IOCSTATUS_LAN_PARTIAL_PACKET (0x0086) 750 #define MPI_IOCSTATUS_LAN_PARTIAL_PACKET (0x0086)
750 #define MPI_IOCSTATUS_LAN_CANCELED (0x0087) 751 #define MPI_IOCSTATUS_LAN_CANCELED (0x0087)
751 752
752 /****************************************************************************/ 753 /****************************************************************************/
753 /* Serial Attached SCSI values */ 754 /* Serial Attached SCSI values */
754 /****************************************************************************/ 755 /****************************************************************************/
755 756
756 #define MPI_IOCSTATUS_SAS_SMP_REQUEST_FAILED (0x0090) 757 #define MPI_IOCSTATUS_SAS_SMP_REQUEST_FAILED (0x0090)
757 #define MPI_IOCSTATUS_SAS_SMP_DATA_OVERRUN (0x0091) 758 #define MPI_IOCSTATUS_SAS_SMP_DATA_OVERRUN (0x0091)
758 759
759 /****************************************************************************/ 760 /****************************************************************************/
760 /* Inband values */ 761 /* Inband values */
761 /****************************************************************************/ 762 /****************************************************************************/
762 763
763 #define MPI_IOCSTATUS_INBAND_ABORTED (0x0098) 764 #define MPI_IOCSTATUS_INBAND_ABORTED (0x0098)
764 #define MPI_IOCSTATUS_INBAND_NO_CONNECTION (0x0099) 765 #define MPI_IOCSTATUS_INBAND_NO_CONNECTION (0x0099)
765 766
766 /****************************************************************************/ 767 /****************************************************************************/
767 /* Diagnostic Tools values */ 768 /* Diagnostic Tools values */
768 /****************************************************************************/ 769 /****************************************************************************/
769 770
770 #define MPI_IOCSTATUS_DIAGNOSTIC_RELEASED (0x00A0) 771 #define MPI_IOCSTATUS_DIAGNOSTIC_RELEASED (0x00A0)
771 772
772 773
773 /****************************************************************************/ 774 /****************************************************************************/
774 /* IOCStatus flag to indicate that log info is available */ 775 /* IOCStatus flag to indicate that log info is available */
775 /****************************************************************************/ 776 /****************************************************************************/
776 777
777 #define MPI_IOCSTATUS_FLAG_LOG_INFO_AVAILABLE (0x8000) 778 #define MPI_IOCSTATUS_FLAG_LOG_INFO_AVAILABLE (0x8000)
778 #define MPI_IOCSTATUS_MASK (0x7FFF) 779 #define MPI_IOCSTATUS_MASK (0x7FFF)
779 780
780 /****************************************************************************/ 781 /****************************************************************************/
781 /* LogInfo Types */ 782 /* LogInfo Types */
782 /****************************************************************************/ 783 /****************************************************************************/
783 784
784 #define MPI_IOCLOGINFO_TYPE_MASK (0xF0000000) 785 #define MPI_IOCLOGINFO_TYPE_MASK (0xF0000000)
785 #define MPI_IOCLOGINFO_TYPE_SHIFT (28) 786 #define MPI_IOCLOGINFO_TYPE_SHIFT (28)
786 #define MPI_IOCLOGINFO_TYPE_NONE (0x0) 787 #define MPI_IOCLOGINFO_TYPE_NONE (0x0)
787 #define MPI_IOCLOGINFO_TYPE_SCSI (0x1) 788 #define MPI_IOCLOGINFO_TYPE_SCSI (0x1)
788 #define MPI_IOCLOGINFO_TYPE_FC (0x2) 789 #define MPI_IOCLOGINFO_TYPE_FC (0x2)
789 #define MPI_IOCLOGINFO_TYPE_SAS (0x3) 790 #define MPI_IOCLOGINFO_TYPE_SAS (0x3)
790 #define MPI_IOCLOGINFO_TYPE_ISCSI (0x4) 791 #define MPI_IOCLOGINFO_TYPE_ISCSI (0x4)
791 #define MPI_IOCLOGINFO_LOG_DATA_MASK (0x0FFFFFFF) 792 #define MPI_IOCLOGINFO_LOG_DATA_MASK (0x0FFFFFFF)
792 793
793 794
794 #endif 795 #endif
795 796
drivers/message/fusion/lsi/mpi_cnfg.h
1 /* 1 /*
2 * Copyright (c) 2000-2005 LSI Logic Corporation. 2 * Copyright (c) 2000-2006 LSI Logic Corporation.
3 * 3 *
4 * 4 *
5 * Name: mpi_cnfg.h 5 * Name: mpi_cnfg.h
6 * Title: MPI Config message, structures, and Pages 6 * Title: MPI Config message, structures, and Pages
7 * Creation Date: July 27, 2000 7 * Creation Date: July 27, 2000
8 * 8 *
9 * mpi_cnfg.h Version: 01.05.12 9 * mpi_cnfg.h Version: 01.05.13
10 * 10 *
11 * Version History 11 * Version History
12 * --------------- 12 * ---------------
13 * 13 *
14 * Date Version Description 14 * Date Version Description
15 * -------- -------- ------------------------------------------------------ 15 * -------- -------- ------------------------------------------------------
16 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000. 16 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000.
17 * 06-06-00 01.00.01 Update version number for 1.0 release. 17 * 06-06-00 01.00.01 Update version number for 1.0 release.
18 * 06-08-00 01.00.02 Added _PAGEVERSION definitions for all pages. 18 * 06-08-00 01.00.02 Added _PAGEVERSION definitions for all pages.
19 * Added FcPhLowestVersion, FcPhHighestVersion, Reserved2 19 * Added FcPhLowestVersion, FcPhHighestVersion, Reserved2
20 * fields to FC_DEVICE_0 page, updated the page version. 20 * fields to FC_DEVICE_0 page, updated the page version.
21 * Changed _FREE_RUNNING_CLOCK to _PACING_TRANSFERS in 21 * Changed _FREE_RUNNING_CLOCK to _PACING_TRANSFERS in
22 * SCSI_PORT_0, SCSI_DEVICE_0 and SCSI_DEVICE_1 pages 22 * SCSI_PORT_0, SCSI_DEVICE_0 and SCSI_DEVICE_1 pages
23 * and updated the page versions. 23 * and updated the page versions.
24 * Added _RESPONSE_ID_MASK definition to SCSI_PORT_1 24 * Added _RESPONSE_ID_MASK definition to SCSI_PORT_1
25 * page and updated the page version. 25 * page and updated the page version.
26 * Added Information field and _INFO_PARAMS_NEGOTIATED 26 * Added Information field and _INFO_PARAMS_NEGOTIATED
27 * definitionto SCSI_DEVICE_0 page. 27 * definitionto SCSI_DEVICE_0 page.
28 * 06-22-00 01.00.03 Removed batch controls from LAN_0 page and updated the 28 * 06-22-00 01.00.03 Removed batch controls from LAN_0 page and updated the
29 * page version. 29 * page version.
30 * Added BucketsRemaining to LAN_1 page, redefined the 30 * Added BucketsRemaining to LAN_1 page, redefined the
31 * state values, and updated the page version. 31 * state values, and updated the page version.
32 * Revised bus width definitions in SCSI_PORT_0, 32 * Revised bus width definitions in SCSI_PORT_0,
33 * SCSI_DEVICE_0 and SCSI_DEVICE_1 pages. 33 * SCSI_DEVICE_0 and SCSI_DEVICE_1 pages.
34 * 06-30-00 01.00.04 Added MaxReplySize to LAN_1 page and updated the page 34 * 06-30-00 01.00.04 Added MaxReplySize to LAN_1 page and updated the page
35 * version. 35 * version.
36 * Moved FC_DEVICE_0 PageAddress description to spec. 36 * Moved FC_DEVICE_0 PageAddress description to spec.
37 * 07-27-00 01.00.05 Corrected the SubsystemVendorID and SubsystemID field 37 * 07-27-00 01.00.05 Corrected the SubsystemVendorID and SubsystemID field
38 * widths in IOC_0 page and updated the page version. 38 * widths in IOC_0 page and updated the page version.
39 * 11-02-00 01.01.01 Original release for post 1.0 work 39 * 11-02-00 01.01.01 Original release for post 1.0 work
40 * Added Manufacturing pages, IO Unit Page 2, SCSI SPI 40 * Added Manufacturing pages, IO Unit Page 2, SCSI SPI
41 * Port Page 2, FC Port Page 4, FC Port Page 5 41 * Port Page 2, FC Port Page 4, FC Port Page 5
42 * 11-15-00 01.01.02 Interim changes to match proposals 42 * 11-15-00 01.01.02 Interim changes to match proposals
43 * 12-04-00 01.01.03 Config page changes to match MPI rev 1.00.01. 43 * 12-04-00 01.01.03 Config page changes to match MPI rev 1.00.01.
44 * 12-05-00 01.01.04 Modified config page actions. 44 * 12-05-00 01.01.04 Modified config page actions.
45 * 01-09-01 01.01.05 Added defines for page address formats. 45 * 01-09-01 01.01.05 Added defines for page address formats.
46 * Data size for Manufacturing pages 2 and 3 no longer 46 * Data size for Manufacturing pages 2 and 3 no longer
47 * defined here. 47 * defined here.
48 * Io Unit Page 2 size is fixed at 4 adapters and some 48 * Io Unit Page 2 size is fixed at 4 adapters and some
49 * flags were changed. 49 * flags were changed.
50 * SCSI Port Page 2 Device Settings modified. 50 * SCSI Port Page 2 Device Settings modified.
51 * New fields added to FC Port Page 0 and some flags 51 * New fields added to FC Port Page 0 and some flags
52 * cleaned up. 52 * cleaned up.
53 * Removed impedance flash from FC Port Page 1. 53 * Removed impedance flash from FC Port Page 1.
54 * Added FC Port pages 6 and 7. 54 * Added FC Port pages 6 and 7.
55 * 01-25-01 01.01.06 Added MaxInitiators field to FcPortPage0. 55 * 01-25-01 01.01.06 Added MaxInitiators field to FcPortPage0.
56 * 01-29-01 01.01.07 Changed some defines to make them 32 character unique. 56 * 01-29-01 01.01.07 Changed some defines to make them 32 character unique.
57 * Added some LinkType defines for FcPortPage0. 57 * Added some LinkType defines for FcPortPage0.
58 * 02-20-01 01.01.08 Started using MPI_POINTER. 58 * 02-20-01 01.01.08 Started using MPI_POINTER.
59 * 02-27-01 01.01.09 Replaced MPI_CONFIG_PAGETYPE_SCSI_LUN with 59 * 02-27-01 01.01.09 Replaced MPI_CONFIG_PAGETYPE_SCSI_LUN with
60 * MPI_CONFIG_PAGETYPE_RAID_VOLUME. 60 * MPI_CONFIG_PAGETYPE_RAID_VOLUME.
61 * Added definitions and structures for IOC Page 2 and 61 * Added definitions and structures for IOC Page 2 and
62 * RAID Volume Page 2. 62 * RAID Volume Page 2.
63 * 03-27-01 01.01.10 Added CONFIG_PAGE_FC_PORT_8 and CONFIG_PAGE_FC_PORT_9. 63 * 03-27-01 01.01.10 Added CONFIG_PAGE_FC_PORT_8 and CONFIG_PAGE_FC_PORT_9.
64 * CONFIG_PAGE_FC_PORT_3 now supports persistent by DID. 64 * CONFIG_PAGE_FC_PORT_3 now supports persistent by DID.
65 * Added VendorId and ProductRevLevel fields to 65 * Added VendorId and ProductRevLevel fields to
66 * RAIDVOL2_IM_PHYS_ID struct. 66 * RAIDVOL2_IM_PHYS_ID struct.
67 * Modified values for MPI_FCPORTPAGE0_FLAGS_ATTACH_ 67 * Modified values for MPI_FCPORTPAGE0_FLAGS_ATTACH_
68 * defines to make them compatible to MPI version 1.0. 68 * defines to make them compatible to MPI version 1.0.
69 * Added structure offset comments. 69 * Added structure offset comments.
70 * 04-09-01 01.01.11 Added some new defines for the PageAddress field and 70 * 04-09-01 01.01.11 Added some new defines for the PageAddress field and
71 * removed some obsolete ones. 71 * removed some obsolete ones.
72 * Added IO Unit Page 3. 72 * Added IO Unit Page 3.
73 * Modified defines for Scsi Port Page 2. 73 * Modified defines for Scsi Port Page 2.
74 * Modified RAID Volume Pages. 74 * Modified RAID Volume Pages.
75 * 08-08-01 01.02.01 Original release for v1.2 work. 75 * 08-08-01 01.02.01 Original release for v1.2 work.
76 * Added SepID and SepBus to RVP2 IMPhysicalDisk struct. 76 * Added SepID and SepBus to RVP2 IMPhysicalDisk struct.
77 * Added defines for the SEP bits in RVP2 VolumeSettings. 77 * Added defines for the SEP bits in RVP2 VolumeSettings.
78 * Modified the DeviceSettings field in RVP2 to use the 78 * Modified the DeviceSettings field in RVP2 to use the
79 * proper structure. 79 * proper structure.
80 * Added defines for SES, SAF-TE, and cross channel for 80 * Added defines for SES, SAF-TE, and cross channel for
81 * IOCPage2 CapabilitiesFlags. 81 * IOCPage2 CapabilitiesFlags.
82 * Removed define for MPI_IOUNITPAGE2_FLAGS_RAID_DISABLE. 82 * Removed define for MPI_IOUNITPAGE2_FLAGS_RAID_DISABLE.
83 * Removed define for 83 * Removed define for
84 * MPI_SCSIPORTPAGE2_PORT_FLAGS_PARITY_ENABLE. 84 * MPI_SCSIPORTPAGE2_PORT_FLAGS_PARITY_ENABLE.
85 * Added define for MPI_CONFIG_PAGEATTR_RO_PERSISTENT. 85 * Added define for MPI_CONFIG_PAGEATTR_RO_PERSISTENT.
86 * 08-29-01 01.02.02 Fixed value for MPI_MANUFACTPAGE_DEVID_53C1035. 86 * 08-29-01 01.02.02 Fixed value for MPI_MANUFACTPAGE_DEVID_53C1035.
87 * Added defines for MPI_FCPORTPAGE1_FLAGS_HARD_ALPA_ONLY 87 * Added defines for MPI_FCPORTPAGE1_FLAGS_HARD_ALPA_ONLY
88 * and MPI_FCPORTPAGE1_FLAGS_IMMEDIATE_ERROR_REPLY. 88 * and MPI_FCPORTPAGE1_FLAGS_IMMEDIATE_ERROR_REPLY.
89 * Removed MPI_SCSIPORTPAGE0_CAP_PACING_TRANSFERS, 89 * Removed MPI_SCSIPORTPAGE0_CAP_PACING_TRANSFERS,
90 * MPI_SCSIDEVPAGE0_NP_PACING_TRANSFERS, and 90 * MPI_SCSIDEVPAGE0_NP_PACING_TRANSFERS, and
91 * MPI_SCSIDEVPAGE1_RP_PACING_TRANSFERS, and 91 * MPI_SCSIDEVPAGE1_RP_PACING_TRANSFERS, and
92 * MPI_SCSIDEVPAGE1_CONF_PPR_ALLOWED. 92 * MPI_SCSIDEVPAGE1_CONF_PPR_ALLOWED.
93 * Added defines for MPI_SCSIDEVPAGE1_CONF_WDTR_DISALLOWED 93 * Added defines for MPI_SCSIDEVPAGE1_CONF_WDTR_DISALLOWED
94 * and MPI_SCSIDEVPAGE1_CONF_SDTR_DISALLOWED. 94 * and MPI_SCSIDEVPAGE1_CONF_SDTR_DISALLOWED.
95 * Added OnBusTimerValue to CONFIG_PAGE_SCSI_PORT_1. 95 * Added OnBusTimerValue to CONFIG_PAGE_SCSI_PORT_1.
96 * Added rejected bits to SCSI Device Page 0 Information. 96 * Added rejected bits to SCSI Device Page 0 Information.
97 * Increased size of ALPA array in FC Port Page 2 by one 97 * Increased size of ALPA array in FC Port Page 2 by one
98 * and removed a one byte reserved field. 98 * and removed a one byte reserved field.
99 * 09-28-01 01.02.03 Swapped NegWireSpeedLow and NegWireSpeedLow in 99 * 09-28-01 01.02.03 Swapped NegWireSpeedLow and NegWireSpeedLow in
100 * CONFIG_PAGE_LAN_1 to match preferred 64-bit ordering. 100 * CONFIG_PAGE_LAN_1 to match preferred 64-bit ordering.
101 * Added structures for Manufacturing Page 4, IO Unit 101 * Added structures for Manufacturing Page 4, IO Unit
102 * Page 3, IOC Page 3, IOC Page 4, RAID Volume Page 0, and 102 * Page 3, IOC Page 3, IOC Page 4, RAID Volume Page 0, and
103 * RAID PhysDisk Page 0. 103 * RAID PhysDisk Page 0.
104 * 10-04-01 01.02.04 Added define for MPI_CONFIG_PAGETYPE_RAID_PHYSDISK. 104 * 10-04-01 01.02.04 Added define for MPI_CONFIG_PAGETYPE_RAID_PHYSDISK.
105 * Modified some of the new defines to make them 32 105 * Modified some of the new defines to make them 32
106 * character unique. 106 * character unique.
107 * Modified how variable length pages (arrays) are defined. 107 * Modified how variable length pages (arrays) are defined.
108 * Added generic defines for hot spare pools and RAID 108 * Added generic defines for hot spare pools and RAID
109 * volume types. 109 * volume types.
110 * 11-01-01 01.02.05 Added define for MPI_IOUNITPAGE1_DISABLE_IR. 110 * 11-01-01 01.02.05 Added define for MPI_IOUNITPAGE1_DISABLE_IR.
111 * 03-14-02 01.02.06 Added PCISlotNum field to CONFIG_PAGE_IOC_1 along with 111 * 03-14-02 01.02.06 Added PCISlotNum field to CONFIG_PAGE_IOC_1 along with
112 * related define, and bumped the page version define. 112 * related define, and bumped the page version define.
113 * 05-31-02 01.02.07 Added a Flags field to CONFIG_PAGE_IOC_2_RAID_VOL in a 113 * 05-31-02 01.02.07 Added a Flags field to CONFIG_PAGE_IOC_2_RAID_VOL in a
114 * reserved byte and added a define. 114 * reserved byte and added a define.
115 * Added define for 115 * Added define for
116 * MPI_RAIDVOL0_STATUS_FLAG_VOLUME_INACTIVE. 116 * MPI_RAIDVOL0_STATUS_FLAG_VOLUME_INACTIVE.
117 * Added new config page: CONFIG_PAGE_IOC_5. 117 * Added new config page: CONFIG_PAGE_IOC_5.
118 * Added MaxAliases, MaxHardAliases, and NumCurrentAliases 118 * Added MaxAliases, MaxHardAliases, and NumCurrentAliases
119 * fields to CONFIG_PAGE_FC_PORT_0. 119 * fields to CONFIG_PAGE_FC_PORT_0.
120 * Added AltConnector and NumRequestedAliases fields to 120 * Added AltConnector and NumRequestedAliases fields to
121 * CONFIG_PAGE_FC_PORT_1. 121 * CONFIG_PAGE_FC_PORT_1.
122 * Added new config page: CONFIG_PAGE_FC_PORT_10. 122 * Added new config page: CONFIG_PAGE_FC_PORT_10.
123 * 07-12-02 01.02.08 Added more MPI_MANUFACTPAGE_DEVID_ defines. 123 * 07-12-02 01.02.08 Added more MPI_MANUFACTPAGE_DEVID_ defines.
124 * Added additional MPI_SCSIDEVPAGE0_NP_ defines. 124 * Added additional MPI_SCSIDEVPAGE0_NP_ defines.
125 * Added more MPI_SCSIDEVPAGE1_RP_ defines. 125 * Added more MPI_SCSIDEVPAGE1_RP_ defines.
126 * Added define for 126 * Added define for
127 * MPI_SCSIDEVPAGE1_CONF_EXTENDED_PARAMS_ENABLE. 127 * MPI_SCSIDEVPAGE1_CONF_EXTENDED_PARAMS_ENABLE.
128 * Added new config page: CONFIG_PAGE_SCSI_DEVICE_3. 128 * Added new config page: CONFIG_PAGE_SCSI_DEVICE_3.
129 * Modified MPI_FCPORTPAGE5_FLAGS_ defines. 129 * Modified MPI_FCPORTPAGE5_FLAGS_ defines.
130 * 09-16-02 01.02.09 Added MPI_SCSIDEVPAGE1_CONF_FORCE_PPR_MSG define. 130 * 09-16-02 01.02.09 Added MPI_SCSIDEVPAGE1_CONF_FORCE_PPR_MSG define.
131 * 11-15-02 01.02.10 Added ConnectedID defines for CONFIG_PAGE_SCSI_PORT_0. 131 * 11-15-02 01.02.10 Added ConnectedID defines for CONFIG_PAGE_SCSI_PORT_0.
132 * Added more Flags defines for CONFIG_PAGE_FC_PORT_1. 132 * Added more Flags defines for CONFIG_PAGE_FC_PORT_1.
133 * Added more Flags defines for CONFIG_PAGE_FC_DEVICE_0. 133 * Added more Flags defines for CONFIG_PAGE_FC_DEVICE_0.
134 * 04-01-03 01.02.11 Added RR_TOV field and additional Flags defines for 134 * 04-01-03 01.02.11 Added RR_TOV field and additional Flags defines for
135 * CONFIG_PAGE_FC_PORT_1. 135 * CONFIG_PAGE_FC_PORT_1.
136 * Added define MPI_FCPORTPAGE5_FLAGS_DISABLE to disable 136 * Added define MPI_FCPORTPAGE5_FLAGS_DISABLE to disable
137 * an alias. 137 * an alias.
138 * Added more device id defines. 138 * Added more device id defines.
139 * 06-26-03 01.02.12 Added MPI_IOUNITPAGE1_IR_USE_STATIC_VOLUME_ID define. 139 * 06-26-03 01.02.12 Added MPI_IOUNITPAGE1_IR_USE_STATIC_VOLUME_ID define.
140 * Added TargetConfig and IDConfig fields to 140 * Added TargetConfig and IDConfig fields to
141 * CONFIG_PAGE_SCSI_PORT_1. 141 * CONFIG_PAGE_SCSI_PORT_1.
142 * Added more PortFlags defines for CONFIG_PAGE_SCSI_PORT_2 142 * Added more PortFlags defines for CONFIG_PAGE_SCSI_PORT_2
143 * to control DV. 143 * to control DV.
144 * Added more Flags defines for CONFIG_PAGE_FC_PORT_1. 144 * Added more Flags defines for CONFIG_PAGE_FC_PORT_1.
145 * In CONFIG_PAGE_FC_DEVICE_0, replaced Reserved1 field 145 * In CONFIG_PAGE_FC_DEVICE_0, replaced Reserved1 field
146 * with ADISCHardALPA. 146 * with ADISCHardALPA.
147 * Added MPI_FC_DEVICE_PAGE0_PROT_FCP_RETRY define. 147 * Added MPI_FC_DEVICE_PAGE0_PROT_FCP_RETRY define.
148 * 01-16-04 01.02.13 Added InitiatorDeviceTimeout and InitiatorIoPendTimeout 148 * 01-16-04 01.02.13 Added InitiatorDeviceTimeout and InitiatorIoPendTimeout
149 * fields and related defines to CONFIG_PAGE_FC_PORT_1. 149 * fields and related defines to CONFIG_PAGE_FC_PORT_1.
150 * Added define for 150 * Added define for
151 * MPI_FCPORTPAGE1_FLAGS_SOFT_ALPA_FALLBACK. 151 * MPI_FCPORTPAGE1_FLAGS_SOFT_ALPA_FALLBACK.
152 * Added new fields to the substructures of 152 * Added new fields to the substructures of
153 * CONFIG_PAGE_FC_PORT_10. 153 * CONFIG_PAGE_FC_PORT_10.
154 * 04-29-04 01.02.14 Added define for IDP bit for CONFIG_PAGE_SCSI_PORT_0, 154 * 04-29-04 01.02.14 Added define for IDP bit for CONFIG_PAGE_SCSI_PORT_0,
155 * CONFIG_PAGE_SCSI_DEVICE_0, and 155 * CONFIG_PAGE_SCSI_DEVICE_0, and
156 * CONFIG_PAGE_SCSI_DEVICE_1. Also bumped Page Version for 156 * CONFIG_PAGE_SCSI_DEVICE_1. Also bumped Page Version for
157 * these pages. 157 * these pages.
158 * 05-11-04 01.03.01 Added structure for CONFIG_PAGE_INBAND_0. 158 * 05-11-04 01.03.01 Added structure for CONFIG_PAGE_INBAND_0.
159 * 08-19-04 01.05.01 Modified MSG_CONFIG request to support extended config 159 * 08-19-04 01.05.01 Modified MSG_CONFIG request to support extended config
160 * pages. 160 * pages.
161 * Added a new structure for extended config page header. 161 * Added a new structure for extended config page header.
162 * Added new extended config pages types and structures for 162 * Added new extended config pages types and structures for
163 * SAS IO Unit, SAS Expander, SAS Device, and SAS PHY. 163 * SAS IO Unit, SAS Expander, SAS Device, and SAS PHY.
164 * Replaced a reserved byte in CONFIG_PAGE_MANUFACTURING_4 164 * Replaced a reserved byte in CONFIG_PAGE_MANUFACTURING_4
165 * to add a Flags field. 165 * to add a Flags field.
166 * Two new Manufacturing config pages (5 and 6). 166 * Two new Manufacturing config pages (5 and 6).
167 * Two new bits defined for IO Unit Page 1 Flags field. 167 * Two new bits defined for IO Unit Page 1 Flags field.
168 * Modified CONFIG_PAGE_IO_UNIT_2 to add three new fields 168 * Modified CONFIG_PAGE_IO_UNIT_2 to add three new fields
169 * to specify the BIOS boot device. 169 * to specify the BIOS boot device.
170 * Four new Flags bits defined for IO Unit Page 2. 170 * Four new Flags bits defined for IO Unit Page 2.
171 * Added IO Unit Page 4. 171 * Added IO Unit Page 4.
172 * Added EEDP Flags settings to IOC Page 1. 172 * Added EEDP Flags settings to IOC Page 1.
173 * Added new BIOS Page 1 config page. 173 * Added new BIOS Page 1 config page.
174 * 10-05-04 01.05.02 Added define for 174 * 10-05-04 01.05.02 Added define for
175 * MPI_IOCPAGE1_INITIATOR_CONTEXT_REPLY_DISABLE. 175 * MPI_IOCPAGE1_INITIATOR_CONTEXT_REPLY_DISABLE.
176 * Added new Flags field to CONFIG_PAGE_MANUFACTURING_5 and 176 * Added new Flags field to CONFIG_PAGE_MANUFACTURING_5 and
177 * associated defines. 177 * associated defines.
178 * Added more defines for SAS IO Unit Page 0 178 * Added more defines for SAS IO Unit Page 0
179 * DiscoveryStatus field. 179 * DiscoveryStatus field.
180 * Added define for MPI_SAS_IOUNIT0_DS_SUBTRACTIVE_LINK 180 * Added define for MPI_SAS_IOUNIT0_DS_SUBTRACTIVE_LINK
181 * and MPI_SAS_IOUNIT0_DS_TABLE_LINK. 181 * and MPI_SAS_IOUNIT0_DS_TABLE_LINK.
182 * Added defines for Physical Mapping Modes to SAS IO Unit 182 * Added defines for Physical Mapping Modes to SAS IO Unit
183 * Page 2. 183 * Page 2.
184 * Added define for 184 * Added define for
185 * MPI_SAS_DEVICE0_FLAGS_PORT_SELECTOR_ATTACH. 185 * MPI_SAS_DEVICE0_FLAGS_PORT_SELECTOR_ATTACH.
186 * 10-27-04 01.05.03 Added defines for new SAS PHY page addressing mode. 186 * 10-27-04 01.05.03 Added defines for new SAS PHY page addressing mode.
187 * Added defines for MaxTargetSpinUp to BIOS Page 1. 187 * Added defines for MaxTargetSpinUp to BIOS Page 1.
188 * Added 5 new ControlFlags defines for SAS IO Unit 188 * Added 5 new ControlFlags defines for SAS IO Unit
189 * Page 1. 189 * Page 1.
190 * Added MaxNumPhysicalMappedIDs field to SAS IO Unit 190 * Added MaxNumPhysicalMappedIDs field to SAS IO Unit
191 * Page 2. 191 * Page 2.
192 * Added AccessStatus field to SAS Device Page 0 and added 192 * Added AccessStatus field to SAS Device Page 0 and added
193 * new Flags bits for supported SATA features. 193 * new Flags bits for supported SATA features.
194 * 12-07-04 01.05.04 Added config page structures for BIOS Page 2, RAID 194 * 12-07-04 01.05.04 Added config page structures for BIOS Page 2, RAID
195 * Volume Page 1, and RAID Physical Disk Page 1. 195 * Volume Page 1, and RAID Physical Disk Page 1.
196 * Replaced IO Unit Page 1 BootTargetID,BootBus, and 196 * Replaced IO Unit Page 1 BootTargetID,BootBus, and
197 * BootAdapterNum with reserved field. 197 * BootAdapterNum with reserved field.
198 * Added DataScrubRate and ResyncRate to RAID Volume 198 * Added DataScrubRate and ResyncRate to RAID Volume
199 * Page 0. 199 * Page 0.
200 * Added MPI_SAS_IOUNIT2_FLAGS_RESERVE_ID_0_FOR_BOOT 200 * Added MPI_SAS_IOUNIT2_FLAGS_RESERVE_ID_0_FOR_BOOT
201 * define. 201 * define.
202 * 12-09-04 01.05.05 Added Target Mode Large CDB Enable to FC Port Page 1 202 * 12-09-04 01.05.05 Added Target Mode Large CDB Enable to FC Port Page 1
203 * Flags field. 203 * Flags field.
204 * Added Auto Port Config flag define for SAS IOUNIT 204 * Added Auto Port Config flag define for SAS IOUNIT
205 * Page 1 ControlFlags. 205 * Page 1 ControlFlags.
206 * Added Disabled bad Phy define to Expander Page 1 206 * Added Disabled bad Phy define to Expander Page 1
207 * Discovery Info field. 207 * Discovery Info field.
208 * Added SAS/SATA device support to SAS IOUnit Page 1 208 * Added SAS/SATA device support to SAS IOUnit Page 1
209 * ControlFlags. 209 * ControlFlags.
210 * Added Unsupported device to SAS Dev Page 0 Flags field 210 * Added Unsupported device to SAS Dev Page 0 Flags field
211 * Added disable use SATA Hash Address for SAS IOUNIT 211 * Added disable use SATA Hash Address for SAS IOUNIT
212 * page 1 in ControlFields. 212 * page 1 in ControlFields.
213 * 01-15-05 01.05.06 Added defaults for data scrub rate and resync rate to 213 * 01-15-05 01.05.06 Added defaults for data scrub rate and resync rate to
214 * Manufacturing Page 4. 214 * Manufacturing Page 4.
215 * Added new defines for BIOS Page 1 IOCSettings field. 215 * Added new defines for BIOS Page 1 IOCSettings field.
216 * Added ExtDiskIdentifier field to RAID Physical Disk 216 * Added ExtDiskIdentifier field to RAID Physical Disk
217 * Page 0. 217 * Page 0.
218 * Added new defines for SAS IO Unit Page 1 ControlFlags 218 * Added new defines for SAS IO Unit Page 1 ControlFlags
219 * and to SAS Device Page 0 Flags to control SATA devices. 219 * and to SAS Device Page 0 Flags to control SATA devices.
220 * Added defines and structures for the new Log Page 0, a 220 * Added defines and structures for the new Log Page 0, a
221 * new type of configuration page. 221 * new type of configuration page.
222 * 02-09-05 01.05.07 Added InactiveStatus field to RAID Volume Page 0. 222 * 02-09-05 01.05.07 Added InactiveStatus field to RAID Volume Page 0.
223 * Added WWID field to RAID Volume Page 1. 223 * Added WWID field to RAID Volume Page 1.
224 * Added PhysicalPort field to SAS Expander pages 0 and 1. 224 * Added PhysicalPort field to SAS Expander pages 0 and 1.
225 * 03-11-05 01.05.08 Removed the EEDP flags from IOC Page 1. 225 * 03-11-05 01.05.08 Removed the EEDP flags from IOC Page 1.
226 * Added Enclosure/Slot boot device format to BIOS Page 2. 226 * Added Enclosure/Slot boot device format to BIOS Page 2.
227 * New status value for RAID Volume Page 0 VolumeStatus 227 * New status value for RAID Volume Page 0 VolumeStatus
228 * (VolumeState subfield). 228 * (VolumeState subfield).
229 * New value for RAID Physical Page 0 InactiveStatus. 229 * New value for RAID Physical Page 0 InactiveStatus.
230 * Added Inactive Volume Member flag RAID Physical Disk 230 * Added Inactive Volume Member flag RAID Physical Disk
231 * Page 0 PhysDiskStatus field. 231 * Page 0 PhysDiskStatus field.
232 * New physical mapping mode in SAS IO Unit Page 2. 232 * New physical mapping mode in SAS IO Unit Page 2.
233 * Added CONFIG_PAGE_SAS_ENCLOSURE_0. 233 * Added CONFIG_PAGE_SAS_ENCLOSURE_0.
234 * Added Slot and Enclosure fields to SAS Device Page 0. 234 * Added Slot and Enclosure fields to SAS Device Page 0.
235 * 06-24-05 01.05.09 Added EEDP defines to IOC Page 1. 235 * 06-24-05 01.05.09 Added EEDP defines to IOC Page 1.
236 * Added more RAID type defines to IOC Page 2. 236 * Added more RAID type defines to IOC Page 2.
237 * Added Port Enable Delay settings to BIOS Page 1. 237 * Added Port Enable Delay settings to BIOS Page 1.
238 * Added Bad Block Table Full define to RAID Volume Page 0. 238 * Added Bad Block Table Full define to RAID Volume Page 0.
239 * Added Previous State defines to RAID Physical Disk 239 * Added Previous State defines to RAID Physical Disk
240 * Page 0. 240 * Page 0.
241 * Added Max Sata Targets define for DiscoveryStatus field 241 * Added Max Sata Targets define for DiscoveryStatus field
242 * of SAS IO Unit Page 0. 242 * of SAS IO Unit Page 0.
243 * Added Device Self Test to Control Flags of SAS IO Unit 243 * Added Device Self Test to Control Flags of SAS IO Unit
244 * Page 1. 244 * Page 1.
245 * Added Direct Attach Starting Slot Number define for SAS 245 * Added Direct Attach Starting Slot Number define for SAS
246 * IO Unit Page 2. 246 * IO Unit Page 2.
247 * Added new fields in SAS Device Page 2 for enclosure 247 * Added new fields in SAS Device Page 2 for enclosure
248 * mapping. 248 * mapping.
249 * Added OwnerDevHandle and Flags field to SAS PHY Page 0. 249 * Added OwnerDevHandle and Flags field to SAS PHY Page 0.
250 * Added IOC GPIO Flags define to SAS Enclosure Page 0. 250 * Added IOC GPIO Flags define to SAS Enclosure Page 0.
251 * Fixed the value for MPI_SAS_IOUNIT1_CONTROL_DEV_SATA_SUPPORT. 251 * Fixed the value for MPI_SAS_IOUNIT1_CONTROL_DEV_SATA_SUPPORT.
252 * 08-03-05 01.05.10 Removed ISDataScrubRate and ISResyncRate from 252 * 08-03-05 01.05.10 Removed ISDataScrubRate and ISResyncRate from
253 * Manufacturing Page 4. 253 * Manufacturing Page 4.
254 * Added MPI_IOUNITPAGE1_SATA_WRITE_CACHE_DISABLE bit. 254 * Added MPI_IOUNITPAGE1_SATA_WRITE_CACHE_DISABLE bit.
255 * Added NumDevsPerEnclosure field to SAS IO Unit page 2. 255 * Added NumDevsPerEnclosure field to SAS IO Unit page 2.
256 * Added MPI_SAS_IOUNIT2_FLAGS_HOST_ASSIGNED_PHYS_MAP 256 * Added MPI_SAS_IOUNIT2_FLAGS_HOST_ASSIGNED_PHYS_MAP
257 * define. 257 * define.
258 * Added EnclosureHandle field to SAS Expander page 0. 258 * Added EnclosureHandle field to SAS Expander page 0.
259 * Removed redundant NumTableEntriesProg field from SAS 259 * Removed redundant NumTableEntriesProg field from SAS
260 * Expander Page 1. 260 * Expander Page 1.
261 * 08-30-05 01.05.11 Added DeviceID for FC949E and changed the DeviceID for 261 * 08-30-05 01.05.11 Added DeviceID for FC949E and changed the DeviceID for
262 * SAS1078. 262 * SAS1078.
263 * Added more defines for Manufacturing Page 4 Flags field. 263 * Added more defines for Manufacturing Page 4 Flags field.
264 * Added more defines for IOCSettings and added 264 * Added more defines for IOCSettings and added
265 * ExpanderSpinup field to Bios Page 1. 265 * ExpanderSpinup field to Bios Page 1.
266 * Added postpone SATA Init bit to SAS IO Unit Page 1 266 * Added postpone SATA Init bit to SAS IO Unit Page 1
267 * ControlFlags. 267 * ControlFlags.
268 * Changed LogEntry format for Log Page 0. 268 * Changed LogEntry format for Log Page 0.
269 * 03-27-06 01.05.12 Added two new Flags defines for Manufacturing Page 4. 269 * 03-27-06 01.05.12 Added two new Flags defines for Manufacturing Page 4.
270 * Added Manufacturing Page 7. 270 * Added Manufacturing Page 7.
271 * Added MPI_IOCPAGE2_CAP_FLAGS_RAID_64_BIT_ADDRESSING. 271 * Added MPI_IOCPAGE2_CAP_FLAGS_RAID_64_BIT_ADDRESSING.
272 * Added IOC Page 6. 272 * Added IOC Page 6.
273 * Added PrevBootDeviceForm field to CONFIG_PAGE_BIOS_2. 273 * Added PrevBootDeviceForm field to CONFIG_PAGE_BIOS_2.
274 * Added MaxLBAHigh field to RAID Volume Page 0. 274 * Added MaxLBAHigh field to RAID Volume Page 0.
275 * Added Nvdata version fields to SAS IO Unit Page 0. 275 * Added Nvdata version fields to SAS IO Unit Page 0.
276 * Added AdditionalControlFlags, MaxTargetPortConnectTime, 276 * Added AdditionalControlFlags, MaxTargetPortConnectTime,
277 * ReportDeviceMissingDelay, and IODeviceMissingDelay 277 * ReportDeviceMissingDelay, and IODeviceMissingDelay
278 * fields to SAS IO Unit Page 1. 278 * fields to SAS IO Unit Page 1.
279 * 10-11-06 01.05.13 Added NumForceWWID field and ForceWWID array to
280 * Manufacturing Page 5.
281 * Added Manufacturing pages 8 through 10.
282 * Added defines for supported metadata size bits in
283 * CapabilitiesFlags field of IOC Page 6.
284 * Added defines for metadata size bits in VolumeSettings
285 * field of RAID Volume Page 0.
286 * Added SATA Link Reset settings, Enable SATA Asynchronous
287 * Notification bit, and HideNonZeroAttachedPhyIdentifiers
288 * bit to AdditionalControlFlags field of SAS IO Unit
289 * Page 1.
290 * Added defines for Enclosure Devices Unmapped and
291 * Device Limit Exceeded bits in Status field of SAS IO
292 * Unit Page 2.
293 * Added more AccessStatus values for SAS Device Page 0.
294 * Added bit for SATA Asynchronous Notification Support in
295 * Flags field of SAS Device Page 0.
279 * -------------------------------------------------------------------------- 296 * --------------------------------------------------------------------------
280 */ 297 */
281 298
282 #ifndef MPI_CNFG_H 299 #ifndef MPI_CNFG_H
283 #define MPI_CNFG_H 300 #define MPI_CNFG_H
284 301
285 302
286 /***************************************************************************** 303 /*****************************************************************************
287 * 304 *
288 * C o n f i g M e s s a g e a n d S t r u c t u r e s 305 * C o n f i g M e s s a g e a n d S t r u c t u r e s
289 * 306 *
290 *****************************************************************************/ 307 *****************************************************************************/
291 308
292 typedef struct _CONFIG_PAGE_HEADER 309 typedef struct _CONFIG_PAGE_HEADER
293 { 310 {
294 U8 PageVersion; /* 00h */ 311 U8 PageVersion; /* 00h */
295 U8 PageLength; /* 01h */ 312 U8 PageLength; /* 01h */
296 U8 PageNumber; /* 02h */ 313 U8 PageNumber; /* 02h */
297 U8 PageType; /* 03h */ 314 U8 PageType; /* 03h */
298 } CONFIG_PAGE_HEADER, MPI_POINTER PTR_CONFIG_PAGE_HEADER, 315 } CONFIG_PAGE_HEADER, MPI_POINTER PTR_CONFIG_PAGE_HEADER,
299 ConfigPageHeader_t, MPI_POINTER pConfigPageHeader_t; 316 ConfigPageHeader_t, MPI_POINTER pConfigPageHeader_t;
300 317
301 typedef union _CONFIG_PAGE_HEADER_UNION 318 typedef union _CONFIG_PAGE_HEADER_UNION
302 { 319 {
303 ConfigPageHeader_t Struct; 320 ConfigPageHeader_t Struct;
304 U8 Bytes[4]; 321 U8 Bytes[4];
305 U16 Word16[2]; 322 U16 Word16[2];
306 U32 Word32; 323 U32 Word32;
307 } ConfigPageHeaderUnion, MPI_POINTER pConfigPageHeaderUnion, 324 } ConfigPageHeaderUnion, MPI_POINTER pConfigPageHeaderUnion,
308 CONFIG_PAGE_HEADER_UNION, MPI_POINTER PTR_CONFIG_PAGE_HEADER_UNION; 325 CONFIG_PAGE_HEADER_UNION, MPI_POINTER PTR_CONFIG_PAGE_HEADER_UNION;
309 326
310 typedef struct _CONFIG_EXTENDED_PAGE_HEADER 327 typedef struct _CONFIG_EXTENDED_PAGE_HEADER
311 { 328 {
312 U8 PageVersion; /* 00h */ 329 U8 PageVersion; /* 00h */
313 U8 Reserved1; /* 01h */ 330 U8 Reserved1; /* 01h */
314 U8 PageNumber; /* 02h */ 331 U8 PageNumber; /* 02h */
315 U8 PageType; /* 03h */ 332 U8 PageType; /* 03h */
316 U16 ExtPageLength; /* 04h */ 333 U16 ExtPageLength; /* 04h */
317 U8 ExtPageType; /* 06h */ 334 U8 ExtPageType; /* 06h */
318 U8 Reserved2; /* 07h */ 335 U8 Reserved2; /* 07h */
319 } CONFIG_EXTENDED_PAGE_HEADER, MPI_POINTER PTR_CONFIG_EXTENDED_PAGE_HEADER, 336 } CONFIG_EXTENDED_PAGE_HEADER, MPI_POINTER PTR_CONFIG_EXTENDED_PAGE_HEADER,
320 ConfigExtendedPageHeader_t, MPI_POINTER pConfigExtendedPageHeader_t; 337 ConfigExtendedPageHeader_t, MPI_POINTER pConfigExtendedPageHeader_t;
321 338
322 339
323 340
324 /**************************************************************************** 341 /****************************************************************************
325 * PageType field values 342 * PageType field values
326 ****************************************************************************/ 343 ****************************************************************************/
327 #define MPI_CONFIG_PAGEATTR_READ_ONLY (0x00) 344 #define MPI_CONFIG_PAGEATTR_READ_ONLY (0x00)
328 #define MPI_CONFIG_PAGEATTR_CHANGEABLE (0x10) 345 #define MPI_CONFIG_PAGEATTR_CHANGEABLE (0x10)
329 #define MPI_CONFIG_PAGEATTR_PERSISTENT (0x20) 346 #define MPI_CONFIG_PAGEATTR_PERSISTENT (0x20)
330 #define MPI_CONFIG_PAGEATTR_RO_PERSISTENT (0x30) 347 #define MPI_CONFIG_PAGEATTR_RO_PERSISTENT (0x30)
331 #define MPI_CONFIG_PAGEATTR_MASK (0xF0) 348 #define MPI_CONFIG_PAGEATTR_MASK (0xF0)
332 349
333 #define MPI_CONFIG_PAGETYPE_IO_UNIT (0x00) 350 #define MPI_CONFIG_PAGETYPE_IO_UNIT (0x00)
334 #define MPI_CONFIG_PAGETYPE_IOC (0x01) 351 #define MPI_CONFIG_PAGETYPE_IOC (0x01)
335 #define MPI_CONFIG_PAGETYPE_BIOS (0x02) 352 #define MPI_CONFIG_PAGETYPE_BIOS (0x02)
336 #define MPI_CONFIG_PAGETYPE_SCSI_PORT (0x03) 353 #define MPI_CONFIG_PAGETYPE_SCSI_PORT (0x03)
337 #define MPI_CONFIG_PAGETYPE_SCSI_DEVICE (0x04) 354 #define MPI_CONFIG_PAGETYPE_SCSI_DEVICE (0x04)
338 #define MPI_CONFIG_PAGETYPE_FC_PORT (0x05) 355 #define MPI_CONFIG_PAGETYPE_FC_PORT (0x05)
339 #define MPI_CONFIG_PAGETYPE_FC_DEVICE (0x06) 356 #define MPI_CONFIG_PAGETYPE_FC_DEVICE (0x06)
340 #define MPI_CONFIG_PAGETYPE_LAN (0x07) 357 #define MPI_CONFIG_PAGETYPE_LAN (0x07)
341 #define MPI_CONFIG_PAGETYPE_RAID_VOLUME (0x08) 358 #define MPI_CONFIG_PAGETYPE_RAID_VOLUME (0x08)
342 #define MPI_CONFIG_PAGETYPE_MANUFACTURING (0x09) 359 #define MPI_CONFIG_PAGETYPE_MANUFACTURING (0x09)
343 #define MPI_CONFIG_PAGETYPE_RAID_PHYSDISK (0x0A) 360 #define MPI_CONFIG_PAGETYPE_RAID_PHYSDISK (0x0A)
344 #define MPI_CONFIG_PAGETYPE_INBAND (0x0B) 361 #define MPI_CONFIG_PAGETYPE_INBAND (0x0B)
345 #define MPI_CONFIG_PAGETYPE_EXTENDED (0x0F) 362 #define MPI_CONFIG_PAGETYPE_EXTENDED (0x0F)
346 #define MPI_CONFIG_PAGETYPE_MASK (0x0F) 363 #define MPI_CONFIG_PAGETYPE_MASK (0x0F)
347 364
348 #define MPI_CONFIG_TYPENUM_MASK (0x0FFF) 365 #define MPI_CONFIG_TYPENUM_MASK (0x0FFF)
349 366
350 367
351 /**************************************************************************** 368 /****************************************************************************
352 * ExtPageType field values 369 * ExtPageType field values
353 ****************************************************************************/ 370 ****************************************************************************/
354 #define MPI_CONFIG_EXTPAGETYPE_SAS_IO_UNIT (0x10) 371 #define MPI_CONFIG_EXTPAGETYPE_SAS_IO_UNIT (0x10)
355 #define MPI_CONFIG_EXTPAGETYPE_SAS_EXPANDER (0x11) 372 #define MPI_CONFIG_EXTPAGETYPE_SAS_EXPANDER (0x11)
356 #define MPI_CONFIG_EXTPAGETYPE_SAS_DEVICE (0x12) 373 #define MPI_CONFIG_EXTPAGETYPE_SAS_DEVICE (0x12)
357 #define MPI_CONFIG_EXTPAGETYPE_SAS_PHY (0x13) 374 #define MPI_CONFIG_EXTPAGETYPE_SAS_PHY (0x13)
358 #define MPI_CONFIG_EXTPAGETYPE_LOG (0x14) 375 #define MPI_CONFIG_EXTPAGETYPE_LOG (0x14)
359 #define MPI_CONFIG_EXTPAGETYPE_ENCLOSURE (0x15) 376 #define MPI_CONFIG_EXTPAGETYPE_ENCLOSURE (0x15)
360 377
361 378
362 /**************************************************************************** 379 /****************************************************************************
363 * PageAddress field values 380 * PageAddress field values
364 ****************************************************************************/ 381 ****************************************************************************/
365 #define MPI_SCSI_PORT_PGAD_PORT_MASK (0x000000FF) 382 #define MPI_SCSI_PORT_PGAD_PORT_MASK (0x000000FF)
366 383
367 #define MPI_SCSI_DEVICE_FORM_MASK (0xF0000000) 384 #define MPI_SCSI_DEVICE_FORM_MASK (0xF0000000)
368 #define MPI_SCSI_DEVICE_FORM_BUS_TID (0x00000000) 385 #define MPI_SCSI_DEVICE_FORM_BUS_TID (0x00000000)
369 #define MPI_SCSI_DEVICE_TARGET_ID_MASK (0x000000FF) 386 #define MPI_SCSI_DEVICE_TARGET_ID_MASK (0x000000FF)
370 #define MPI_SCSI_DEVICE_TARGET_ID_SHIFT (0) 387 #define MPI_SCSI_DEVICE_TARGET_ID_SHIFT (0)
371 #define MPI_SCSI_DEVICE_BUS_MASK (0x0000FF00) 388 #define MPI_SCSI_DEVICE_BUS_MASK (0x0000FF00)
372 #define MPI_SCSI_DEVICE_BUS_SHIFT (8) 389 #define MPI_SCSI_DEVICE_BUS_SHIFT (8)
373 #define MPI_SCSI_DEVICE_FORM_TARGET_MODE (0x10000000) 390 #define MPI_SCSI_DEVICE_FORM_TARGET_MODE (0x10000000)
374 #define MPI_SCSI_DEVICE_TM_RESPOND_ID_MASK (0x000000FF) 391 #define MPI_SCSI_DEVICE_TM_RESPOND_ID_MASK (0x000000FF)
375 #define MPI_SCSI_DEVICE_TM_RESPOND_ID_SHIFT (0) 392 #define MPI_SCSI_DEVICE_TM_RESPOND_ID_SHIFT (0)
376 #define MPI_SCSI_DEVICE_TM_BUS_MASK (0x0000FF00) 393 #define MPI_SCSI_DEVICE_TM_BUS_MASK (0x0000FF00)
377 #define MPI_SCSI_DEVICE_TM_BUS_SHIFT (8) 394 #define MPI_SCSI_DEVICE_TM_BUS_SHIFT (8)
378 #define MPI_SCSI_DEVICE_TM_INIT_ID_MASK (0x00FF0000) 395 #define MPI_SCSI_DEVICE_TM_INIT_ID_MASK (0x00FF0000)
379 #define MPI_SCSI_DEVICE_TM_INIT_ID_SHIFT (16) 396 #define MPI_SCSI_DEVICE_TM_INIT_ID_SHIFT (16)
380 397
381 #define MPI_FC_PORT_PGAD_PORT_MASK (0xF0000000) 398 #define MPI_FC_PORT_PGAD_PORT_MASK (0xF0000000)
382 #define MPI_FC_PORT_PGAD_PORT_SHIFT (28) 399 #define MPI_FC_PORT_PGAD_PORT_SHIFT (28)
383 #define MPI_FC_PORT_PGAD_FORM_MASK (0x0F000000) 400 #define MPI_FC_PORT_PGAD_FORM_MASK (0x0F000000)
384 #define MPI_FC_PORT_PGAD_FORM_INDEX (0x01000000) 401 #define MPI_FC_PORT_PGAD_FORM_INDEX (0x01000000)
385 #define MPI_FC_PORT_PGAD_INDEX_MASK (0x0000FFFF) 402 #define MPI_FC_PORT_PGAD_INDEX_MASK (0x0000FFFF)
386 #define MPI_FC_PORT_PGAD_INDEX_SHIFT (0) 403 #define MPI_FC_PORT_PGAD_INDEX_SHIFT (0)
387 404
388 #define MPI_FC_DEVICE_PGAD_PORT_MASK (0xF0000000) 405 #define MPI_FC_DEVICE_PGAD_PORT_MASK (0xF0000000)
389 #define MPI_FC_DEVICE_PGAD_PORT_SHIFT (28) 406 #define MPI_FC_DEVICE_PGAD_PORT_SHIFT (28)
390 #define MPI_FC_DEVICE_PGAD_FORM_MASK (0x0F000000) 407 #define MPI_FC_DEVICE_PGAD_FORM_MASK (0x0F000000)
391 #define MPI_FC_DEVICE_PGAD_FORM_NEXT_DID (0x00000000) 408 #define MPI_FC_DEVICE_PGAD_FORM_NEXT_DID (0x00000000)
392 #define MPI_FC_DEVICE_PGAD_ND_PORT_MASK (0xF0000000) 409 #define MPI_FC_DEVICE_PGAD_ND_PORT_MASK (0xF0000000)
393 #define MPI_FC_DEVICE_PGAD_ND_PORT_SHIFT (28) 410 #define MPI_FC_DEVICE_PGAD_ND_PORT_SHIFT (28)
394 #define MPI_FC_DEVICE_PGAD_ND_DID_MASK (0x00FFFFFF) 411 #define MPI_FC_DEVICE_PGAD_ND_DID_MASK (0x00FFFFFF)
395 #define MPI_FC_DEVICE_PGAD_ND_DID_SHIFT (0) 412 #define MPI_FC_DEVICE_PGAD_ND_DID_SHIFT (0)
396 #define MPI_FC_DEVICE_PGAD_FORM_BUS_TID (0x01000000) 413 #define MPI_FC_DEVICE_PGAD_FORM_BUS_TID (0x01000000)
397 #define MPI_FC_DEVICE_PGAD_BT_BUS_MASK (0x0000FF00) 414 #define MPI_FC_DEVICE_PGAD_BT_BUS_MASK (0x0000FF00)
398 #define MPI_FC_DEVICE_PGAD_BT_BUS_SHIFT (8) 415 #define MPI_FC_DEVICE_PGAD_BT_BUS_SHIFT (8)
399 #define MPI_FC_DEVICE_PGAD_BT_TID_MASK (0x000000FF) 416 #define MPI_FC_DEVICE_PGAD_BT_TID_MASK (0x000000FF)
400 #define MPI_FC_DEVICE_PGAD_BT_TID_SHIFT (0) 417 #define MPI_FC_DEVICE_PGAD_BT_TID_SHIFT (0)
401 418
402 #define MPI_PHYSDISK_PGAD_PHYSDISKNUM_MASK (0x000000FF) 419 #define MPI_PHYSDISK_PGAD_PHYSDISKNUM_MASK (0x000000FF)
403 #define MPI_PHYSDISK_PGAD_PHYSDISKNUM_SHIFT (0) 420 #define MPI_PHYSDISK_PGAD_PHYSDISKNUM_SHIFT (0)
404 421
405 #define MPI_SAS_EXPAND_PGAD_FORM_MASK (0xF0000000) 422 #define MPI_SAS_EXPAND_PGAD_FORM_MASK (0xF0000000)
406 #define MPI_SAS_EXPAND_PGAD_FORM_SHIFT (28) 423 #define MPI_SAS_EXPAND_PGAD_FORM_SHIFT (28)
407 #define MPI_SAS_EXPAND_PGAD_FORM_GET_NEXT_HANDLE (0x00000000) 424 #define MPI_SAS_EXPAND_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
408 #define MPI_SAS_EXPAND_PGAD_FORM_HANDLE_PHY_NUM (0x00000001) 425 #define MPI_SAS_EXPAND_PGAD_FORM_HANDLE_PHY_NUM (0x00000001)
409 #define MPI_SAS_EXPAND_PGAD_FORM_HANDLE (0x00000002) 426 #define MPI_SAS_EXPAND_PGAD_FORM_HANDLE (0x00000002)
410 #define MPI_SAS_EXPAND_PGAD_GNH_MASK_HANDLE (0x0000FFFF) 427 #define MPI_SAS_EXPAND_PGAD_GNH_MASK_HANDLE (0x0000FFFF)
411 #define MPI_SAS_EXPAND_PGAD_GNH_SHIFT_HANDLE (0) 428 #define MPI_SAS_EXPAND_PGAD_GNH_SHIFT_HANDLE (0)
412 #define MPI_SAS_EXPAND_PGAD_HPN_MASK_PHY (0x00FF0000) 429 #define MPI_SAS_EXPAND_PGAD_HPN_MASK_PHY (0x00FF0000)
413 #define MPI_SAS_EXPAND_PGAD_HPN_SHIFT_PHY (16) 430 #define MPI_SAS_EXPAND_PGAD_HPN_SHIFT_PHY (16)
414 #define MPI_SAS_EXPAND_PGAD_HPN_MASK_HANDLE (0x0000FFFF) 431 #define MPI_SAS_EXPAND_PGAD_HPN_MASK_HANDLE (0x0000FFFF)
415 #define MPI_SAS_EXPAND_PGAD_HPN_SHIFT_HANDLE (0) 432 #define MPI_SAS_EXPAND_PGAD_HPN_SHIFT_HANDLE (0)
416 #define MPI_SAS_EXPAND_PGAD_H_MASK_HANDLE (0x0000FFFF) 433 #define MPI_SAS_EXPAND_PGAD_H_MASK_HANDLE (0x0000FFFF)
417 #define MPI_SAS_EXPAND_PGAD_H_SHIFT_HANDLE (0) 434 #define MPI_SAS_EXPAND_PGAD_H_SHIFT_HANDLE (0)
418 435
419 #define MPI_SAS_DEVICE_PGAD_FORM_MASK (0xF0000000) 436 #define MPI_SAS_DEVICE_PGAD_FORM_MASK (0xF0000000)
420 #define MPI_SAS_DEVICE_PGAD_FORM_SHIFT (28) 437 #define MPI_SAS_DEVICE_PGAD_FORM_SHIFT (28)
421 #define MPI_SAS_DEVICE_PGAD_FORM_GET_NEXT_HANDLE (0x00000000) 438 #define MPI_SAS_DEVICE_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
422 #define MPI_SAS_DEVICE_PGAD_FORM_BUS_TARGET_ID (0x00000001) 439 #define MPI_SAS_DEVICE_PGAD_FORM_BUS_TARGET_ID (0x00000001)
423 #define MPI_SAS_DEVICE_PGAD_FORM_HANDLE (0x00000002) 440 #define MPI_SAS_DEVICE_PGAD_FORM_HANDLE (0x00000002)
424 #define MPI_SAS_DEVICE_PGAD_GNH_HANDLE_MASK (0x0000FFFF) 441 #define MPI_SAS_DEVICE_PGAD_GNH_HANDLE_MASK (0x0000FFFF)
425 #define MPI_SAS_DEVICE_PGAD_GNH_HANDLE_SHIFT (0) 442 #define MPI_SAS_DEVICE_PGAD_GNH_HANDLE_SHIFT (0)
426 #define MPI_SAS_DEVICE_PGAD_BT_BUS_MASK (0x0000FF00) 443 #define MPI_SAS_DEVICE_PGAD_BT_BUS_MASK (0x0000FF00)
427 #define MPI_SAS_DEVICE_PGAD_BT_BUS_SHIFT (8) 444 #define MPI_SAS_DEVICE_PGAD_BT_BUS_SHIFT (8)
428 #define MPI_SAS_DEVICE_PGAD_BT_TID_MASK (0x000000FF) 445 #define MPI_SAS_DEVICE_PGAD_BT_TID_MASK (0x000000FF)
429 #define MPI_SAS_DEVICE_PGAD_BT_TID_SHIFT (0) 446 #define MPI_SAS_DEVICE_PGAD_BT_TID_SHIFT (0)
430 #define MPI_SAS_DEVICE_PGAD_H_HANDLE_MASK (0x0000FFFF) 447 #define MPI_SAS_DEVICE_PGAD_H_HANDLE_MASK (0x0000FFFF)
431 #define MPI_SAS_DEVICE_PGAD_H_HANDLE_SHIFT (0) 448 #define MPI_SAS_DEVICE_PGAD_H_HANDLE_SHIFT (0)
432 449
433 #define MPI_SAS_PHY_PGAD_FORM_MASK (0xF0000000) 450 #define MPI_SAS_PHY_PGAD_FORM_MASK (0xF0000000)
434 #define MPI_SAS_PHY_PGAD_FORM_SHIFT (28) 451 #define MPI_SAS_PHY_PGAD_FORM_SHIFT (28)
435 #define MPI_SAS_PHY_PGAD_FORM_PHY_NUMBER (0x0) 452 #define MPI_SAS_PHY_PGAD_FORM_PHY_NUMBER (0x0)
436 #define MPI_SAS_PHY_PGAD_FORM_PHY_TBL_INDEX (0x1) 453 #define MPI_SAS_PHY_PGAD_FORM_PHY_TBL_INDEX (0x1)
437 #define MPI_SAS_PHY_PGAD_PHY_NUMBER_MASK (0x000000FF) 454 #define MPI_SAS_PHY_PGAD_PHY_NUMBER_MASK (0x000000FF)
438 #define MPI_SAS_PHY_PGAD_PHY_NUMBER_SHIFT (0) 455 #define MPI_SAS_PHY_PGAD_PHY_NUMBER_SHIFT (0)
439 #define MPI_SAS_PHY_PGAD_PHY_TBL_INDEX_MASK (0x0000FFFF) 456 #define MPI_SAS_PHY_PGAD_PHY_TBL_INDEX_MASK (0x0000FFFF)
440 #define MPI_SAS_PHY_PGAD_PHY_TBL_INDEX_SHIFT (0) 457 #define MPI_SAS_PHY_PGAD_PHY_TBL_INDEX_SHIFT (0)
441 458
442 #define MPI_SAS_ENCLOS_PGAD_FORM_MASK (0xF0000000) 459 #define MPI_SAS_ENCLOS_PGAD_FORM_MASK (0xF0000000)
443 #define MPI_SAS_ENCLOS_PGAD_FORM_SHIFT (28) 460 #define MPI_SAS_ENCLOS_PGAD_FORM_SHIFT (28)
444 #define MPI_SAS_ENCLOS_PGAD_FORM_GET_NEXT_HANDLE (0x00000000) 461 #define MPI_SAS_ENCLOS_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
445 #define MPI_SAS_ENCLOS_PGAD_FORM_HANDLE (0x00000001) 462 #define MPI_SAS_ENCLOS_PGAD_FORM_HANDLE (0x00000001)
446 #define MPI_SAS_ENCLOS_PGAD_GNH_HANDLE_MASK (0x0000FFFF) 463 #define MPI_SAS_ENCLOS_PGAD_GNH_HANDLE_MASK (0x0000FFFF)
447 #define MPI_SAS_ENCLOS_PGAD_GNH_HANDLE_SHIFT (0) 464 #define MPI_SAS_ENCLOS_PGAD_GNH_HANDLE_SHIFT (0)
448 #define MPI_SAS_ENCLOS_PGAD_H_HANDLE_MASK (0x0000FFFF) 465 #define MPI_SAS_ENCLOS_PGAD_H_HANDLE_MASK (0x0000FFFF)
449 #define MPI_SAS_ENCLOS_PGAD_H_HANDLE_SHIFT (0) 466 #define MPI_SAS_ENCLOS_PGAD_H_HANDLE_SHIFT (0)
450 467
451 468
452 469
453 /**************************************************************************** 470 /****************************************************************************
454 * Config Request Message 471 * Config Request Message
455 ****************************************************************************/ 472 ****************************************************************************/
456 typedef struct _MSG_CONFIG 473 typedef struct _MSG_CONFIG
457 { 474 {
458 U8 Action; /* 00h */ 475 U8 Action; /* 00h */
459 U8 Reserved; /* 01h */ 476 U8 Reserved; /* 01h */
460 U8 ChainOffset; /* 02h */ 477 U8 ChainOffset; /* 02h */
461 U8 Function; /* 03h */ 478 U8 Function; /* 03h */
462 U16 ExtPageLength; /* 04h */ 479 U16 ExtPageLength; /* 04h */
463 U8 ExtPageType; /* 06h */ 480 U8 ExtPageType; /* 06h */
464 U8 MsgFlags; /* 07h */ 481 U8 MsgFlags; /* 07h */
465 U32 MsgContext; /* 08h */ 482 U32 MsgContext; /* 08h */
466 U8 Reserved2[8]; /* 0Ch */ 483 U8 Reserved2[8]; /* 0Ch */
467 CONFIG_PAGE_HEADER Header; /* 14h */ 484 CONFIG_PAGE_HEADER Header; /* 14h */
468 U32 PageAddress; /* 18h */ 485 U32 PageAddress; /* 18h */
469 SGE_IO_UNION PageBufferSGE; /* 1Ch */ 486 SGE_IO_UNION PageBufferSGE; /* 1Ch */
470 } MSG_CONFIG, MPI_POINTER PTR_MSG_CONFIG, 487 } MSG_CONFIG, MPI_POINTER PTR_MSG_CONFIG,
471 Config_t, MPI_POINTER pConfig_t; 488 Config_t, MPI_POINTER pConfig_t;
472 489
473 490
474 /**************************************************************************** 491 /****************************************************************************
475 * Action field values 492 * Action field values
476 ****************************************************************************/ 493 ****************************************************************************/
477 #define MPI_CONFIG_ACTION_PAGE_HEADER (0x00) 494 #define MPI_CONFIG_ACTION_PAGE_HEADER (0x00)
478 #define MPI_CONFIG_ACTION_PAGE_READ_CURRENT (0x01) 495 #define MPI_CONFIG_ACTION_PAGE_READ_CURRENT (0x01)
479 #define MPI_CONFIG_ACTION_PAGE_WRITE_CURRENT (0x02) 496 #define MPI_CONFIG_ACTION_PAGE_WRITE_CURRENT (0x02)
480 #define MPI_CONFIG_ACTION_PAGE_DEFAULT (0x03) 497 #define MPI_CONFIG_ACTION_PAGE_DEFAULT (0x03)
481 #define MPI_CONFIG_ACTION_PAGE_WRITE_NVRAM (0x04) 498 #define MPI_CONFIG_ACTION_PAGE_WRITE_NVRAM (0x04)
482 #define MPI_CONFIG_ACTION_PAGE_READ_DEFAULT (0x05) 499 #define MPI_CONFIG_ACTION_PAGE_READ_DEFAULT (0x05)
483 #define MPI_CONFIG_ACTION_PAGE_READ_NVRAM (0x06) 500 #define MPI_CONFIG_ACTION_PAGE_READ_NVRAM (0x06)
484 501
485 502
486 /* Config Reply Message */ 503 /* Config Reply Message */
487 typedef struct _MSG_CONFIG_REPLY 504 typedef struct _MSG_CONFIG_REPLY
488 { 505 {
489 U8 Action; /* 00h */ 506 U8 Action; /* 00h */
490 U8 Reserved; /* 01h */ 507 U8 Reserved; /* 01h */
491 U8 MsgLength; /* 02h */ 508 U8 MsgLength; /* 02h */
492 U8 Function; /* 03h */ 509 U8 Function; /* 03h */
493 U16 ExtPageLength; /* 04h */ 510 U16 ExtPageLength; /* 04h */
494 U8 ExtPageType; /* 06h */ 511 U8 ExtPageType; /* 06h */
495 U8 MsgFlags; /* 07h */ 512 U8 MsgFlags; /* 07h */
496 U32 MsgContext; /* 08h */ 513 U32 MsgContext; /* 08h */
497 U8 Reserved2[2]; /* 0Ch */ 514 U8 Reserved2[2]; /* 0Ch */
498 U16 IOCStatus; /* 0Eh */ 515 U16 IOCStatus; /* 0Eh */
499 U32 IOCLogInfo; /* 10h */ 516 U32 IOCLogInfo; /* 10h */
500 CONFIG_PAGE_HEADER Header; /* 14h */ 517 CONFIG_PAGE_HEADER Header; /* 14h */
501 } MSG_CONFIG_REPLY, MPI_POINTER PTR_MSG_CONFIG_REPLY, 518 } MSG_CONFIG_REPLY, MPI_POINTER PTR_MSG_CONFIG_REPLY,
502 ConfigReply_t, MPI_POINTER pConfigReply_t; 519 ConfigReply_t, MPI_POINTER pConfigReply_t;
503 520
504 521
505 522
506 /***************************************************************************** 523 /*****************************************************************************
507 * 524 *
508 * C o n f i g u r a t i o n P a g e s 525 * C o n f i g u r a t i o n P a g e s
509 * 526 *
510 *****************************************************************************/ 527 *****************************************************************************/
511 528
512 /**************************************************************************** 529 /****************************************************************************
513 * Manufacturing Config pages 530 * Manufacturing Config pages
514 ****************************************************************************/ 531 ****************************************************************************/
515 #define MPI_MANUFACTPAGE_VENDORID_LSILOGIC (0x1000) 532 #define MPI_MANUFACTPAGE_VENDORID_LSILOGIC (0x1000)
516 /* Fibre Channel */ 533 /* Fibre Channel */
517 #define MPI_MANUFACTPAGE_DEVICEID_FC909 (0x0621) 534 #define MPI_MANUFACTPAGE_DEVICEID_FC909 (0x0621)
518 #define MPI_MANUFACTPAGE_DEVICEID_FC919 (0x0624) 535 #define MPI_MANUFACTPAGE_DEVICEID_FC919 (0x0624)
519 #define MPI_MANUFACTPAGE_DEVICEID_FC929 (0x0622) 536 #define MPI_MANUFACTPAGE_DEVICEID_FC929 (0x0622)
520 #define MPI_MANUFACTPAGE_DEVICEID_FC919X (0x0628) 537 #define MPI_MANUFACTPAGE_DEVICEID_FC919X (0x0628)
521 #define MPI_MANUFACTPAGE_DEVICEID_FC929X (0x0626) 538 #define MPI_MANUFACTPAGE_DEVICEID_FC929X (0x0626)
522 #define MPI_MANUFACTPAGE_DEVICEID_FC939X (0x0642) 539 #define MPI_MANUFACTPAGE_DEVICEID_FC939X (0x0642)
523 #define MPI_MANUFACTPAGE_DEVICEID_FC949X (0x0640) 540 #define MPI_MANUFACTPAGE_DEVICEID_FC949X (0x0640)
524 #define MPI_MANUFACTPAGE_DEVICEID_FC949E (0x0646) 541 #define MPI_MANUFACTPAGE_DEVICEID_FC949E (0x0646)
525 /* SCSI */ 542 /* SCSI */
526 #define MPI_MANUFACTPAGE_DEVID_53C1030 (0x0030) 543 #define MPI_MANUFACTPAGE_DEVID_53C1030 (0x0030)
527 #define MPI_MANUFACTPAGE_DEVID_53C1030ZC (0x0031) 544 #define MPI_MANUFACTPAGE_DEVID_53C1030ZC (0x0031)
528 #define MPI_MANUFACTPAGE_DEVID_1030_53C1035 (0x0032) 545 #define MPI_MANUFACTPAGE_DEVID_1030_53C1035 (0x0032)
529 #define MPI_MANUFACTPAGE_DEVID_1030ZC_53C1035 (0x0033) 546 #define MPI_MANUFACTPAGE_DEVID_1030ZC_53C1035 (0x0033)
530 #define MPI_MANUFACTPAGE_DEVID_53C1035 (0x0040) 547 #define MPI_MANUFACTPAGE_DEVID_53C1035 (0x0040)
531 #define MPI_MANUFACTPAGE_DEVID_53C1035ZC (0x0041) 548 #define MPI_MANUFACTPAGE_DEVID_53C1035ZC (0x0041)
532 /* SAS */ 549 /* SAS */
533 #define MPI_MANUFACTPAGE_DEVID_SAS1064 (0x0050) 550 #define MPI_MANUFACTPAGE_DEVID_SAS1064 (0x0050)
534 #define MPI_MANUFACTPAGE_DEVID_SAS1064A (0x005C) 551 #define MPI_MANUFACTPAGE_DEVID_SAS1064A (0x005C)
535 #define MPI_MANUFACTPAGE_DEVID_SAS1064E (0x0056) 552 #define MPI_MANUFACTPAGE_DEVID_SAS1064E (0x0056)
536 #define MPI_MANUFACTPAGE_DEVID_SAS1066 (0x005E) 553 #define MPI_MANUFACTPAGE_DEVID_SAS1066 (0x005E)
537 #define MPI_MANUFACTPAGE_DEVID_SAS1066E (0x005A) 554 #define MPI_MANUFACTPAGE_DEVID_SAS1066E (0x005A)
538 #define MPI_MANUFACTPAGE_DEVID_SAS1068 (0x0054) 555 #define MPI_MANUFACTPAGE_DEVID_SAS1068 (0x0054)
539 #define MPI_MANUFACTPAGE_DEVID_SAS1068E (0x0058) 556 #define MPI_MANUFACTPAGE_DEVID_SAS1068E (0x0058)
540 #define MPI_MANUFACTPAGE_DEVID_SAS1078 (0x0062) 557 #define MPI_MANUFACTPAGE_DEVID_SAS1078 (0x0062)
541 558
542 559
543 typedef struct _CONFIG_PAGE_MANUFACTURING_0 560 typedef struct _CONFIG_PAGE_MANUFACTURING_0
544 { 561 {
545 CONFIG_PAGE_HEADER Header; /* 00h */ 562 CONFIG_PAGE_HEADER Header; /* 00h */
546 U8 ChipName[16]; /* 04h */ 563 U8 ChipName[16]; /* 04h */
547 U8 ChipRevision[8]; /* 14h */ 564 U8 ChipRevision[8]; /* 14h */
548 U8 BoardName[16]; /* 1Ch */ 565 U8 BoardName[16]; /* 1Ch */
549 U8 BoardAssembly[16]; /* 2Ch */ 566 U8 BoardAssembly[16]; /* 2Ch */
550 U8 BoardTracerNumber[16]; /* 3Ch */ 567 U8 BoardTracerNumber[16]; /* 3Ch */
551 568
552 } CONFIG_PAGE_MANUFACTURING_0, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_0, 569 } CONFIG_PAGE_MANUFACTURING_0, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_0,
553 ManufacturingPage0_t, MPI_POINTER pManufacturingPage0_t; 570 ManufacturingPage0_t, MPI_POINTER pManufacturingPage0_t;
554 571
555 #define MPI_MANUFACTURING0_PAGEVERSION (0x00) 572 #define MPI_MANUFACTURING0_PAGEVERSION (0x00)
556 573
557 574
558 typedef struct _CONFIG_PAGE_MANUFACTURING_1 575 typedef struct _CONFIG_PAGE_MANUFACTURING_1
559 { 576 {
560 CONFIG_PAGE_HEADER Header; /* 00h */ 577 CONFIG_PAGE_HEADER Header; /* 00h */
561 U8 VPD[256]; /* 04h */ 578 U8 VPD[256]; /* 04h */
562 } CONFIG_PAGE_MANUFACTURING_1, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_1, 579 } CONFIG_PAGE_MANUFACTURING_1, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_1,
563 ManufacturingPage1_t, MPI_POINTER pManufacturingPage1_t; 580 ManufacturingPage1_t, MPI_POINTER pManufacturingPage1_t;
564 581
565 #define MPI_MANUFACTURING1_PAGEVERSION (0x00) 582 #define MPI_MANUFACTURING1_PAGEVERSION (0x00)
566 583
567 584
568 typedef struct _MPI_CHIP_REVISION_ID 585 typedef struct _MPI_CHIP_REVISION_ID
569 { 586 {
570 U16 DeviceID; /* 00h */ 587 U16 DeviceID; /* 00h */
571 U8 PCIRevisionID; /* 02h */ 588 U8 PCIRevisionID; /* 02h */
572 U8 Reserved; /* 03h */ 589 U8 Reserved; /* 03h */
573 } MPI_CHIP_REVISION_ID, MPI_POINTER PTR_MPI_CHIP_REVISION_ID, 590 } MPI_CHIP_REVISION_ID, MPI_POINTER PTR_MPI_CHIP_REVISION_ID,
574 MpiChipRevisionId_t, MPI_POINTER pMpiChipRevisionId_t; 591 MpiChipRevisionId_t, MPI_POINTER pMpiChipRevisionId_t;
575 592
576 593
577 /* 594 /*
578 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to 595 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
579 * one and check Header.PageLength at runtime. 596 * one and check Header.PageLength at runtime.
580 */ 597 */
581 #ifndef MPI_MAN_PAGE_2_HW_SETTINGS_WORDS 598 #ifndef MPI_MAN_PAGE_2_HW_SETTINGS_WORDS
582 #define MPI_MAN_PAGE_2_HW_SETTINGS_WORDS (1) 599 #define MPI_MAN_PAGE_2_HW_SETTINGS_WORDS (1)
583 #endif 600 #endif
584 601
585 typedef struct _CONFIG_PAGE_MANUFACTURING_2 602 typedef struct _CONFIG_PAGE_MANUFACTURING_2
586 { 603 {
587 CONFIG_PAGE_HEADER Header; /* 00h */ 604 CONFIG_PAGE_HEADER Header; /* 00h */
588 MPI_CHIP_REVISION_ID ChipId; /* 04h */ 605 MPI_CHIP_REVISION_ID ChipId; /* 04h */
589 U32 HwSettings[MPI_MAN_PAGE_2_HW_SETTINGS_WORDS];/* 08h */ 606 U32 HwSettings[MPI_MAN_PAGE_2_HW_SETTINGS_WORDS];/* 08h */
590 } CONFIG_PAGE_MANUFACTURING_2, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_2, 607 } CONFIG_PAGE_MANUFACTURING_2, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_2,
591 ManufacturingPage2_t, MPI_POINTER pManufacturingPage2_t; 608 ManufacturingPage2_t, MPI_POINTER pManufacturingPage2_t;
592 609
593 #define MPI_MANUFACTURING2_PAGEVERSION (0x00) 610 #define MPI_MANUFACTURING2_PAGEVERSION (0x00)
594 611
595 612
596 /* 613 /*
597 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to 614 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
598 * one and check Header.PageLength at runtime. 615 * one and check Header.PageLength at runtime.
599 */ 616 */
600 #ifndef MPI_MAN_PAGE_3_INFO_WORDS 617 #ifndef MPI_MAN_PAGE_3_INFO_WORDS
601 #define MPI_MAN_PAGE_3_INFO_WORDS (1) 618 #define MPI_MAN_PAGE_3_INFO_WORDS (1)
602 #endif 619 #endif
603 620
604 typedef struct _CONFIG_PAGE_MANUFACTURING_3 621 typedef struct _CONFIG_PAGE_MANUFACTURING_3
605 { 622 {
606 CONFIG_PAGE_HEADER Header; /* 00h */ 623 CONFIG_PAGE_HEADER Header; /* 00h */
607 MPI_CHIP_REVISION_ID ChipId; /* 04h */ 624 MPI_CHIP_REVISION_ID ChipId; /* 04h */
608 U32 Info[MPI_MAN_PAGE_3_INFO_WORDS];/* 08h */ 625 U32 Info[MPI_MAN_PAGE_3_INFO_WORDS];/* 08h */
609 } CONFIG_PAGE_MANUFACTURING_3, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_3, 626 } CONFIG_PAGE_MANUFACTURING_3, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_3,
610 ManufacturingPage3_t, MPI_POINTER pManufacturingPage3_t; 627 ManufacturingPage3_t, MPI_POINTER pManufacturingPage3_t;
611 628
612 #define MPI_MANUFACTURING3_PAGEVERSION (0x00) 629 #define MPI_MANUFACTURING3_PAGEVERSION (0x00)
613 630
614 631
615 typedef struct _CONFIG_PAGE_MANUFACTURING_4 632 typedef struct _CONFIG_PAGE_MANUFACTURING_4
616 { 633 {
617 CONFIG_PAGE_HEADER Header; /* 00h */ 634 CONFIG_PAGE_HEADER Header; /* 00h */
618 U32 Reserved1; /* 04h */ 635 U32 Reserved1; /* 04h */
619 U8 InfoOffset0; /* 08h */ 636 U8 InfoOffset0; /* 08h */
620 U8 InfoSize0; /* 09h */ 637 U8 InfoSize0; /* 09h */
621 U8 InfoOffset1; /* 0Ah */ 638 U8 InfoOffset1; /* 0Ah */
622 U8 InfoSize1; /* 0Bh */ 639 U8 InfoSize1; /* 0Bh */
623 U8 InquirySize; /* 0Ch */ 640 U8 InquirySize; /* 0Ch */
624 U8 Flags; /* 0Dh */ 641 U8 Flags; /* 0Dh */
625 U16 Reserved2; /* 0Eh */ 642 U16 Reserved2; /* 0Eh */
626 U8 InquiryData[56]; /* 10h */ 643 U8 InquiryData[56]; /* 10h */
627 U32 ISVolumeSettings; /* 48h */ 644 U32 ISVolumeSettings; /* 48h */
628 U32 IMEVolumeSettings; /* 4Ch */ 645 U32 IMEVolumeSettings; /* 4Ch */
629 U32 IMVolumeSettings; /* 50h */ 646 U32 IMVolumeSettings; /* 50h */
630 U32 Reserved3; /* 54h */ 647 U32 Reserved3; /* 54h */
631 U32 Reserved4; /* 58h */ 648 U32 Reserved4; /* 58h */
632 U32 Reserved5; /* 5Ch */ 649 U32 Reserved5; /* 5Ch */
633 U8 IMEDataScrubRate; /* 60h */ 650 U8 IMEDataScrubRate; /* 60h */
634 U8 IMEResyncRate; /* 61h */ 651 U8 IMEResyncRate; /* 61h */
635 U16 Reserved6; /* 62h */ 652 U16 Reserved6; /* 62h */
636 U8 IMDataScrubRate; /* 64h */ 653 U8 IMDataScrubRate; /* 64h */
637 U8 IMResyncRate; /* 65h */ 654 U8 IMResyncRate; /* 65h */
638 U16 Reserved7; /* 66h */ 655 U16 Reserved7; /* 66h */
639 U32 Reserved8; /* 68h */ 656 U32 Reserved8; /* 68h */
640 U32 Reserved9; /* 6Ch */ 657 U32 Reserved9; /* 6Ch */
641 } CONFIG_PAGE_MANUFACTURING_4, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_4, 658 } CONFIG_PAGE_MANUFACTURING_4, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_4,
642 ManufacturingPage4_t, MPI_POINTER pManufacturingPage4_t; 659 ManufacturingPage4_t, MPI_POINTER pManufacturingPage4_t;
643 660
644 #define MPI_MANUFACTURING4_PAGEVERSION (0x04) 661 #define MPI_MANUFACTURING4_PAGEVERSION (0x04)
645 662
646 /* defines for the Flags field */ 663 /* defines for the Flags field */
647 #define MPI_MANPAGE4_FORCE_BAD_BLOCK_TABLE (0x80) 664 #define MPI_MANPAGE4_FORCE_BAD_BLOCK_TABLE (0x80)
648 #define MPI_MANPAGE4_FORCE_OFFLINE_FAILOVER (0x40) 665 #define MPI_MANPAGE4_FORCE_OFFLINE_FAILOVER (0x40)
649 #define MPI_MANPAGE4_IME_DISABLE (0x20) 666 #define MPI_MANPAGE4_IME_DISABLE (0x20)
650 #define MPI_MANPAGE4_IM_DISABLE (0x10) 667 #define MPI_MANPAGE4_IM_DISABLE (0x10)
651 #define MPI_MANPAGE4_IS_DISABLE (0x08) 668 #define MPI_MANPAGE4_IS_DISABLE (0x08)
652 #define MPI_MANPAGE4_IR_MODEPAGE8_DISABLE (0x04) 669 #define MPI_MANPAGE4_IR_MODEPAGE8_DISABLE (0x04)
653 #define MPI_MANPAGE4_IM_RESYNC_CACHE_ENABLE (0x02) 670 #define MPI_MANPAGE4_IM_RESYNC_CACHE_ENABLE (0x02)
654 #define MPI_MANPAGE4_IR_NO_MIX_SAS_SATA (0x01) 671 #define MPI_MANPAGE4_IR_NO_MIX_SAS_SATA (0x01)
655 672
656 673
674 #ifndef MPI_MANPAGE5_NUM_FORCEWWID
675 #define MPI_MANPAGE5_NUM_FORCEWWID (1)
676 #endif
677
657 typedef struct _CONFIG_PAGE_MANUFACTURING_5 678 typedef struct _CONFIG_PAGE_MANUFACTURING_5
658 { 679 {
659 CONFIG_PAGE_HEADER Header; /* 00h */ 680 CONFIG_PAGE_HEADER Header; /* 00h */
660 U64 BaseWWID; /* 04h */ 681 U64 BaseWWID; /* 04h */
661 U8 Flags; /* 0Ch */ 682 U8 Flags; /* 0Ch */
662 U8 Reserved1; /* 0Dh */ 683 U8 NumForceWWID; /* 0Dh */
663 U16 Reserved2; /* 0Eh */ 684 U16 Reserved2; /* 0Eh */
685 U32 Reserved3; /* 10h */
686 U32 Reserved4; /* 14h */
687 U64 ForceWWID[MPI_MANPAGE5_NUM_FORCEWWID]; /* 18h */
664 } CONFIG_PAGE_MANUFACTURING_5, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_5, 688 } CONFIG_PAGE_MANUFACTURING_5, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_5,
665 ManufacturingPage5_t, MPI_POINTER pManufacturingPage5_t; 689 ManufacturingPage5_t, MPI_POINTER pManufacturingPage5_t;
666 690
667 #define MPI_MANUFACTURING5_PAGEVERSION (0x01) 691 #define MPI_MANUFACTURING5_PAGEVERSION (0x02)
668 692
669 /* defines for the Flags field */ 693 /* defines for the Flags field */
670 #define MPI_MANPAGE5_TWO_WWID_PER_PHY (0x01) 694 #define MPI_MANPAGE5_TWO_WWID_PER_PHY (0x01)
671 695
672 696
673 typedef struct _CONFIG_PAGE_MANUFACTURING_6 697 typedef struct _CONFIG_PAGE_MANUFACTURING_6
674 { 698 {
675 CONFIG_PAGE_HEADER Header; /* 00h */ 699 CONFIG_PAGE_HEADER Header; /* 00h */
676 U32 ProductSpecificInfo;/* 04h */ 700 U32 ProductSpecificInfo;/* 04h */
677 } CONFIG_PAGE_MANUFACTURING_6, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_6, 701 } CONFIG_PAGE_MANUFACTURING_6, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_6,
678 ManufacturingPage6_t, MPI_POINTER pManufacturingPage6_t; 702 ManufacturingPage6_t, MPI_POINTER pManufacturingPage6_t;
679 703
680 #define MPI_MANUFACTURING6_PAGEVERSION (0x00) 704 #define MPI_MANUFACTURING6_PAGEVERSION (0x00)
681 705
682 706
683 typedef struct _MPI_MANPAGE7_CONNECTOR_INFO 707 typedef struct _MPI_MANPAGE7_CONNECTOR_INFO
684 { 708 {
685 U32 Pinout; /* 00h */ 709 U32 Pinout; /* 00h */
686 U8 Connector[16]; /* 04h */ 710 U8 Connector[16]; /* 04h */
687 U8 Location; /* 14h */ 711 U8 Location; /* 14h */
688 U8 Reserved1; /* 15h */ 712 U8 Reserved1; /* 15h */
689 U16 Slot; /* 16h */ 713 U16 Slot; /* 16h */
690 U32 Reserved2; /* 18h */ 714 U32 Reserved2; /* 18h */
691 } MPI_MANPAGE7_CONNECTOR_INFO, MPI_POINTER PTR_MPI_MANPAGE7_CONNECTOR_INFO, 715 } MPI_MANPAGE7_CONNECTOR_INFO, MPI_POINTER PTR_MPI_MANPAGE7_CONNECTOR_INFO,
692 MpiManPage7ConnectorInfo_t, MPI_POINTER pMpiManPage7ConnectorInfo_t; 716 MpiManPage7ConnectorInfo_t, MPI_POINTER pMpiManPage7ConnectorInfo_t;
693 717
694 /* defines for the Pinout field */ 718 /* defines for the Pinout field */
695 #define MPI_MANPAGE7_PINOUT_SFF_8484_L4 (0x00080000) 719 #define MPI_MANPAGE7_PINOUT_SFF_8484_L4 (0x00080000)
696 #define MPI_MANPAGE7_PINOUT_SFF_8484_L3 (0x00040000) 720 #define MPI_MANPAGE7_PINOUT_SFF_8484_L3 (0x00040000)
697 #define MPI_MANPAGE7_PINOUT_SFF_8484_L2 (0x00020000) 721 #define MPI_MANPAGE7_PINOUT_SFF_8484_L2 (0x00020000)
698 #define MPI_MANPAGE7_PINOUT_SFF_8484_L1 (0x00010000) 722 #define MPI_MANPAGE7_PINOUT_SFF_8484_L1 (0x00010000)
699 #define MPI_MANPAGE7_PINOUT_SFF_8470_L4 (0x00000800) 723 #define MPI_MANPAGE7_PINOUT_SFF_8470_L4 (0x00000800)
700 #define MPI_MANPAGE7_PINOUT_SFF_8470_L3 (0x00000400) 724 #define MPI_MANPAGE7_PINOUT_SFF_8470_L3 (0x00000400)
701 #define MPI_MANPAGE7_PINOUT_SFF_8470_L2 (0x00000200) 725 #define MPI_MANPAGE7_PINOUT_SFF_8470_L2 (0x00000200)
702 #define MPI_MANPAGE7_PINOUT_SFF_8470_L1 (0x00000100) 726 #define MPI_MANPAGE7_PINOUT_SFF_8470_L1 (0x00000100)
703 #define MPI_MANPAGE7_PINOUT_SFF_8482 (0x00000002) 727 #define MPI_MANPAGE7_PINOUT_SFF_8482 (0x00000002)
704 #define MPI_MANPAGE7_PINOUT_CONNECTION_UNKNOWN (0x00000001) 728 #define MPI_MANPAGE7_PINOUT_CONNECTION_UNKNOWN (0x00000001)
705 729
706 /* defines for the Location field */ 730 /* defines for the Location field */
707 #define MPI_MANPAGE7_LOCATION_UNKNOWN (0x01) 731 #define MPI_MANPAGE7_LOCATION_UNKNOWN (0x01)
708 #define MPI_MANPAGE7_LOCATION_INTERNAL (0x02) 732 #define MPI_MANPAGE7_LOCATION_INTERNAL (0x02)
709 #define MPI_MANPAGE7_LOCATION_EXTERNAL (0x04) 733 #define MPI_MANPAGE7_LOCATION_EXTERNAL (0x04)
710 #define MPI_MANPAGE7_LOCATION_SWITCHABLE (0x08) 734 #define MPI_MANPAGE7_LOCATION_SWITCHABLE (0x08)
711 #define MPI_MANPAGE7_LOCATION_AUTO (0x10) 735 #define MPI_MANPAGE7_LOCATION_AUTO (0x10)
712 #define MPI_MANPAGE7_LOCATION_NOT_PRESENT (0x20) 736 #define MPI_MANPAGE7_LOCATION_NOT_PRESENT (0x20)
713 #define MPI_MANPAGE7_LOCATION_NOT_CONNECTED (0x80) 737 #define MPI_MANPAGE7_LOCATION_NOT_CONNECTED (0x80)
714 738
715 /* 739 /*
716 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to 740 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
717 * one and check NumPhys at runtime. 741 * one and check NumPhys at runtime.
718 */ 742 */
719 #ifndef MPI_MANPAGE7_CONNECTOR_INFO_MAX 743 #ifndef MPI_MANPAGE7_CONNECTOR_INFO_MAX
720 #define MPI_MANPAGE7_CONNECTOR_INFO_MAX (1) 744 #define MPI_MANPAGE7_CONNECTOR_INFO_MAX (1)
721 #endif 745 #endif
722 746
723 typedef struct _CONFIG_PAGE_MANUFACTURING_7 747 typedef struct _CONFIG_PAGE_MANUFACTURING_7
724 { 748 {
725 CONFIG_PAGE_HEADER Header; /* 00h */ 749 CONFIG_PAGE_HEADER Header; /* 00h */
726 U32 Reserved1; /* 04h */ 750 U32 Reserved1; /* 04h */
727 U32 Reserved2; /* 08h */ 751 U32 Reserved2; /* 08h */
728 U32 Flags; /* 0Ch */ 752 U32 Flags; /* 0Ch */
729 U8 EnclosureName[16]; /* 10h */ 753 U8 EnclosureName[16]; /* 10h */
730 U8 NumPhys; /* 20h */ 754 U8 NumPhys; /* 20h */
731 U8 Reserved3; /* 21h */ 755 U8 Reserved3; /* 21h */
732 U16 Reserved4; /* 22h */ 756 U16 Reserved4; /* 22h */
733 MPI_MANPAGE7_CONNECTOR_INFO ConnectorInfo[MPI_MANPAGE7_CONNECTOR_INFO_MAX]; /* 24h */ 757 MPI_MANPAGE7_CONNECTOR_INFO ConnectorInfo[MPI_MANPAGE7_CONNECTOR_INFO_MAX]; /* 24h */
734 } CONFIG_PAGE_MANUFACTURING_7, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_7, 758 } CONFIG_PAGE_MANUFACTURING_7, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_7,
735 ManufacturingPage7_t, MPI_POINTER pManufacturingPage7_t; 759 ManufacturingPage7_t, MPI_POINTER pManufacturingPage7_t;
736 760
737 #define MPI_MANUFACTURING7_PAGEVERSION (0x00) 761 #define MPI_MANUFACTURING7_PAGEVERSION (0x00)
738 762
739 /* defines for the Flags field */ 763 /* defines for the Flags field */
740 #define MPI_MANPAGE7_FLAG_USE_SLOT_INFO (0x00000001) 764 #define MPI_MANPAGE7_FLAG_USE_SLOT_INFO (0x00000001)
741 765
742 766
767 typedef struct _CONFIG_PAGE_MANUFACTURING_8
768 {
769 CONFIG_PAGE_HEADER Header; /* 00h */
770 U32 ProductSpecificInfo;/* 04h */
771 } CONFIG_PAGE_MANUFACTURING_8, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_8,
772 ManufacturingPage8_t, MPI_POINTER pManufacturingPage8_t;
773
774 #define MPI_MANUFACTURING8_PAGEVERSION (0x00)
775
776
777 typedef struct _CONFIG_PAGE_MANUFACTURING_9
778 {
779 CONFIG_PAGE_HEADER Header; /* 00h */
780 U32 ProductSpecificInfo;/* 04h */
781 } CONFIG_PAGE_MANUFACTURING_9, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_9,
782 ManufacturingPage9_t, MPI_POINTER pManufacturingPage9_t;
783
784 #define MPI_MANUFACTURING6_PAGEVERSION (0x00)
785
786
787 typedef struct _CONFIG_PAGE_MANUFACTURING_10
788 {
789 CONFIG_PAGE_HEADER Header; /* 00h */
790 U32 ProductSpecificInfo;/* 04h */
791 } CONFIG_PAGE_MANUFACTURING_10, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_10,
792 ManufacturingPage10_t, MPI_POINTER pManufacturingPage10_t;
793
794 #define MPI_MANUFACTURING10_PAGEVERSION (0x00)
795
796
743 /**************************************************************************** 797 /****************************************************************************
744 * IO Unit Config Pages 798 * IO Unit Config Pages
745 ****************************************************************************/ 799 ****************************************************************************/
746 800
747 typedef struct _CONFIG_PAGE_IO_UNIT_0 801 typedef struct _CONFIG_PAGE_IO_UNIT_0
748 { 802 {
749 CONFIG_PAGE_HEADER Header; /* 00h */ 803 CONFIG_PAGE_HEADER Header; /* 00h */
750 U64 UniqueValue; /* 04h */ 804 U64 UniqueValue; /* 04h */
751 } CONFIG_PAGE_IO_UNIT_0, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_0, 805 } CONFIG_PAGE_IO_UNIT_0, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_0,
752 IOUnitPage0_t, MPI_POINTER pIOUnitPage0_t; 806 IOUnitPage0_t, MPI_POINTER pIOUnitPage0_t;
753 807
754 #define MPI_IOUNITPAGE0_PAGEVERSION (0x00) 808 #define MPI_IOUNITPAGE0_PAGEVERSION (0x00)
755 809
756 810
757 typedef struct _CONFIG_PAGE_IO_UNIT_1 811 typedef struct _CONFIG_PAGE_IO_UNIT_1
758 { 812 {
759 CONFIG_PAGE_HEADER Header; /* 00h */ 813 CONFIG_PAGE_HEADER Header; /* 00h */
760 U32 Flags; /* 04h */ 814 U32 Flags; /* 04h */
761 } CONFIG_PAGE_IO_UNIT_1, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_1, 815 } CONFIG_PAGE_IO_UNIT_1, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_1,
762 IOUnitPage1_t, MPI_POINTER pIOUnitPage1_t; 816 IOUnitPage1_t, MPI_POINTER pIOUnitPage1_t;
763 817
764 #define MPI_IOUNITPAGE1_PAGEVERSION (0x02) 818 #define MPI_IOUNITPAGE1_PAGEVERSION (0x02)
765 819
766 /* IO Unit Page 1 Flags defines */ 820 /* IO Unit Page 1 Flags defines */
767 #define MPI_IOUNITPAGE1_MULTI_FUNCTION (0x00000000) 821 #define MPI_IOUNITPAGE1_MULTI_FUNCTION (0x00000000)
768 #define MPI_IOUNITPAGE1_SINGLE_FUNCTION (0x00000001) 822 #define MPI_IOUNITPAGE1_SINGLE_FUNCTION (0x00000001)
769 #define MPI_IOUNITPAGE1_MULTI_PATHING (0x00000002) 823 #define MPI_IOUNITPAGE1_MULTI_PATHING (0x00000002)
770 #define MPI_IOUNITPAGE1_SINGLE_PATHING (0x00000000) 824 #define MPI_IOUNITPAGE1_SINGLE_PATHING (0x00000000)
771 #define MPI_IOUNITPAGE1_IR_USE_STATIC_VOLUME_ID (0x00000004) 825 #define MPI_IOUNITPAGE1_IR_USE_STATIC_VOLUME_ID (0x00000004)
772 #define MPI_IOUNITPAGE1_DISABLE_QUEUE_FULL_HANDLING (0x00000020) 826 #define MPI_IOUNITPAGE1_DISABLE_QUEUE_FULL_HANDLING (0x00000020)
773 #define MPI_IOUNITPAGE1_DISABLE_IR (0x00000040) 827 #define MPI_IOUNITPAGE1_DISABLE_IR (0x00000040)
774 #define MPI_IOUNITPAGE1_FORCE_32 (0x00000080) 828 #define MPI_IOUNITPAGE1_FORCE_32 (0x00000080)
775 #define MPI_IOUNITPAGE1_NATIVE_COMMAND_Q_DISABLE (0x00000100) 829 #define MPI_IOUNITPAGE1_NATIVE_COMMAND_Q_DISABLE (0x00000100)
776 #define MPI_IOUNITPAGE1_SATA_WRITE_CACHE_DISABLE (0x00000200) 830 #define MPI_IOUNITPAGE1_SATA_WRITE_CACHE_DISABLE (0x00000200)
777 831
778 typedef struct _MPI_ADAPTER_INFO 832 typedef struct _MPI_ADAPTER_INFO
779 { 833 {
780 U8 PciBusNumber; /* 00h */ 834 U8 PciBusNumber; /* 00h */
781 U8 PciDeviceAndFunctionNumber; /* 01h */ 835 U8 PciDeviceAndFunctionNumber; /* 01h */
782 U16 AdapterFlags; /* 02h */ 836 U16 AdapterFlags; /* 02h */
783 } MPI_ADAPTER_INFO, MPI_POINTER PTR_MPI_ADAPTER_INFO, 837 } MPI_ADAPTER_INFO, MPI_POINTER PTR_MPI_ADAPTER_INFO,
784 MpiAdapterInfo_t, MPI_POINTER pMpiAdapterInfo_t; 838 MpiAdapterInfo_t, MPI_POINTER pMpiAdapterInfo_t;
785 839
786 #define MPI_ADAPTER_INFO_FLAGS_EMBEDDED (0x0001) 840 #define MPI_ADAPTER_INFO_FLAGS_EMBEDDED (0x0001)
787 #define MPI_ADAPTER_INFO_FLAGS_INIT_STATUS (0x0002) 841 #define MPI_ADAPTER_INFO_FLAGS_INIT_STATUS (0x0002)
788 842
789 typedef struct _CONFIG_PAGE_IO_UNIT_2 843 typedef struct _CONFIG_PAGE_IO_UNIT_2
790 { 844 {
791 CONFIG_PAGE_HEADER Header; /* 00h */ 845 CONFIG_PAGE_HEADER Header; /* 00h */
792 U32 Flags; /* 04h */ 846 U32 Flags; /* 04h */
793 U32 BiosVersion; /* 08h */ 847 U32 BiosVersion; /* 08h */
794 MPI_ADAPTER_INFO AdapterOrder[4]; /* 0Ch */ 848 MPI_ADAPTER_INFO AdapterOrder[4]; /* 0Ch */
795 U32 Reserved1; /* 1Ch */ 849 U32 Reserved1; /* 1Ch */
796 } CONFIG_PAGE_IO_UNIT_2, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_2, 850 } CONFIG_PAGE_IO_UNIT_2, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_2,
797 IOUnitPage2_t, MPI_POINTER pIOUnitPage2_t; 851 IOUnitPage2_t, MPI_POINTER pIOUnitPage2_t;
798 852
799 #define MPI_IOUNITPAGE2_PAGEVERSION (0x02) 853 #define MPI_IOUNITPAGE2_PAGEVERSION (0x02)
800 854
801 #define MPI_IOUNITPAGE2_FLAGS_PAUSE_ON_ERROR (0x00000002) 855 #define MPI_IOUNITPAGE2_FLAGS_PAUSE_ON_ERROR (0x00000002)
802 #define MPI_IOUNITPAGE2_FLAGS_VERBOSE_ENABLE (0x00000004) 856 #define MPI_IOUNITPAGE2_FLAGS_VERBOSE_ENABLE (0x00000004)
803 #define MPI_IOUNITPAGE2_FLAGS_COLOR_VIDEO_DISABLE (0x00000008) 857 #define MPI_IOUNITPAGE2_FLAGS_COLOR_VIDEO_DISABLE (0x00000008)
804 #define MPI_IOUNITPAGE2_FLAGS_DONT_HOOK_INT_40 (0x00000010) 858 #define MPI_IOUNITPAGE2_FLAGS_DONT_HOOK_INT_40 (0x00000010)
805 859
806 #define MPI_IOUNITPAGE2_FLAGS_DEV_LIST_DISPLAY_MASK (0x000000E0) 860 #define MPI_IOUNITPAGE2_FLAGS_DEV_LIST_DISPLAY_MASK (0x000000E0)
807 #define MPI_IOUNITPAGE2_FLAGS_INSTALLED_DEV_DISPLAY (0x00000000) 861 #define MPI_IOUNITPAGE2_FLAGS_INSTALLED_DEV_DISPLAY (0x00000000)
808 #define MPI_IOUNITPAGE2_FLAGS_ADAPTER_DISPLAY (0x00000020) 862 #define MPI_IOUNITPAGE2_FLAGS_ADAPTER_DISPLAY (0x00000020)
809 #define MPI_IOUNITPAGE2_FLAGS_ADAPTER_DEV_DISPLAY (0x00000040) 863 #define MPI_IOUNITPAGE2_FLAGS_ADAPTER_DEV_DISPLAY (0x00000040)
810 864
811 865
812 /* 866 /*
813 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to 867 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
814 * one and check Header.PageLength at runtime. 868 * one and check Header.PageLength at runtime.
815 */ 869 */
816 #ifndef MPI_IO_UNIT_PAGE_3_GPIO_VAL_MAX 870 #ifndef MPI_IO_UNIT_PAGE_3_GPIO_VAL_MAX
817 #define MPI_IO_UNIT_PAGE_3_GPIO_VAL_MAX (1) 871 #define MPI_IO_UNIT_PAGE_3_GPIO_VAL_MAX (1)
818 #endif 872 #endif
819 873
820 typedef struct _CONFIG_PAGE_IO_UNIT_3 874 typedef struct _CONFIG_PAGE_IO_UNIT_3
821 { 875 {
822 CONFIG_PAGE_HEADER Header; /* 00h */ 876 CONFIG_PAGE_HEADER Header; /* 00h */
823 U8 GPIOCount; /* 04h */ 877 U8 GPIOCount; /* 04h */
824 U8 Reserved1; /* 05h */ 878 U8 Reserved1; /* 05h */
825 U16 Reserved2; /* 06h */ 879 U16 Reserved2; /* 06h */
826 U16 GPIOVal[MPI_IO_UNIT_PAGE_3_GPIO_VAL_MAX]; /* 08h */ 880 U16 GPIOVal[MPI_IO_UNIT_PAGE_3_GPIO_VAL_MAX]; /* 08h */
827 } CONFIG_PAGE_IO_UNIT_3, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_3, 881 } CONFIG_PAGE_IO_UNIT_3, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_3,
828 IOUnitPage3_t, MPI_POINTER pIOUnitPage3_t; 882 IOUnitPage3_t, MPI_POINTER pIOUnitPage3_t;
829 883
830 #define MPI_IOUNITPAGE3_PAGEVERSION (0x01) 884 #define MPI_IOUNITPAGE3_PAGEVERSION (0x01)
831 885
832 #define MPI_IOUNITPAGE3_GPIO_FUNCTION_MASK (0xFC) 886 #define MPI_IOUNITPAGE3_GPIO_FUNCTION_MASK (0xFC)
833 #define MPI_IOUNITPAGE3_GPIO_FUNCTION_SHIFT (2) 887 #define MPI_IOUNITPAGE3_GPIO_FUNCTION_SHIFT (2)
834 #define MPI_IOUNITPAGE3_GPIO_SETTING_OFF (0x00) 888 #define MPI_IOUNITPAGE3_GPIO_SETTING_OFF (0x00)
835 #define MPI_IOUNITPAGE3_GPIO_SETTING_ON (0x01) 889 #define MPI_IOUNITPAGE3_GPIO_SETTING_ON (0x01)
836 890
837 891
838 typedef struct _CONFIG_PAGE_IO_UNIT_4 892 typedef struct _CONFIG_PAGE_IO_UNIT_4
839 { 893 {
840 CONFIG_PAGE_HEADER Header; /* 00h */ 894 CONFIG_PAGE_HEADER Header; /* 00h */
841 U32 Reserved1; /* 04h */ 895 U32 Reserved1; /* 04h */
842 SGE_SIMPLE_UNION FWImageSGE; /* 08h */ 896 SGE_SIMPLE_UNION FWImageSGE; /* 08h */
843 } CONFIG_PAGE_IO_UNIT_4, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_4, 897 } CONFIG_PAGE_IO_UNIT_4, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_4,
844 IOUnitPage4_t, MPI_POINTER pIOUnitPage4_t; 898 IOUnitPage4_t, MPI_POINTER pIOUnitPage4_t;
845 899
846 #define MPI_IOUNITPAGE4_PAGEVERSION (0x00) 900 #define MPI_IOUNITPAGE4_PAGEVERSION (0x00)
847 901
848 902
849 /**************************************************************************** 903 /****************************************************************************
850 * IOC Config Pages 904 * IOC Config Pages
851 ****************************************************************************/ 905 ****************************************************************************/
852 906
853 typedef struct _CONFIG_PAGE_IOC_0 907 typedef struct _CONFIG_PAGE_IOC_0
854 { 908 {
855 CONFIG_PAGE_HEADER Header; /* 00h */ 909 CONFIG_PAGE_HEADER Header; /* 00h */
856 U32 TotalNVStore; /* 04h */ 910 U32 TotalNVStore; /* 04h */
857 U32 FreeNVStore; /* 08h */ 911 U32 FreeNVStore; /* 08h */
858 U16 VendorID; /* 0Ch */ 912 U16 VendorID; /* 0Ch */
859 U16 DeviceID; /* 0Eh */ 913 U16 DeviceID; /* 0Eh */
860 U8 RevisionID; /* 10h */ 914 U8 RevisionID; /* 10h */
861 U8 Reserved[3]; /* 11h */ 915 U8 Reserved[3]; /* 11h */
862 U32 ClassCode; /* 14h */ 916 U32 ClassCode; /* 14h */
863 U16 SubsystemVendorID; /* 18h */ 917 U16 SubsystemVendorID; /* 18h */
864 U16 SubsystemID; /* 1Ah */ 918 U16 SubsystemID; /* 1Ah */
865 } CONFIG_PAGE_IOC_0, MPI_POINTER PTR_CONFIG_PAGE_IOC_0, 919 } CONFIG_PAGE_IOC_0, MPI_POINTER PTR_CONFIG_PAGE_IOC_0,
866 IOCPage0_t, MPI_POINTER pIOCPage0_t; 920 IOCPage0_t, MPI_POINTER pIOCPage0_t;
867 921
868 #define MPI_IOCPAGE0_PAGEVERSION (0x01) 922 #define MPI_IOCPAGE0_PAGEVERSION (0x01)
869 923
870 924
871 typedef struct _CONFIG_PAGE_IOC_1 925 typedef struct _CONFIG_PAGE_IOC_1
872 { 926 {
873 CONFIG_PAGE_HEADER Header; /* 00h */ 927 CONFIG_PAGE_HEADER Header; /* 00h */
874 U32 Flags; /* 04h */ 928 U32 Flags; /* 04h */
875 U32 CoalescingTimeout; /* 08h */ 929 U32 CoalescingTimeout; /* 08h */
876 U8 CoalescingDepth; /* 0Ch */ 930 U8 CoalescingDepth; /* 0Ch */
877 U8 PCISlotNum; /* 0Dh */ 931 U8 PCISlotNum; /* 0Dh */
878 U8 Reserved[2]; /* 0Eh */ 932 U8 Reserved[2]; /* 0Eh */
879 } CONFIG_PAGE_IOC_1, MPI_POINTER PTR_CONFIG_PAGE_IOC_1, 933 } CONFIG_PAGE_IOC_1, MPI_POINTER PTR_CONFIG_PAGE_IOC_1,
880 IOCPage1_t, MPI_POINTER pIOCPage1_t; 934 IOCPage1_t, MPI_POINTER pIOCPage1_t;
881 935
882 #define MPI_IOCPAGE1_PAGEVERSION (0x03) 936 #define MPI_IOCPAGE1_PAGEVERSION (0x03)
883 937
884 /* defines for the Flags field */ 938 /* defines for the Flags field */
885 #define MPI_IOCPAGE1_EEDP_MODE_MASK (0x07000000) 939 #define MPI_IOCPAGE1_EEDP_MODE_MASK (0x07000000)
886 #define MPI_IOCPAGE1_EEDP_MODE_OFF (0x00000000) 940 #define MPI_IOCPAGE1_EEDP_MODE_OFF (0x00000000)
887 #define MPI_IOCPAGE1_EEDP_MODE_T10 (0x01000000) 941 #define MPI_IOCPAGE1_EEDP_MODE_T10 (0x01000000)
888 #define MPI_IOCPAGE1_EEDP_MODE_LSI_1 (0x02000000) 942 #define MPI_IOCPAGE1_EEDP_MODE_LSI_1 (0x02000000)
889 #define MPI_IOCPAGE1_INITIATOR_CONTEXT_REPLY_DISABLE (0x00000010) 943 #define MPI_IOCPAGE1_INITIATOR_CONTEXT_REPLY_DISABLE (0x00000010)
890 #define MPI_IOCPAGE1_REPLY_COALESCING (0x00000001) 944 #define MPI_IOCPAGE1_REPLY_COALESCING (0x00000001)
891 945
892 #define MPI_IOCPAGE1_PCISLOTNUM_UNKNOWN (0xFF) 946 #define MPI_IOCPAGE1_PCISLOTNUM_UNKNOWN (0xFF)
893 947
894 948
895 typedef struct _CONFIG_PAGE_IOC_2_RAID_VOL 949 typedef struct _CONFIG_PAGE_IOC_2_RAID_VOL
896 { 950 {
897 U8 VolumeID; /* 00h */ 951 U8 VolumeID; /* 00h */
898 U8 VolumeBus; /* 01h */ 952 U8 VolumeBus; /* 01h */
899 U8 VolumeIOC; /* 02h */ 953 U8 VolumeIOC; /* 02h */
900 U8 VolumePageNumber; /* 03h */ 954 U8 VolumePageNumber; /* 03h */
901 U8 VolumeType; /* 04h */ 955 U8 VolumeType; /* 04h */
902 U8 Flags; /* 05h */ 956 U8 Flags; /* 05h */
903 U16 Reserved3; /* 06h */ 957 U16 Reserved3; /* 06h */
904 } CONFIG_PAGE_IOC_2_RAID_VOL, MPI_POINTER PTR_CONFIG_PAGE_IOC_2_RAID_VOL, 958 } CONFIG_PAGE_IOC_2_RAID_VOL, MPI_POINTER PTR_CONFIG_PAGE_IOC_2_RAID_VOL,
905 ConfigPageIoc2RaidVol_t, MPI_POINTER pConfigPageIoc2RaidVol_t; 959 ConfigPageIoc2RaidVol_t, MPI_POINTER pConfigPageIoc2RaidVol_t;
906 960
907 /* IOC Page 2 Volume RAID Type values, also used in RAID Volume pages */ 961 /* IOC Page 2 Volume RAID Type values, also used in RAID Volume pages */
908 962
909 #define MPI_RAID_VOL_TYPE_IS (0x00) 963 #define MPI_RAID_VOL_TYPE_IS (0x00)
910 #define MPI_RAID_VOL_TYPE_IME (0x01) 964 #define MPI_RAID_VOL_TYPE_IME (0x01)
911 #define MPI_RAID_VOL_TYPE_IM (0x02) 965 #define MPI_RAID_VOL_TYPE_IM (0x02)
912 #define MPI_RAID_VOL_TYPE_RAID_5 (0x03) 966 #define MPI_RAID_VOL_TYPE_RAID_5 (0x03)
913 #define MPI_RAID_VOL_TYPE_RAID_6 (0x04) 967 #define MPI_RAID_VOL_TYPE_RAID_6 (0x04)
914 #define MPI_RAID_VOL_TYPE_RAID_10 (0x05) 968 #define MPI_RAID_VOL_TYPE_RAID_10 (0x05)
915 #define MPI_RAID_VOL_TYPE_RAID_50 (0x06) 969 #define MPI_RAID_VOL_TYPE_RAID_50 (0x06)
916 #define MPI_RAID_VOL_TYPE_UNKNOWN (0xFF) 970 #define MPI_RAID_VOL_TYPE_UNKNOWN (0xFF)
917 971
918 /* IOC Page 2 Volume Flags values */ 972 /* IOC Page 2 Volume Flags values */
919 973
920 #define MPI_IOCPAGE2_FLAG_VOLUME_INACTIVE (0x08) 974 #define MPI_IOCPAGE2_FLAG_VOLUME_INACTIVE (0x08)
921 975
922 /* 976 /*
923 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to 977 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
924 * one and check Header.PageLength at runtime. 978 * one and check Header.PageLength at runtime.
925 */ 979 */
926 #ifndef MPI_IOC_PAGE_2_RAID_VOLUME_MAX 980 #ifndef MPI_IOC_PAGE_2_RAID_VOLUME_MAX
927 #define MPI_IOC_PAGE_2_RAID_VOLUME_MAX (1) 981 #define MPI_IOC_PAGE_2_RAID_VOLUME_MAX (1)
928 #endif 982 #endif
929 983
930 typedef struct _CONFIG_PAGE_IOC_2 984 typedef struct _CONFIG_PAGE_IOC_2
931 { 985 {
932 CONFIG_PAGE_HEADER Header; /* 00h */ 986 CONFIG_PAGE_HEADER Header; /* 00h */
933 U32 CapabilitiesFlags; /* 04h */ 987 U32 CapabilitiesFlags; /* 04h */
934 U8 NumActiveVolumes; /* 08h */ 988 U8 NumActiveVolumes; /* 08h */
935 U8 MaxVolumes; /* 09h */ 989 U8 MaxVolumes; /* 09h */
936 U8 NumActivePhysDisks; /* 0Ah */ 990 U8 NumActivePhysDisks; /* 0Ah */
937 U8 MaxPhysDisks; /* 0Bh */ 991 U8 MaxPhysDisks; /* 0Bh */
938 CONFIG_PAGE_IOC_2_RAID_VOL RaidVolume[MPI_IOC_PAGE_2_RAID_VOLUME_MAX];/* 0Ch */ 992 CONFIG_PAGE_IOC_2_RAID_VOL RaidVolume[MPI_IOC_PAGE_2_RAID_VOLUME_MAX];/* 0Ch */
939 } CONFIG_PAGE_IOC_2, MPI_POINTER PTR_CONFIG_PAGE_IOC_2, 993 } CONFIG_PAGE_IOC_2, MPI_POINTER PTR_CONFIG_PAGE_IOC_2,
940 IOCPage2_t, MPI_POINTER pIOCPage2_t; 994 IOCPage2_t, MPI_POINTER pIOCPage2_t;
941 995
942 #define MPI_IOCPAGE2_PAGEVERSION (0x04) 996 #define MPI_IOCPAGE2_PAGEVERSION (0x04)
943 997
944 /* IOC Page 2 Capabilities flags */ 998 /* IOC Page 2 Capabilities flags */
945 999
946 #define MPI_IOCPAGE2_CAP_FLAGS_IS_SUPPORT (0x00000001) 1000 #define MPI_IOCPAGE2_CAP_FLAGS_IS_SUPPORT (0x00000001)
947 #define MPI_IOCPAGE2_CAP_FLAGS_IME_SUPPORT (0x00000002) 1001 #define MPI_IOCPAGE2_CAP_FLAGS_IME_SUPPORT (0x00000002)
948 #define MPI_IOCPAGE2_CAP_FLAGS_IM_SUPPORT (0x00000004) 1002 #define MPI_IOCPAGE2_CAP_FLAGS_IM_SUPPORT (0x00000004)
949 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_5_SUPPORT (0x00000008) 1003 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_5_SUPPORT (0x00000008)
950 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_6_SUPPORT (0x00000010) 1004 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_6_SUPPORT (0x00000010)
951 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_10_SUPPORT (0x00000020) 1005 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_10_SUPPORT (0x00000020)
952 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_50_SUPPORT (0x00000040) 1006 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_50_SUPPORT (0x00000040)
953 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_64_BIT_ADDRESSING (0x10000000) 1007 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_64_BIT_ADDRESSING (0x10000000)
954 #define MPI_IOCPAGE2_CAP_FLAGS_SES_SUPPORT (0x20000000) 1008 #define MPI_IOCPAGE2_CAP_FLAGS_SES_SUPPORT (0x20000000)
955 #define MPI_IOCPAGE2_CAP_FLAGS_SAFTE_SUPPORT (0x40000000) 1009 #define MPI_IOCPAGE2_CAP_FLAGS_SAFTE_SUPPORT (0x40000000)
956 #define MPI_IOCPAGE2_CAP_FLAGS_CROSS_CHANNEL_SUPPORT (0x80000000) 1010 #define MPI_IOCPAGE2_CAP_FLAGS_CROSS_CHANNEL_SUPPORT (0x80000000)
957 1011
958 1012
959 typedef struct _IOC_3_PHYS_DISK 1013 typedef struct _IOC_3_PHYS_DISK
960 { 1014 {
961 U8 PhysDiskID; /* 00h */ 1015 U8 PhysDiskID; /* 00h */
962 U8 PhysDiskBus; /* 01h */ 1016 U8 PhysDiskBus; /* 01h */
963 U8 PhysDiskIOC; /* 02h */ 1017 U8 PhysDiskIOC; /* 02h */
964 U8 PhysDiskNum; /* 03h */ 1018 U8 PhysDiskNum; /* 03h */
965 } IOC_3_PHYS_DISK, MPI_POINTER PTR_IOC_3_PHYS_DISK, 1019 } IOC_3_PHYS_DISK, MPI_POINTER PTR_IOC_3_PHYS_DISK,
966 Ioc3PhysDisk_t, MPI_POINTER pIoc3PhysDisk_t; 1020 Ioc3PhysDisk_t, MPI_POINTER pIoc3PhysDisk_t;
967 1021
968 /* 1022 /*
969 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to 1023 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
970 * one and check Header.PageLength at runtime. 1024 * one and check Header.PageLength at runtime.
971 */ 1025 */
972 #ifndef MPI_IOC_PAGE_3_PHYSDISK_MAX 1026 #ifndef MPI_IOC_PAGE_3_PHYSDISK_MAX
973 #define MPI_IOC_PAGE_3_PHYSDISK_MAX (1) 1027 #define MPI_IOC_PAGE_3_PHYSDISK_MAX (1)
974 #endif 1028 #endif
975 1029
976 typedef struct _CONFIG_PAGE_IOC_3 1030 typedef struct _CONFIG_PAGE_IOC_3
977 { 1031 {
978 CONFIG_PAGE_HEADER Header; /* 00h */ 1032 CONFIG_PAGE_HEADER Header; /* 00h */
979 U8 NumPhysDisks; /* 04h */ 1033 U8 NumPhysDisks; /* 04h */
980 U8 Reserved1; /* 05h */ 1034 U8 Reserved1; /* 05h */
981 U16 Reserved2; /* 06h */ 1035 U16 Reserved2; /* 06h */
982 IOC_3_PHYS_DISK PhysDisk[MPI_IOC_PAGE_3_PHYSDISK_MAX]; /* 08h */ 1036 IOC_3_PHYS_DISK PhysDisk[MPI_IOC_PAGE_3_PHYSDISK_MAX]; /* 08h */
983 } CONFIG_PAGE_IOC_3, MPI_POINTER PTR_CONFIG_PAGE_IOC_3, 1037 } CONFIG_PAGE_IOC_3, MPI_POINTER PTR_CONFIG_PAGE_IOC_3,
984 IOCPage3_t, MPI_POINTER pIOCPage3_t; 1038 IOCPage3_t, MPI_POINTER pIOCPage3_t;
985 1039
986 #define MPI_IOCPAGE3_PAGEVERSION (0x00) 1040 #define MPI_IOCPAGE3_PAGEVERSION (0x00)
987 1041
988 1042
989 typedef struct _IOC_4_SEP 1043 typedef struct _IOC_4_SEP
990 { 1044 {
991 U8 SEPTargetID; /* 00h */ 1045 U8 SEPTargetID; /* 00h */
992 U8 SEPBus; /* 01h */ 1046 U8 SEPBus; /* 01h */
993 U16 Reserved; /* 02h */ 1047 U16 Reserved; /* 02h */
994 } IOC_4_SEP, MPI_POINTER PTR_IOC_4_SEP, 1048 } IOC_4_SEP, MPI_POINTER PTR_IOC_4_SEP,
995 Ioc4Sep_t, MPI_POINTER pIoc4Sep_t; 1049 Ioc4Sep_t, MPI_POINTER pIoc4Sep_t;
996 1050
997 /* 1051 /*
998 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to 1052 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
999 * one and check Header.PageLength at runtime. 1053 * one and check Header.PageLength at runtime.
1000 */ 1054 */
1001 #ifndef MPI_IOC_PAGE_4_SEP_MAX 1055 #ifndef MPI_IOC_PAGE_4_SEP_MAX
1002 #define MPI_IOC_PAGE_4_SEP_MAX (1) 1056 #define MPI_IOC_PAGE_4_SEP_MAX (1)
1003 #endif 1057 #endif
1004 1058
1005 typedef struct _CONFIG_PAGE_IOC_4 1059 typedef struct _CONFIG_PAGE_IOC_4
1006 { 1060 {
1007 CONFIG_PAGE_HEADER Header; /* 00h */ 1061 CONFIG_PAGE_HEADER Header; /* 00h */
1008 U8 ActiveSEP; /* 04h */ 1062 U8 ActiveSEP; /* 04h */
1009 U8 MaxSEP; /* 05h */ 1063 U8 MaxSEP; /* 05h */
1010 U16 Reserved1; /* 06h */ 1064 U16 Reserved1; /* 06h */
1011 IOC_4_SEP SEP[MPI_IOC_PAGE_4_SEP_MAX]; /* 08h */ 1065 IOC_4_SEP SEP[MPI_IOC_PAGE_4_SEP_MAX]; /* 08h */
1012 } CONFIG_PAGE_IOC_4, MPI_POINTER PTR_CONFIG_PAGE_IOC_4, 1066 } CONFIG_PAGE_IOC_4, MPI_POINTER PTR_CONFIG_PAGE_IOC_4,
1013 IOCPage4_t, MPI_POINTER pIOCPage4_t; 1067 IOCPage4_t, MPI_POINTER pIOCPage4_t;
1014 1068
1015 #define MPI_IOCPAGE4_PAGEVERSION (0x00) 1069 #define MPI_IOCPAGE4_PAGEVERSION (0x00)
1016 1070
1017 1071
1018 typedef struct _IOC_5_HOT_SPARE 1072 typedef struct _IOC_5_HOT_SPARE
1019 { 1073 {
1020 U8 PhysDiskNum; /* 00h */ 1074 U8 PhysDiskNum; /* 00h */
1021 U8 Reserved; /* 01h */ 1075 U8 Reserved; /* 01h */
1022 U8 HotSparePool; /* 02h */ 1076 U8 HotSparePool; /* 02h */
1023 U8 Flags; /* 03h */ 1077 U8 Flags; /* 03h */
1024 } IOC_5_HOT_SPARE, MPI_POINTER PTR_IOC_5_HOT_SPARE, 1078 } IOC_5_HOT_SPARE, MPI_POINTER PTR_IOC_5_HOT_SPARE,
1025 Ioc5HotSpare_t, MPI_POINTER pIoc5HotSpare_t; 1079 Ioc5HotSpare_t, MPI_POINTER pIoc5HotSpare_t;
1026 1080
1027 /* IOC Page 5 HotSpare Flags */ 1081 /* IOC Page 5 HotSpare Flags */
1028 #define MPI_IOC_PAGE_5_HOT_SPARE_ACTIVE (0x01) 1082 #define MPI_IOC_PAGE_5_HOT_SPARE_ACTIVE (0x01)
1029 1083
1030 /* 1084 /*
1031 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to 1085 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
1032 * one and check Header.PageLength at runtime. 1086 * one and check Header.PageLength at runtime.
1033 */ 1087 */
1034 #ifndef MPI_IOC_PAGE_5_HOT_SPARE_MAX 1088 #ifndef MPI_IOC_PAGE_5_HOT_SPARE_MAX
1035 #define MPI_IOC_PAGE_5_HOT_SPARE_MAX (1) 1089 #define MPI_IOC_PAGE_5_HOT_SPARE_MAX (1)
1036 #endif 1090 #endif
1037 1091
1038 typedef struct _CONFIG_PAGE_IOC_5 1092 typedef struct _CONFIG_PAGE_IOC_5
1039 { 1093 {
1040 CONFIG_PAGE_HEADER Header; /* 00h */ 1094 CONFIG_PAGE_HEADER Header; /* 00h */
1041 U32 Reserved1; /* 04h */ 1095 U32 Reserved1; /* 04h */
1042 U8 NumHotSpares; /* 08h */ 1096 U8 NumHotSpares; /* 08h */
1043 U8 Reserved2; /* 09h */ 1097 U8 Reserved2; /* 09h */
1044 U16 Reserved3; /* 0Ah */ 1098 U16 Reserved3; /* 0Ah */
1045 IOC_5_HOT_SPARE HotSpare[MPI_IOC_PAGE_5_HOT_SPARE_MAX]; /* 0Ch */ 1099 IOC_5_HOT_SPARE HotSpare[MPI_IOC_PAGE_5_HOT_SPARE_MAX]; /* 0Ch */
1046 } CONFIG_PAGE_IOC_5, MPI_POINTER PTR_CONFIG_PAGE_IOC_5, 1100 } CONFIG_PAGE_IOC_5, MPI_POINTER PTR_CONFIG_PAGE_IOC_5,
1047 IOCPage5_t, MPI_POINTER pIOCPage5_t; 1101 IOCPage5_t, MPI_POINTER pIOCPage5_t;
1048 1102
1049 #define MPI_IOCPAGE5_PAGEVERSION (0x00) 1103 #define MPI_IOCPAGE5_PAGEVERSION (0x00)
1050 1104
1051 typedef struct _CONFIG_PAGE_IOC_6 1105 typedef struct _CONFIG_PAGE_IOC_6
1052 { 1106 {
1053 CONFIG_PAGE_HEADER Header; /* 00h */ 1107 CONFIG_PAGE_HEADER Header; /* 00h */
1054 U32 CapabilitiesFlags; /* 04h */ 1108 U32 CapabilitiesFlags; /* 04h */
1055 U8 MaxDrivesIS; /* 08h */ 1109 U8 MaxDrivesIS; /* 08h */
1056 U8 MaxDrivesIM; /* 09h */ 1110 U8 MaxDrivesIM; /* 09h */
1057 U8 MaxDrivesIME; /* 0Ah */ 1111 U8 MaxDrivesIME; /* 0Ah */
1058 U8 Reserved1; /* 0Bh */ 1112 U8 Reserved1; /* 0Bh */
1059 U8 MinDrivesIS; /* 0Ch */ 1113 U8 MinDrivesIS; /* 0Ch */
1060 U8 MinDrivesIM; /* 0Dh */ 1114 U8 MinDrivesIM; /* 0Dh */
1061 U8 MinDrivesIME; /* 0Eh */ 1115 U8 MinDrivesIME; /* 0Eh */
1062 U8 Reserved2; /* 0Fh */ 1116 U8 Reserved2; /* 0Fh */
1063 U8 MaxGlobalHotSpares; /* 10h */ 1117 U8 MaxGlobalHotSpares; /* 10h */
1064 U8 Reserved3; /* 11h */ 1118 U8 Reserved3; /* 11h */
1065 U16 Reserved4; /* 12h */ 1119 U16 Reserved4; /* 12h */
1066 U32 Reserved5; /* 14h */ 1120 U32 Reserved5; /* 14h */
1067 U32 SupportedStripeSizeMapIS; /* 18h */ 1121 U32 SupportedStripeSizeMapIS; /* 18h */
1068 U32 SupportedStripeSizeMapIME; /* 1Ch */ 1122 U32 SupportedStripeSizeMapIME; /* 1Ch */
1069 U32 Reserved6; /* 20h */ 1123 U32 Reserved6; /* 20h */
1070 U8 MetadataSize; /* 24h */ 1124 U8 MetadataSize; /* 24h */
1071 U8 Reserved7; /* 25h */ 1125 U8 Reserved7; /* 25h */
1072 U16 Reserved8; /* 26h */ 1126 U16 Reserved8; /* 26h */
1073 U16 MaxBadBlockTableEntries; /* 28h */ 1127 U16 MaxBadBlockTableEntries; /* 28h */
1074 U16 Reserved9; /* 2Ah */ 1128 U16 Reserved9; /* 2Ah */
1075 U16 IRNvsramUsage; /* 2Ch */ 1129 U16 IRNvsramUsage; /* 2Ch */
1076 U16 Reserved10; /* 2Eh */ 1130 U16 Reserved10; /* 2Eh */
1077 U32 IRNvsramVersion; /* 30h */ 1131 U32 IRNvsramVersion; /* 30h */
1078 U32 Reserved11; /* 34h */ 1132 U32 Reserved11; /* 34h */
1079 U32 Reserved12; /* 38h */ 1133 U32 Reserved12; /* 38h */
1080 } CONFIG_PAGE_IOC_6, MPI_POINTER PTR_CONFIG_PAGE_IOC_6, 1134 } CONFIG_PAGE_IOC_6, MPI_POINTER PTR_CONFIG_PAGE_IOC_6,
1081 IOCPage6_t, MPI_POINTER pIOCPage6_t; 1135 IOCPage6_t, MPI_POINTER pIOCPage6_t;
1082 1136
1083 #define MPI_IOCPAGE6_PAGEVERSION (0x00) 1137 #define MPI_IOCPAGE6_PAGEVERSION (0x01)
1084 1138
1085 /* IOC Page 6 Capabilities Flags */ 1139 /* IOC Page 6 Capabilities Flags */
1086 1140
1141 #define MPI_IOCPAGE6_CAP_FLAGS_MASK_METADATA_SIZE (0x00000006)
1142 #define MPI_IOCPAGE6_CAP_FLAGS_64MB_METADATA_SIZE (0x00000000)
1143 #define MPI_IOCPAGE6_CAP_FLAGS_512MB_METADATA_SIZE (0x00000002)
1144
1087 #define MPI_IOCPAGE6_CAP_FLAGS_GLOBAL_HOT_SPARE (0x00000001) 1145 #define MPI_IOCPAGE6_CAP_FLAGS_GLOBAL_HOT_SPARE (0x00000001)
1088 1146
1089 1147
1090 /**************************************************************************** 1148 /****************************************************************************
1091 * BIOS Config Pages 1149 * BIOS Config Pages
1092 ****************************************************************************/ 1150 ****************************************************************************/
1093 1151
1094 typedef struct _CONFIG_PAGE_BIOS_1 1152 typedef struct _CONFIG_PAGE_BIOS_1
1095 { 1153 {
1096 CONFIG_PAGE_HEADER Header; /* 00h */ 1154 CONFIG_PAGE_HEADER Header; /* 00h */
1097 U32 BiosOptions; /* 04h */ 1155 U32 BiosOptions; /* 04h */
1098 U32 IOCSettings; /* 08h */ 1156 U32 IOCSettings; /* 08h */
1099 U32 Reserved1; /* 0Ch */ 1157 U32 Reserved1; /* 0Ch */
1100 U32 DeviceSettings; /* 10h */ 1158 U32 DeviceSettings; /* 10h */
1101 U16 NumberOfDevices; /* 14h */ 1159 U16 NumberOfDevices; /* 14h */
1102 U8 ExpanderSpinup; /* 16h */ 1160 U8 ExpanderSpinup; /* 16h */
1103 U8 Reserved2; /* 17h */ 1161 U8 Reserved2; /* 17h */
1104 U16 IOTimeoutBlockDevicesNonRM; /* 18h */ 1162 U16 IOTimeoutBlockDevicesNonRM; /* 18h */
1105 U16 IOTimeoutSequential; /* 1Ah */ 1163 U16 IOTimeoutSequential; /* 1Ah */
1106 U16 IOTimeoutOther; /* 1Ch */ 1164 U16 IOTimeoutOther; /* 1Ch */
1107 U16 IOTimeoutBlockDevicesRM; /* 1Eh */ 1165 U16 IOTimeoutBlockDevicesRM; /* 1Eh */
1108 } CONFIG_PAGE_BIOS_1, MPI_POINTER PTR_CONFIG_PAGE_BIOS_1, 1166 } CONFIG_PAGE_BIOS_1, MPI_POINTER PTR_CONFIG_PAGE_BIOS_1,
1109 BIOSPage1_t, MPI_POINTER pBIOSPage1_t; 1167 BIOSPage1_t, MPI_POINTER pBIOSPage1_t;
1110 1168
1111 #define MPI_BIOSPAGE1_PAGEVERSION (0x03) 1169 #define MPI_BIOSPAGE1_PAGEVERSION (0x03)
1112 1170
1113 /* values for the BiosOptions field */ 1171 /* values for the BiosOptions field */
1114 #define MPI_BIOSPAGE1_OPTIONS_SPI_ENABLE (0x00000400) 1172 #define MPI_BIOSPAGE1_OPTIONS_SPI_ENABLE (0x00000400)
1115 #define MPI_BIOSPAGE1_OPTIONS_FC_ENABLE (0x00000200) 1173 #define MPI_BIOSPAGE1_OPTIONS_FC_ENABLE (0x00000200)
1116 #define MPI_BIOSPAGE1_OPTIONS_SAS_ENABLE (0x00000100) 1174 #define MPI_BIOSPAGE1_OPTIONS_SAS_ENABLE (0x00000100)
1117 #define MPI_BIOSPAGE1_OPTIONS_DISABLE_BIOS (0x00000001) 1175 #define MPI_BIOSPAGE1_OPTIONS_DISABLE_BIOS (0x00000001)
1118 1176
1119 /* values for the IOCSettings field */ 1177 /* values for the IOCSettings field */
1120 #define MPI_BIOSPAGE1_IOCSET_MASK_INITIAL_SPINUP_DELAY (0x0F000000) 1178 #define MPI_BIOSPAGE1_IOCSET_MASK_INITIAL_SPINUP_DELAY (0x0F000000)
1121 #define MPI_BIOSPAGE1_IOCSET_SHIFT_INITIAL_SPINUP_DELAY (24) 1179 #define MPI_BIOSPAGE1_IOCSET_SHIFT_INITIAL_SPINUP_DELAY (24)
1122 1180
1123 #define MPI_BIOSPAGE1_IOCSET_MASK_PORT_ENABLE_DELAY (0x00F00000) 1181 #define MPI_BIOSPAGE1_IOCSET_MASK_PORT_ENABLE_DELAY (0x00F00000)
1124 #define MPI_BIOSPAGE1_IOCSET_SHIFT_PORT_ENABLE_DELAY (20) 1182 #define MPI_BIOSPAGE1_IOCSET_SHIFT_PORT_ENABLE_DELAY (20)
1125 1183
1126 #define MPI_BIOSPAGE1_IOCSET_AUTO_PORT_ENABLE (0x00080000) 1184 #define MPI_BIOSPAGE1_IOCSET_AUTO_PORT_ENABLE (0x00080000)
1127 #define MPI_BIOSPAGE1_IOCSET_DIRECT_ATTACH_SPINUP_MODE (0x00040000) 1185 #define MPI_BIOSPAGE1_IOCSET_DIRECT_ATTACH_SPINUP_MODE (0x00040000)
1128 1186
1129 #define MPI_BIOSPAGE1_IOCSET_MASK_BOOT_PREFERENCE (0x00030000) 1187 #define MPI_BIOSPAGE1_IOCSET_MASK_BOOT_PREFERENCE (0x00030000)
1130 #define MPI_BIOSPAGE1_IOCSET_ENCLOSURE_SLOT_BOOT (0x00000000) 1188 #define MPI_BIOSPAGE1_IOCSET_ENCLOSURE_SLOT_BOOT (0x00000000)
1131 #define MPI_BIOSPAGE1_IOCSET_SAS_ADDRESS_BOOT (0x00010000) 1189 #define MPI_BIOSPAGE1_IOCSET_SAS_ADDRESS_BOOT (0x00010000)
1132 1190
1133 #define MPI_BIOSPAGE1_IOCSET_MASK_MAX_TARGET_SPIN_UP (0x0000F000) 1191 #define MPI_BIOSPAGE1_IOCSET_MASK_MAX_TARGET_SPIN_UP (0x0000F000)
1134 #define MPI_BIOSPAGE1_IOCSET_SHIFT_MAX_TARGET_SPIN_UP (12) 1192 #define MPI_BIOSPAGE1_IOCSET_SHIFT_MAX_TARGET_SPIN_UP (12)
1135 1193
1136 #define MPI_BIOSPAGE1_IOCSET_MASK_SPINUP_DELAY (0x00000F00) 1194 #define MPI_BIOSPAGE1_IOCSET_MASK_SPINUP_DELAY (0x00000F00)
1137 #define MPI_BIOSPAGE1_IOCSET_SHIFT_SPINUP_DELAY (8) 1195 #define MPI_BIOSPAGE1_IOCSET_SHIFT_SPINUP_DELAY (8)
1138 1196
1139 #define MPI_BIOSPAGE1_IOCSET_MASK_RM_SETTING (0x000000C0) 1197 #define MPI_BIOSPAGE1_IOCSET_MASK_RM_SETTING (0x000000C0)
1140 #define MPI_BIOSPAGE1_IOCSET_NONE_RM_SETTING (0x00000000) 1198 #define MPI_BIOSPAGE1_IOCSET_NONE_RM_SETTING (0x00000000)
1141 #define MPI_BIOSPAGE1_IOCSET_BOOT_RM_SETTING (0x00000040) 1199 #define MPI_BIOSPAGE1_IOCSET_BOOT_RM_SETTING (0x00000040)
1142 #define MPI_BIOSPAGE1_IOCSET_MEDIA_RM_SETTING (0x00000080) 1200 #define MPI_BIOSPAGE1_IOCSET_MEDIA_RM_SETTING (0x00000080)
1143 1201
1144 #define MPI_BIOSPAGE1_IOCSET_MASK_ADAPTER_SUPPORT (0x00000030) 1202 #define MPI_BIOSPAGE1_IOCSET_MASK_ADAPTER_SUPPORT (0x00000030)
1145 #define MPI_BIOSPAGE1_IOCSET_NO_SUPPORT (0x00000000) 1203 #define MPI_BIOSPAGE1_IOCSET_NO_SUPPORT (0x00000000)
1146 #define MPI_BIOSPAGE1_IOCSET_BIOS_SUPPORT (0x00000010) 1204 #define MPI_BIOSPAGE1_IOCSET_BIOS_SUPPORT (0x00000010)
1147 #define MPI_BIOSPAGE1_IOCSET_OS_SUPPORT (0x00000020) 1205 #define MPI_BIOSPAGE1_IOCSET_OS_SUPPORT (0x00000020)
1148 #define MPI_BIOSPAGE1_IOCSET_ALL_SUPPORT (0x00000030) 1206 #define MPI_BIOSPAGE1_IOCSET_ALL_SUPPORT (0x00000030)
1149 1207
1150 #define MPI_BIOSPAGE1_IOCSET_ALTERNATE_CHS (0x00000008) 1208 #define MPI_BIOSPAGE1_IOCSET_ALTERNATE_CHS (0x00000008)
1151 1209
1152 /* values for the DeviceSettings field */ 1210 /* values for the DeviceSettings field */
1153 #define MPI_BIOSPAGE1_DEVSET_DISABLE_SEQ_LUN (0x00000008) 1211 #define MPI_BIOSPAGE1_DEVSET_DISABLE_SEQ_LUN (0x00000008)
1154 #define MPI_BIOSPAGE1_DEVSET_DISABLE_RM_LUN (0x00000004) 1212 #define MPI_BIOSPAGE1_DEVSET_DISABLE_RM_LUN (0x00000004)
1155 #define MPI_BIOSPAGE1_DEVSET_DISABLE_NON_RM_LUN (0x00000002) 1213 #define MPI_BIOSPAGE1_DEVSET_DISABLE_NON_RM_LUN (0x00000002)
1156 #define MPI_BIOSPAGE1_DEVSET_DISABLE_OTHER_LUN (0x00000001) 1214 #define MPI_BIOSPAGE1_DEVSET_DISABLE_OTHER_LUN (0x00000001)
1157 1215
1158 /* defines for the ExpanderSpinup field */ 1216 /* defines for the ExpanderSpinup field */
1159 #define MPI_BIOSPAGE1_EXPSPINUP_MASK_MAX_TARGET (0xF0) 1217 #define MPI_BIOSPAGE1_EXPSPINUP_MASK_MAX_TARGET (0xF0)
1160 #define MPI_BIOSPAGE1_EXPSPINUP_SHIFT_MAX_TARGET (4) 1218 #define MPI_BIOSPAGE1_EXPSPINUP_SHIFT_MAX_TARGET (4)
1161 #define MPI_BIOSPAGE1_EXPSPINUP_MASK_DELAY (0x0F) 1219 #define MPI_BIOSPAGE1_EXPSPINUP_MASK_DELAY (0x0F)
1162 1220
1163 typedef struct _MPI_BOOT_DEVICE_ADAPTER_ORDER 1221 typedef struct _MPI_BOOT_DEVICE_ADAPTER_ORDER
1164 { 1222 {
1165 U32 Reserved1; /* 00h */ 1223 U32 Reserved1; /* 00h */
1166 U32 Reserved2; /* 04h */ 1224 U32 Reserved2; /* 04h */
1167 U32 Reserved3; /* 08h */ 1225 U32 Reserved3; /* 08h */
1168 U32 Reserved4; /* 0Ch */ 1226 U32 Reserved4; /* 0Ch */
1169 U32 Reserved5; /* 10h */ 1227 U32 Reserved5; /* 10h */
1170 U32 Reserved6; /* 14h */ 1228 U32 Reserved6; /* 14h */
1171 U32 Reserved7; /* 18h */ 1229 U32 Reserved7; /* 18h */
1172 U32 Reserved8; /* 1Ch */ 1230 U32 Reserved8; /* 1Ch */
1173 U32 Reserved9; /* 20h */ 1231 U32 Reserved9; /* 20h */
1174 U32 Reserved10; /* 24h */ 1232 U32 Reserved10; /* 24h */
1175 U32 Reserved11; /* 28h */ 1233 U32 Reserved11; /* 28h */
1176 U32 Reserved12; /* 2Ch */ 1234 U32 Reserved12; /* 2Ch */
1177 U32 Reserved13; /* 30h */ 1235 U32 Reserved13; /* 30h */
1178 U32 Reserved14; /* 34h */ 1236 U32 Reserved14; /* 34h */
1179 U32 Reserved15; /* 38h */ 1237 U32 Reserved15; /* 38h */
1180 U32 Reserved16; /* 3Ch */ 1238 U32 Reserved16; /* 3Ch */
1181 U32 Reserved17; /* 40h */ 1239 U32 Reserved17; /* 40h */
1182 } MPI_BOOT_DEVICE_ADAPTER_ORDER, MPI_POINTER PTR_MPI_BOOT_DEVICE_ADAPTER_ORDER; 1240 } MPI_BOOT_DEVICE_ADAPTER_ORDER, MPI_POINTER PTR_MPI_BOOT_DEVICE_ADAPTER_ORDER;
1183 1241
1184 typedef struct _MPI_BOOT_DEVICE_ADAPTER_NUMBER 1242 typedef struct _MPI_BOOT_DEVICE_ADAPTER_NUMBER
1185 { 1243 {
1186 U8 TargetID; /* 00h */ 1244 U8 TargetID; /* 00h */
1187 U8 Bus; /* 01h */ 1245 U8 Bus; /* 01h */
1188 U8 AdapterNumber; /* 02h */ 1246 U8 AdapterNumber; /* 02h */
1189 U8 Reserved1; /* 03h */ 1247 U8 Reserved1; /* 03h */
1190 U32 Reserved2; /* 04h */ 1248 U32 Reserved2; /* 04h */
1191 U32 Reserved3; /* 08h */ 1249 U32 Reserved3; /* 08h */
1192 U32 Reserved4; /* 0Ch */ 1250 U32 Reserved4; /* 0Ch */
1193 U8 LUN[8]; /* 10h */ 1251 U8 LUN[8]; /* 10h */
1194 U32 Reserved5; /* 18h */ 1252 U32 Reserved5; /* 18h */
1195 U32 Reserved6; /* 1Ch */ 1253 U32 Reserved6; /* 1Ch */
1196 U32 Reserved7; /* 20h */ 1254 U32 Reserved7; /* 20h */
1197 U32 Reserved8; /* 24h */ 1255 U32 Reserved8; /* 24h */
1198 U32 Reserved9; /* 28h */ 1256 U32 Reserved9; /* 28h */
1199 U32 Reserved10; /* 2Ch */ 1257 U32 Reserved10; /* 2Ch */
1200 U32 Reserved11; /* 30h */ 1258 U32 Reserved11; /* 30h */
1201 U32 Reserved12; /* 34h */ 1259 U32 Reserved12; /* 34h */
1202 U32 Reserved13; /* 38h */ 1260 U32 Reserved13; /* 38h */
1203 U32 Reserved14; /* 3Ch */ 1261 U32 Reserved14; /* 3Ch */
1204 U32 Reserved15; /* 40h */ 1262 U32 Reserved15; /* 40h */
1205 } MPI_BOOT_DEVICE_ADAPTER_NUMBER, MPI_POINTER PTR_MPI_BOOT_DEVICE_ADAPTER_NUMBER; 1263 } MPI_BOOT_DEVICE_ADAPTER_NUMBER, MPI_POINTER PTR_MPI_BOOT_DEVICE_ADAPTER_NUMBER;
1206 1264
1207 typedef struct _MPI_BOOT_DEVICE_PCI_ADDRESS 1265 typedef struct _MPI_BOOT_DEVICE_PCI_ADDRESS
1208 { 1266 {
1209 U8 TargetID; /* 00h */ 1267 U8 TargetID; /* 00h */
1210 U8 Bus; /* 01h */ 1268 U8 Bus; /* 01h */
1211 U16 PCIAddress; /* 02h */ 1269 U16 PCIAddress; /* 02h */
1212 U32 Reserved1; /* 04h */ 1270 U32 Reserved1; /* 04h */
1213 U32 Reserved2; /* 08h */ 1271 U32 Reserved2; /* 08h */
1214 U32 Reserved3; /* 0Ch */ 1272 U32 Reserved3; /* 0Ch */
1215 U8 LUN[8]; /* 10h */ 1273 U8 LUN[8]; /* 10h */
1216 U32 Reserved4; /* 18h */ 1274 U32 Reserved4; /* 18h */
1217 U32 Reserved5; /* 1Ch */ 1275 U32 Reserved5; /* 1Ch */
1218 U32 Reserved6; /* 20h */ 1276 U32 Reserved6; /* 20h */
1219 U32 Reserved7; /* 24h */ 1277 U32 Reserved7; /* 24h */
1220 U32 Reserved8; /* 28h */ 1278 U32 Reserved8; /* 28h */
1221 U32 Reserved9; /* 2Ch */ 1279 U32 Reserved9; /* 2Ch */
1222 U32 Reserved10; /* 30h */ 1280 U32 Reserved10; /* 30h */
1223 U32 Reserved11; /* 34h */ 1281 U32 Reserved11; /* 34h */
1224 U32 Reserved12; /* 38h */ 1282 U32 Reserved12; /* 38h */
1225 U32 Reserved13; /* 3Ch */ 1283 U32 Reserved13; /* 3Ch */
1226 U32 Reserved14; /* 40h */ 1284 U32 Reserved14; /* 40h */
1227 } MPI_BOOT_DEVICE_PCI_ADDRESS, MPI_POINTER PTR_MPI_BOOT_DEVICE_PCI_ADDRESS; 1285 } MPI_BOOT_DEVICE_PCI_ADDRESS, MPI_POINTER PTR_MPI_BOOT_DEVICE_PCI_ADDRESS;
1228 1286
1229 typedef struct _MPI_BOOT_DEVICE_SLOT_NUMBER 1287 typedef struct _MPI_BOOT_DEVICE_SLOT_NUMBER
1230 { 1288 {
1231 U8 TargetID; /* 00h */ 1289 U8 TargetID; /* 00h */
1232 U8 Bus; /* 01h */ 1290 U8 Bus; /* 01h */
1233 U8 PCISlotNumber; /* 02h */ 1291 U8 PCISlotNumber; /* 02h */
1234 U8 Reserved1; /* 03h */ 1292 U8 Reserved1; /* 03h */
1235 U32 Reserved2; /* 04h */ 1293 U32 Reserved2; /* 04h */
1236 U32 Reserved3; /* 08h */ 1294 U32 Reserved3; /* 08h */
1237 U32 Reserved4; /* 0Ch */ 1295 U32 Reserved4; /* 0Ch */
1238 U8 LUN[8]; /* 10h */ 1296 U8 LUN[8]; /* 10h */
1239 U32 Reserved5; /* 18h */ 1297 U32 Reserved5; /* 18h */
1240 U32 Reserved6; /* 1Ch */ 1298 U32 Reserved6; /* 1Ch */
1241 U32 Reserved7; /* 20h */ 1299 U32 Reserved7; /* 20h */
1242 U32 Reserved8; /* 24h */ 1300 U32 Reserved8; /* 24h */
1243 U32 Reserved9; /* 28h */ 1301 U32 Reserved9; /* 28h */
1244 U32 Reserved10; /* 2Ch */ 1302 U32 Reserved10; /* 2Ch */
1245 U32 Reserved11; /* 30h */ 1303 U32 Reserved11; /* 30h */
1246 U32 Reserved12; /* 34h */ 1304 U32 Reserved12; /* 34h */
1247 U32 Reserved13; /* 38h */ 1305 U32 Reserved13; /* 38h */
1248 U32 Reserved14; /* 3Ch */ 1306 U32 Reserved14; /* 3Ch */
1249 U32 Reserved15; /* 40h */ 1307 U32 Reserved15; /* 40h */
1250 } MPI_BOOT_DEVICE_PCI_SLOT_NUMBER, MPI_POINTER PTR_MPI_BOOT_DEVICE_PCI_SLOT_NUMBER; 1308 } MPI_BOOT_DEVICE_PCI_SLOT_NUMBER, MPI_POINTER PTR_MPI_BOOT_DEVICE_PCI_SLOT_NUMBER;
1251 1309
1252 typedef struct _MPI_BOOT_DEVICE_FC_WWN 1310 typedef struct _MPI_BOOT_DEVICE_FC_WWN
1253 { 1311 {
1254 U64 WWPN; /* 00h */ 1312 U64 WWPN; /* 00h */
1255 U32 Reserved1; /* 08h */ 1313 U32 Reserved1; /* 08h */
1256 U32 Reserved2; /* 0Ch */ 1314 U32 Reserved2; /* 0Ch */
1257 U8 LUN[8]; /* 10h */ 1315 U8 LUN[8]; /* 10h */
1258 U32 Reserved3; /* 18h */ 1316 U32 Reserved3; /* 18h */
1259 U32 Reserved4; /* 1Ch */ 1317 U32 Reserved4; /* 1Ch */
1260 U32 Reserved5; /* 20h */ 1318 U32 Reserved5; /* 20h */
1261 U32 Reserved6; /* 24h */ 1319 U32 Reserved6; /* 24h */
1262 U32 Reserved7; /* 28h */ 1320 U32 Reserved7; /* 28h */
1263 U32 Reserved8; /* 2Ch */ 1321 U32 Reserved8; /* 2Ch */
1264 U32 Reserved9; /* 30h */ 1322 U32 Reserved9; /* 30h */
1265 U32 Reserved10; /* 34h */ 1323 U32 Reserved10; /* 34h */
1266 U32 Reserved11; /* 38h */ 1324 U32 Reserved11; /* 38h */
1267 U32 Reserved12; /* 3Ch */ 1325 U32 Reserved12; /* 3Ch */
1268 U32 Reserved13; /* 40h */ 1326 U32 Reserved13; /* 40h */
1269 } MPI_BOOT_DEVICE_FC_WWN, MPI_POINTER PTR_MPI_BOOT_DEVICE_FC_WWN; 1327 } MPI_BOOT_DEVICE_FC_WWN, MPI_POINTER PTR_MPI_BOOT_DEVICE_FC_WWN;
1270 1328
1271 typedef struct _MPI_BOOT_DEVICE_SAS_WWN 1329 typedef struct _MPI_BOOT_DEVICE_SAS_WWN
1272 { 1330 {
1273 U64 SASAddress; /* 00h */ 1331 U64 SASAddress; /* 00h */
1274 U32 Reserved1; /* 08h */ 1332 U32 Reserved1; /* 08h */
1275 U32 Reserved2; /* 0Ch */ 1333 U32 Reserved2; /* 0Ch */
1276 U8 LUN[8]; /* 10h */ 1334 U8 LUN[8]; /* 10h */
1277 U32 Reserved3; /* 18h */ 1335 U32 Reserved3; /* 18h */
1278 U32 Reserved4; /* 1Ch */ 1336 U32 Reserved4; /* 1Ch */
1279 U32 Reserved5; /* 20h */ 1337 U32 Reserved5; /* 20h */
1280 U32 Reserved6; /* 24h */ 1338 U32 Reserved6; /* 24h */
1281 U32 Reserved7; /* 28h */ 1339 U32 Reserved7; /* 28h */
1282 U32 Reserved8; /* 2Ch */ 1340 U32 Reserved8; /* 2Ch */
1283 U32 Reserved9; /* 30h */ 1341 U32 Reserved9; /* 30h */
1284 U32 Reserved10; /* 34h */ 1342 U32 Reserved10; /* 34h */
1285 U32 Reserved11; /* 38h */ 1343 U32 Reserved11; /* 38h */
1286 U32 Reserved12; /* 3Ch */ 1344 U32 Reserved12; /* 3Ch */
1287 U32 Reserved13; /* 40h */ 1345 U32 Reserved13; /* 40h */
1288 } MPI_BOOT_DEVICE_SAS_WWN, MPI_POINTER PTR_MPI_BOOT_DEVICE_SAS_WWN; 1346 } MPI_BOOT_DEVICE_SAS_WWN, MPI_POINTER PTR_MPI_BOOT_DEVICE_SAS_WWN;
1289 1347
1290 typedef struct _MPI_BOOT_DEVICE_ENCLOSURE_SLOT 1348 typedef struct _MPI_BOOT_DEVICE_ENCLOSURE_SLOT
1291 { 1349 {
1292 U64 EnclosureLogicalID; /* 00h */ 1350 U64 EnclosureLogicalID; /* 00h */
1293 U32 Reserved1; /* 08h */ 1351 U32 Reserved1; /* 08h */
1294 U32 Reserved2; /* 0Ch */ 1352 U32 Reserved2; /* 0Ch */
1295 U8 LUN[8]; /* 10h */ 1353 U8 LUN[8]; /* 10h */
1296 U16 SlotNumber; /* 18h */ 1354 U16 SlotNumber; /* 18h */
1297 U16 Reserved3; /* 1Ah */ 1355 U16 Reserved3; /* 1Ah */
1298 U32 Reserved4; /* 1Ch */ 1356 U32 Reserved4; /* 1Ch */
1299 U32 Reserved5; /* 20h */ 1357 U32 Reserved5; /* 20h */
1300 U32 Reserved6; /* 24h */ 1358 U32 Reserved6; /* 24h */
1301 U32 Reserved7; /* 28h */ 1359 U32 Reserved7; /* 28h */
1302 U32 Reserved8; /* 2Ch */ 1360 U32 Reserved8; /* 2Ch */
1303 U32 Reserved9; /* 30h */ 1361 U32 Reserved9; /* 30h */
1304 U32 Reserved10; /* 34h */ 1362 U32 Reserved10; /* 34h */
1305 U32 Reserved11; /* 38h */ 1363 U32 Reserved11; /* 38h */
1306 U32 Reserved12; /* 3Ch */ 1364 U32 Reserved12; /* 3Ch */
1307 U32 Reserved13; /* 40h */ 1365 U32 Reserved13; /* 40h */
1308 } MPI_BOOT_DEVICE_ENCLOSURE_SLOT, 1366 } MPI_BOOT_DEVICE_ENCLOSURE_SLOT,
1309 MPI_POINTER PTR_MPI_BOOT_DEVICE_ENCLOSURE_SLOT; 1367 MPI_POINTER PTR_MPI_BOOT_DEVICE_ENCLOSURE_SLOT;
1310 1368
1311 typedef union _MPI_BIOSPAGE2_BOOT_DEVICE 1369 typedef union _MPI_BIOSPAGE2_BOOT_DEVICE
1312 { 1370 {
1313 MPI_BOOT_DEVICE_ADAPTER_ORDER AdapterOrder; 1371 MPI_BOOT_DEVICE_ADAPTER_ORDER AdapterOrder;
1314 MPI_BOOT_DEVICE_ADAPTER_NUMBER AdapterNumber; 1372 MPI_BOOT_DEVICE_ADAPTER_NUMBER AdapterNumber;
1315 MPI_BOOT_DEVICE_PCI_ADDRESS PCIAddress; 1373 MPI_BOOT_DEVICE_PCI_ADDRESS PCIAddress;
1316 MPI_BOOT_DEVICE_PCI_SLOT_NUMBER PCISlotNumber; 1374 MPI_BOOT_DEVICE_PCI_SLOT_NUMBER PCISlotNumber;
1317 MPI_BOOT_DEVICE_FC_WWN FcWwn; 1375 MPI_BOOT_DEVICE_FC_WWN FcWwn;
1318 MPI_BOOT_DEVICE_SAS_WWN SasWwn; 1376 MPI_BOOT_DEVICE_SAS_WWN SasWwn;
1319 MPI_BOOT_DEVICE_ENCLOSURE_SLOT EnclosureSlot; 1377 MPI_BOOT_DEVICE_ENCLOSURE_SLOT EnclosureSlot;
1320 } MPI_BIOSPAGE2_BOOT_DEVICE, MPI_POINTER PTR_MPI_BIOSPAGE2_BOOT_DEVICE; 1378 } MPI_BIOSPAGE2_BOOT_DEVICE, MPI_POINTER PTR_MPI_BIOSPAGE2_BOOT_DEVICE;
1321 1379
1322 typedef struct _CONFIG_PAGE_BIOS_2 1380 typedef struct _CONFIG_PAGE_BIOS_2
1323 { 1381 {
1324 CONFIG_PAGE_HEADER Header; /* 00h */ 1382 CONFIG_PAGE_HEADER Header; /* 00h */
1325 U32 Reserved1; /* 04h */ 1383 U32 Reserved1; /* 04h */
1326 U32 Reserved2; /* 08h */ 1384 U32 Reserved2; /* 08h */
1327 U32 Reserved3; /* 0Ch */ 1385 U32 Reserved3; /* 0Ch */
1328 U32 Reserved4; /* 10h */ 1386 U32 Reserved4; /* 10h */
1329 U32 Reserved5; /* 14h */ 1387 U32 Reserved5; /* 14h */
1330 U32 Reserved6; /* 18h */ 1388 U32 Reserved6; /* 18h */
1331 U8 BootDeviceForm; /* 1Ch */ 1389 U8 BootDeviceForm; /* 1Ch */
1332 U8 PrevBootDeviceForm; /* 1Ch */ 1390 U8 PrevBootDeviceForm; /* 1Ch */
1333 U16 Reserved8; /* 1Eh */ 1391 U16 Reserved8; /* 1Eh */
1334 MPI_BIOSPAGE2_BOOT_DEVICE BootDevice; /* 20h */ 1392 MPI_BIOSPAGE2_BOOT_DEVICE BootDevice; /* 20h */
1335 } CONFIG_PAGE_BIOS_2, MPI_POINTER PTR_CONFIG_PAGE_BIOS_2, 1393 } CONFIG_PAGE_BIOS_2, MPI_POINTER PTR_CONFIG_PAGE_BIOS_2,
1336 BIOSPage2_t, MPI_POINTER pBIOSPage2_t; 1394 BIOSPage2_t, MPI_POINTER pBIOSPage2_t;
1337 1395
1338 #define MPI_BIOSPAGE2_PAGEVERSION (0x02) 1396 #define MPI_BIOSPAGE2_PAGEVERSION (0x02)
1339 1397
1340 #define MPI_BIOSPAGE2_FORM_MASK (0x0F) 1398 #define MPI_BIOSPAGE2_FORM_MASK (0x0F)
1341 #define MPI_BIOSPAGE2_FORM_ADAPTER_ORDER (0x00) 1399 #define MPI_BIOSPAGE2_FORM_ADAPTER_ORDER (0x00)
1342 #define MPI_BIOSPAGE2_FORM_ADAPTER_NUMBER (0x01) 1400 #define MPI_BIOSPAGE2_FORM_ADAPTER_NUMBER (0x01)
1343 #define MPI_BIOSPAGE2_FORM_PCI_ADDRESS (0x02) 1401 #define MPI_BIOSPAGE2_FORM_PCI_ADDRESS (0x02)
1344 #define MPI_BIOSPAGE2_FORM_PCI_SLOT_NUMBER (0x03) 1402 #define MPI_BIOSPAGE2_FORM_PCI_SLOT_NUMBER (0x03)
1345 #define MPI_BIOSPAGE2_FORM_FC_WWN (0x04) 1403 #define MPI_BIOSPAGE2_FORM_FC_WWN (0x04)
1346 #define MPI_BIOSPAGE2_FORM_SAS_WWN (0x05) 1404 #define MPI_BIOSPAGE2_FORM_SAS_WWN (0x05)
1347 #define MPI_BIOSPAGE2_FORM_ENCLOSURE_SLOT (0x06) 1405 #define MPI_BIOSPAGE2_FORM_ENCLOSURE_SLOT (0x06)
1348 1406
1349 1407
1350 /**************************************************************************** 1408 /****************************************************************************
1351 * SCSI Port Config Pages 1409 * SCSI Port Config Pages
1352 ****************************************************************************/ 1410 ****************************************************************************/
1353 1411
1354 typedef struct _CONFIG_PAGE_SCSI_PORT_0 1412 typedef struct _CONFIG_PAGE_SCSI_PORT_0
1355 { 1413 {
1356 CONFIG_PAGE_HEADER Header; /* 00h */ 1414 CONFIG_PAGE_HEADER Header; /* 00h */
1357 U32 Capabilities; /* 04h */ 1415 U32 Capabilities; /* 04h */
1358 U32 PhysicalInterface; /* 08h */ 1416 U32 PhysicalInterface; /* 08h */
1359 } CONFIG_PAGE_SCSI_PORT_0, MPI_POINTER PTR_CONFIG_PAGE_SCSI_PORT_0, 1417 } CONFIG_PAGE_SCSI_PORT_0, MPI_POINTER PTR_CONFIG_PAGE_SCSI_PORT_0,
1360 SCSIPortPage0_t, MPI_POINTER pSCSIPortPage0_t; 1418 SCSIPortPage0_t, MPI_POINTER pSCSIPortPage0_t;
1361 1419
1362 #define MPI_SCSIPORTPAGE0_PAGEVERSION (0x02) 1420 #define MPI_SCSIPORTPAGE0_PAGEVERSION (0x02)
1363 1421
1364 #define MPI_SCSIPORTPAGE0_CAP_IU (0x00000001) 1422 #define MPI_SCSIPORTPAGE0_CAP_IU (0x00000001)
1365 #define MPI_SCSIPORTPAGE0_CAP_DT (0x00000002) 1423 #define MPI_SCSIPORTPAGE0_CAP_DT (0x00000002)
1366 #define MPI_SCSIPORTPAGE0_CAP_QAS (0x00000004) 1424 #define MPI_SCSIPORTPAGE0_CAP_QAS (0x00000004)
1367 #define MPI_SCSIPORTPAGE0_CAP_MIN_SYNC_PERIOD_MASK (0x0000FF00) 1425 #define MPI_SCSIPORTPAGE0_CAP_MIN_SYNC_PERIOD_MASK (0x0000FF00)
1368 #define MPI_SCSIPORTPAGE0_SYNC_ASYNC (0x00) 1426 #define MPI_SCSIPORTPAGE0_SYNC_ASYNC (0x00)
1369 #define MPI_SCSIPORTPAGE0_SYNC_5 (0x32) 1427 #define MPI_SCSIPORTPAGE0_SYNC_5 (0x32)
1370 #define MPI_SCSIPORTPAGE0_SYNC_10 (0x19) 1428 #define MPI_SCSIPORTPAGE0_SYNC_10 (0x19)
1371 #define MPI_SCSIPORTPAGE0_SYNC_20 (0x0C) 1429 #define MPI_SCSIPORTPAGE0_SYNC_20 (0x0C)
1372 #define MPI_SCSIPORTPAGE0_SYNC_33_33 (0x0B) 1430 #define MPI_SCSIPORTPAGE0_SYNC_33_33 (0x0B)
1373 #define MPI_SCSIPORTPAGE0_SYNC_40 (0x0A) 1431 #define MPI_SCSIPORTPAGE0_SYNC_40 (0x0A)
1374 #define MPI_SCSIPORTPAGE0_SYNC_80 (0x09) 1432 #define MPI_SCSIPORTPAGE0_SYNC_80 (0x09)
1375 #define MPI_SCSIPORTPAGE0_SYNC_160 (0x08) 1433 #define MPI_SCSIPORTPAGE0_SYNC_160 (0x08)
1376 #define MPI_SCSIPORTPAGE0_SYNC_UNKNOWN (0xFF) 1434 #define MPI_SCSIPORTPAGE0_SYNC_UNKNOWN (0xFF)
1377 1435
1378 #define MPI_SCSIPORTPAGE0_CAP_SHIFT_MIN_SYNC_PERIOD (8) 1436 #define MPI_SCSIPORTPAGE0_CAP_SHIFT_MIN_SYNC_PERIOD (8)
1379 #define MPI_SCSIPORTPAGE0_CAP_GET_MIN_SYNC_PERIOD(Cap) \ 1437 #define MPI_SCSIPORTPAGE0_CAP_GET_MIN_SYNC_PERIOD(Cap) \
1380 ( ((Cap) & MPI_SCSIPORTPAGE0_CAP_MIN_SYNC_PERIOD_MASK) \ 1438 ( ((Cap) & MPI_SCSIPORTPAGE0_CAP_MIN_SYNC_PERIOD_MASK) \
1381 >> MPI_SCSIPORTPAGE0_CAP_SHIFT_MIN_SYNC_PERIOD \ 1439 >> MPI_SCSIPORTPAGE0_CAP_SHIFT_MIN_SYNC_PERIOD \
1382 ) 1440 )
1383 #define MPI_SCSIPORTPAGE0_CAP_MAX_SYNC_OFFSET_MASK (0x00FF0000) 1441 #define MPI_SCSIPORTPAGE0_CAP_MAX_SYNC_OFFSET_MASK (0x00FF0000)
1384 #define MPI_SCSIPORTPAGE0_CAP_SHIFT_MAX_SYNC_OFFSET (16) 1442 #define MPI_SCSIPORTPAGE0_CAP_SHIFT_MAX_SYNC_OFFSET (16)
1385 #define MPI_SCSIPORTPAGE0_CAP_GET_MAX_SYNC_OFFSET(Cap) \ 1443 #define MPI_SCSIPORTPAGE0_CAP_GET_MAX_SYNC_OFFSET(Cap) \
1386 ( ((Cap) & MPI_SCSIPORTPAGE0_CAP_MAX_SYNC_OFFSET_MASK) \ 1444 ( ((Cap) & MPI_SCSIPORTPAGE0_CAP_MAX_SYNC_OFFSET_MASK) \
1387 >> MPI_SCSIPORTPAGE0_CAP_SHIFT_MAX_SYNC_OFFSET \ 1445 >> MPI_SCSIPORTPAGE0_CAP_SHIFT_MAX_SYNC_OFFSET \
1388 ) 1446 )
1389 #define MPI_SCSIPORTPAGE0_CAP_IDP (0x08000000) 1447 #define MPI_SCSIPORTPAGE0_CAP_IDP (0x08000000)
1390 #define MPI_SCSIPORTPAGE0_CAP_WIDE (0x20000000) 1448 #define MPI_SCSIPORTPAGE0_CAP_WIDE (0x20000000)
1391 #define MPI_SCSIPORTPAGE0_CAP_AIP (0x80000000) 1449 #define MPI_SCSIPORTPAGE0_CAP_AIP (0x80000000)
1392 1450
1393 #define MPI_SCSIPORTPAGE0_PHY_SIGNAL_TYPE_MASK (0x00000003) 1451 #define MPI_SCSIPORTPAGE0_PHY_SIGNAL_TYPE_MASK (0x00000003)
1394 #define MPI_SCSIPORTPAGE0_PHY_SIGNAL_HVD (0x01) 1452 #define MPI_SCSIPORTPAGE0_PHY_SIGNAL_HVD (0x01)
1395 #define MPI_SCSIPORTPAGE0_PHY_SIGNAL_SE (0x02) 1453 #define MPI_SCSIPORTPAGE0_PHY_SIGNAL_SE (0x02)
1396 #define MPI_SCSIPORTPAGE0_PHY_SIGNAL_LVD (0x03) 1454 #define MPI_SCSIPORTPAGE0_PHY_SIGNAL_LVD (0x03)
1397 #define MPI_SCSIPORTPAGE0_PHY_MASK_CONNECTED_ID (0xFF000000) 1455 #define MPI_SCSIPORTPAGE0_PHY_MASK_CONNECTED_ID (0xFF000000)
1398 #define MPI_SCSIPORTPAGE0_PHY_SHIFT_CONNECTED_ID (24) 1456 #define MPI_SCSIPORTPAGE0_PHY_SHIFT_CONNECTED_ID (24)
1399 #define MPI_SCSIPORTPAGE0_PHY_BUS_FREE_CONNECTED_ID (0xFE) 1457 #define MPI_SCSIPORTPAGE0_PHY_BUS_FREE_CONNECTED_ID (0xFE)
1400 #define MPI_SCSIPORTPAGE0_PHY_UNKNOWN_CONNECTED_ID (0xFF) 1458 #define MPI_SCSIPORTPAGE0_PHY_UNKNOWN_CONNECTED_ID (0xFF)
1401 1459
1402 1460
1403 typedef struct _CONFIG_PAGE_SCSI_PORT_1 1461 typedef struct _CONFIG_PAGE_SCSI_PORT_1
1404 { 1462 {
1405 CONFIG_PAGE_HEADER Header; /* 00h */ 1463 CONFIG_PAGE_HEADER Header; /* 00h */
1406 U32 Configuration; /* 04h */ 1464 U32 Configuration; /* 04h */
1407 U32 OnBusTimerValue; /* 08h */ 1465 U32 OnBusTimerValue; /* 08h */
1408 U8 TargetConfig; /* 0Ch */ 1466 U8 TargetConfig; /* 0Ch */
1409 U8 Reserved1; /* 0Dh */ 1467 U8 Reserved1; /* 0Dh */
1410 U16 IDConfig; /* 0Eh */ 1468 U16 IDConfig; /* 0Eh */
1411 } CONFIG_PAGE_SCSI_PORT_1, MPI_POINTER PTR_CONFIG_PAGE_SCSI_PORT_1, 1469 } CONFIG_PAGE_SCSI_PORT_1, MPI_POINTER PTR_CONFIG_PAGE_SCSI_PORT_1,
1412 SCSIPortPage1_t, MPI_POINTER pSCSIPortPage1_t; 1470 SCSIPortPage1_t, MPI_POINTER pSCSIPortPage1_t;
1413 1471
1414 #define MPI_SCSIPORTPAGE1_PAGEVERSION (0x03) 1472 #define MPI_SCSIPORTPAGE1_PAGEVERSION (0x03)
1415 1473
1416 /* Configuration values */ 1474 /* Configuration values */
1417 #define MPI_SCSIPORTPAGE1_CFG_PORT_SCSI_ID_MASK (0x000000FF) 1475 #define MPI_SCSIPORTPAGE1_CFG_PORT_SCSI_ID_MASK (0x000000FF)
1418 #define MPI_SCSIPORTPAGE1_CFG_PORT_RESPONSE_ID_MASK (0xFFFF0000) 1476 #define MPI_SCSIPORTPAGE1_CFG_PORT_RESPONSE_ID_MASK (0xFFFF0000)
1419 #define MPI_SCSIPORTPAGE1_CFG_SHIFT_PORT_RESPONSE_ID (16) 1477 #define MPI_SCSIPORTPAGE1_CFG_SHIFT_PORT_RESPONSE_ID (16)
1420 1478
1421 /* TargetConfig values */ 1479 /* TargetConfig values */
1422 #define MPI_SCSIPORTPAGE1_TARGCONFIG_TARG_ONLY (0x01) 1480 #define MPI_SCSIPORTPAGE1_TARGCONFIG_TARG_ONLY (0x01)
1423 #define MPI_SCSIPORTPAGE1_TARGCONFIG_INIT_TARG (0x02) 1481 #define MPI_SCSIPORTPAGE1_TARGCONFIG_INIT_TARG (0x02)
1424 1482
1425 1483
1426 typedef struct _MPI_DEVICE_INFO 1484 typedef struct _MPI_DEVICE_INFO
1427 { 1485 {
1428 U8 Timeout; /* 00h */ 1486 U8 Timeout; /* 00h */
1429 U8 SyncFactor; /* 01h */ 1487 U8 SyncFactor; /* 01h */
1430 U16 DeviceFlags; /* 02h */ 1488 U16 DeviceFlags; /* 02h */
1431 } MPI_DEVICE_INFO, MPI_POINTER PTR_MPI_DEVICE_INFO, 1489 } MPI_DEVICE_INFO, MPI_POINTER PTR_MPI_DEVICE_INFO,
1432 MpiDeviceInfo_t, MPI_POINTER pMpiDeviceInfo_t; 1490 MpiDeviceInfo_t, MPI_POINTER pMpiDeviceInfo_t;
1433 1491
1434 typedef struct _CONFIG_PAGE_SCSI_PORT_2 1492 typedef struct _CONFIG_PAGE_SCSI_PORT_2
1435 { 1493 {
1436 CONFIG_PAGE_HEADER Header; /* 00h */ 1494 CONFIG_PAGE_HEADER Header; /* 00h */
1437 U32 PortFlags; /* 04h */ 1495 U32 PortFlags; /* 04h */
1438 U32 PortSettings; /* 08h */ 1496 U32 PortSettings; /* 08h */
1439 MPI_DEVICE_INFO DeviceSettings[16]; /* 0Ch */ 1497 MPI_DEVICE_INFO DeviceSettings[16]; /* 0Ch */
1440 } CONFIG_PAGE_SCSI_PORT_2, MPI_POINTER PTR_CONFIG_PAGE_SCSI_PORT_2, 1498 } CONFIG_PAGE_SCSI_PORT_2, MPI_POINTER PTR_CONFIG_PAGE_SCSI_PORT_2,
1441 SCSIPortPage2_t, MPI_POINTER pSCSIPortPage2_t; 1499 SCSIPortPage2_t, MPI_POINTER pSCSIPortPage2_t;
1442 1500
1443 #define MPI_SCSIPORTPAGE2_PAGEVERSION (0x02) 1501 #define MPI_SCSIPORTPAGE2_PAGEVERSION (0x02)
1444 1502
1445 /* PortFlags values */ 1503 /* PortFlags values */
1446 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_SCAN_HIGH_TO_LOW (0x00000001) 1504 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_SCAN_HIGH_TO_LOW (0x00000001)
1447 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_AVOID_SCSI_RESET (0x00000004) 1505 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_AVOID_SCSI_RESET (0x00000004)
1448 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_ALTERNATE_CHS (0x00000008) 1506 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_ALTERNATE_CHS (0x00000008)
1449 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_TERMINATION_DISABLE (0x00000010) 1507 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_TERMINATION_DISABLE (0x00000010)
1450 1508
1451 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_DV_MASK (0x00000060) 1509 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_DV_MASK (0x00000060)
1452 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_FULL_DV (0x00000000) 1510 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_FULL_DV (0x00000000)
1453 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_BASIC_DV_ONLY (0x00000020) 1511 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_BASIC_DV_ONLY (0x00000020)
1454 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_OFF_DV (0x00000060) 1512 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_OFF_DV (0x00000060)
1455 1513
1456 1514
1457 /* PortSettings values */ 1515 /* PortSettings values */
1458 #define MPI_SCSIPORTPAGE2_PORT_HOST_ID_MASK (0x0000000F) 1516 #define MPI_SCSIPORTPAGE2_PORT_HOST_ID_MASK (0x0000000F)
1459 #define MPI_SCSIPORTPAGE2_PORT_MASK_INIT_HBA (0x00000030) 1517 #define MPI_SCSIPORTPAGE2_PORT_MASK_INIT_HBA (0x00000030)
1460 #define MPI_SCSIPORTPAGE2_PORT_DISABLE_INIT_HBA (0x00000000) 1518 #define MPI_SCSIPORTPAGE2_PORT_DISABLE_INIT_HBA (0x00000000)
1461 #define MPI_SCSIPORTPAGE2_PORT_BIOS_INIT_HBA (0x00000010) 1519 #define MPI_SCSIPORTPAGE2_PORT_BIOS_INIT_HBA (0x00000010)
1462 #define MPI_SCSIPORTPAGE2_PORT_OS_INIT_HBA (0x00000020) 1520 #define MPI_SCSIPORTPAGE2_PORT_OS_INIT_HBA (0x00000020)
1463 #define MPI_SCSIPORTPAGE2_PORT_BIOS_OS_INIT_HBA (0x00000030) 1521 #define MPI_SCSIPORTPAGE2_PORT_BIOS_OS_INIT_HBA (0x00000030)
1464 #define MPI_SCSIPORTPAGE2_PORT_REMOVABLE_MEDIA (0x000000C0) 1522 #define MPI_SCSIPORTPAGE2_PORT_REMOVABLE_MEDIA (0x000000C0)
1465 #define MPI_SCSIPORTPAGE2_PORT_RM_NONE (0x00000000) 1523 #define MPI_SCSIPORTPAGE2_PORT_RM_NONE (0x00000000)
1466 #define MPI_SCSIPORTPAGE2_PORT_RM_BOOT_ONLY (0x00000040) 1524 #define MPI_SCSIPORTPAGE2_PORT_RM_BOOT_ONLY (0x00000040)
1467 #define MPI_SCSIPORTPAGE2_PORT_RM_WITH_MEDIA (0x00000080) 1525 #define MPI_SCSIPORTPAGE2_PORT_RM_WITH_MEDIA (0x00000080)
1468 #define MPI_SCSIPORTPAGE2_PORT_SPINUP_DELAY_MASK (0x00000F00) 1526 #define MPI_SCSIPORTPAGE2_PORT_SPINUP_DELAY_MASK (0x00000F00)
1469 #define MPI_SCSIPORTPAGE2_PORT_SHIFT_SPINUP_DELAY (8) 1527 #define MPI_SCSIPORTPAGE2_PORT_SHIFT_SPINUP_DELAY (8)
1470 #define MPI_SCSIPORTPAGE2_PORT_MASK_NEGO_MASTER_SETTINGS (0x00003000) 1528 #define MPI_SCSIPORTPAGE2_PORT_MASK_NEGO_MASTER_SETTINGS (0x00003000)
1471 #define MPI_SCSIPORTPAGE2_PORT_NEGO_MASTER_SETTINGS (0x00000000) 1529 #define MPI_SCSIPORTPAGE2_PORT_NEGO_MASTER_SETTINGS (0x00000000)
1472 #define MPI_SCSIPORTPAGE2_PORT_NONE_MASTER_SETTINGS (0x00001000) 1530 #define MPI_SCSIPORTPAGE2_PORT_NONE_MASTER_SETTINGS (0x00001000)
1473 #define MPI_SCSIPORTPAGE2_PORT_ALL_MASTER_SETTINGS (0x00003000) 1531 #define MPI_SCSIPORTPAGE2_PORT_ALL_MASTER_SETTINGS (0x00003000)
1474 1532
1475 #define MPI_SCSIPORTPAGE2_DEVICE_DISCONNECT_ENABLE (0x0001) 1533 #define MPI_SCSIPORTPAGE2_DEVICE_DISCONNECT_ENABLE (0x0001)
1476 #define MPI_SCSIPORTPAGE2_DEVICE_ID_SCAN_ENABLE (0x0002) 1534 #define MPI_SCSIPORTPAGE2_DEVICE_ID_SCAN_ENABLE (0x0002)
1477 #define MPI_SCSIPORTPAGE2_DEVICE_LUN_SCAN_ENABLE (0x0004) 1535 #define MPI_SCSIPORTPAGE2_DEVICE_LUN_SCAN_ENABLE (0x0004)
1478 #define MPI_SCSIPORTPAGE2_DEVICE_TAG_QUEUE_ENABLE (0x0008) 1536 #define MPI_SCSIPORTPAGE2_DEVICE_TAG_QUEUE_ENABLE (0x0008)
1479 #define MPI_SCSIPORTPAGE2_DEVICE_WIDE_DISABLE (0x0010) 1537 #define MPI_SCSIPORTPAGE2_DEVICE_WIDE_DISABLE (0x0010)
1480 #define MPI_SCSIPORTPAGE2_DEVICE_BOOT_CHOICE (0x0020) 1538 #define MPI_SCSIPORTPAGE2_DEVICE_BOOT_CHOICE (0x0020)
1481 1539
1482 1540
1483 /**************************************************************************** 1541 /****************************************************************************
1484 * SCSI Target Device Config Pages 1542 * SCSI Target Device Config Pages
1485 ****************************************************************************/ 1543 ****************************************************************************/
1486 1544
1487 typedef struct _CONFIG_PAGE_SCSI_DEVICE_0 1545 typedef struct _CONFIG_PAGE_SCSI_DEVICE_0
1488 { 1546 {
1489 CONFIG_PAGE_HEADER Header; /* 00h */ 1547 CONFIG_PAGE_HEADER Header; /* 00h */
1490 U32 NegotiatedParameters; /* 04h */ 1548 U32 NegotiatedParameters; /* 04h */
1491 U32 Information; /* 08h */ 1549 U32 Information; /* 08h */
1492 } CONFIG_PAGE_SCSI_DEVICE_0, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_0, 1550 } CONFIG_PAGE_SCSI_DEVICE_0, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_0,
1493 SCSIDevicePage0_t, MPI_POINTER pSCSIDevicePage0_t; 1551 SCSIDevicePage0_t, MPI_POINTER pSCSIDevicePage0_t;
1494 1552
1495 #define MPI_SCSIDEVPAGE0_PAGEVERSION (0x04) 1553 #define MPI_SCSIDEVPAGE0_PAGEVERSION (0x04)
1496 1554
1497 #define MPI_SCSIDEVPAGE0_NP_IU (0x00000001) 1555 #define MPI_SCSIDEVPAGE0_NP_IU (0x00000001)
1498 #define MPI_SCSIDEVPAGE0_NP_DT (0x00000002) 1556 #define MPI_SCSIDEVPAGE0_NP_DT (0x00000002)
1499 #define MPI_SCSIDEVPAGE0_NP_QAS (0x00000004) 1557 #define MPI_SCSIDEVPAGE0_NP_QAS (0x00000004)
1500 #define MPI_SCSIDEVPAGE0_NP_HOLD_MCS (0x00000008) 1558 #define MPI_SCSIDEVPAGE0_NP_HOLD_MCS (0x00000008)
1501 #define MPI_SCSIDEVPAGE0_NP_WR_FLOW (0x00000010) 1559 #define MPI_SCSIDEVPAGE0_NP_WR_FLOW (0x00000010)
1502 #define MPI_SCSIDEVPAGE0_NP_RD_STRM (0x00000020) 1560 #define MPI_SCSIDEVPAGE0_NP_RD_STRM (0x00000020)
1503 #define MPI_SCSIDEVPAGE0_NP_RTI (0x00000040) 1561 #define MPI_SCSIDEVPAGE0_NP_RTI (0x00000040)
1504 #define MPI_SCSIDEVPAGE0_NP_PCOMP_EN (0x00000080) 1562 #define MPI_SCSIDEVPAGE0_NP_PCOMP_EN (0x00000080)
1505 #define MPI_SCSIDEVPAGE0_NP_NEG_SYNC_PERIOD_MASK (0x0000FF00) 1563 #define MPI_SCSIDEVPAGE0_NP_NEG_SYNC_PERIOD_MASK (0x0000FF00)
1506 #define MPI_SCSIDEVPAGE0_NP_SHIFT_SYNC_PERIOD (8) 1564 #define MPI_SCSIDEVPAGE0_NP_SHIFT_SYNC_PERIOD (8)
1507 #define MPI_SCSIDEVPAGE0_NP_NEG_SYNC_OFFSET_MASK (0x00FF0000) 1565 #define MPI_SCSIDEVPAGE0_NP_NEG_SYNC_OFFSET_MASK (0x00FF0000)
1508 #define MPI_SCSIDEVPAGE0_NP_SHIFT_SYNC_OFFSET (16) 1566 #define MPI_SCSIDEVPAGE0_NP_SHIFT_SYNC_OFFSET (16)
1509 #define MPI_SCSIDEVPAGE0_NP_IDP (0x08000000) 1567 #define MPI_SCSIDEVPAGE0_NP_IDP (0x08000000)
1510 #define MPI_SCSIDEVPAGE0_NP_WIDE (0x20000000) 1568 #define MPI_SCSIDEVPAGE0_NP_WIDE (0x20000000)
1511 #define MPI_SCSIDEVPAGE0_NP_AIP (0x80000000) 1569 #define MPI_SCSIDEVPAGE0_NP_AIP (0x80000000)
1512 1570
1513 #define MPI_SCSIDEVPAGE0_INFO_PARAMS_NEGOTIATED (0x00000001) 1571 #define MPI_SCSIDEVPAGE0_INFO_PARAMS_NEGOTIATED (0x00000001)
1514 #define MPI_SCSIDEVPAGE0_INFO_SDTR_REJECTED (0x00000002) 1572 #define MPI_SCSIDEVPAGE0_INFO_SDTR_REJECTED (0x00000002)
1515 #define MPI_SCSIDEVPAGE0_INFO_WDTR_REJECTED (0x00000004) 1573 #define MPI_SCSIDEVPAGE0_INFO_WDTR_REJECTED (0x00000004)
1516 #define MPI_SCSIDEVPAGE0_INFO_PPR_REJECTED (0x00000008) 1574 #define MPI_SCSIDEVPAGE0_INFO_PPR_REJECTED (0x00000008)
1517 1575
1518 1576
1519 typedef struct _CONFIG_PAGE_SCSI_DEVICE_1 1577 typedef struct _CONFIG_PAGE_SCSI_DEVICE_1
1520 { 1578 {
1521 CONFIG_PAGE_HEADER Header; /* 00h */ 1579 CONFIG_PAGE_HEADER Header; /* 00h */
1522 U32 RequestedParameters; /* 04h */ 1580 U32 RequestedParameters; /* 04h */
1523 U32 Reserved; /* 08h */ 1581 U32 Reserved; /* 08h */
1524 U32 Configuration; /* 0Ch */ 1582 U32 Configuration; /* 0Ch */
1525 } CONFIG_PAGE_SCSI_DEVICE_1, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_1, 1583 } CONFIG_PAGE_SCSI_DEVICE_1, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_1,
1526 SCSIDevicePage1_t, MPI_POINTER pSCSIDevicePage1_t; 1584 SCSIDevicePage1_t, MPI_POINTER pSCSIDevicePage1_t;
1527 1585
1528 #define MPI_SCSIDEVPAGE1_PAGEVERSION (0x05) 1586 #define MPI_SCSIDEVPAGE1_PAGEVERSION (0x05)
1529 1587
1530 #define MPI_SCSIDEVPAGE1_RP_IU (0x00000001) 1588 #define MPI_SCSIDEVPAGE1_RP_IU (0x00000001)
1531 #define MPI_SCSIDEVPAGE1_RP_DT (0x00000002) 1589 #define MPI_SCSIDEVPAGE1_RP_DT (0x00000002)
1532 #define MPI_SCSIDEVPAGE1_RP_QAS (0x00000004) 1590 #define MPI_SCSIDEVPAGE1_RP_QAS (0x00000004)
1533 #define MPI_SCSIDEVPAGE1_RP_HOLD_MCS (0x00000008) 1591 #define MPI_SCSIDEVPAGE1_RP_HOLD_MCS (0x00000008)
1534 #define MPI_SCSIDEVPAGE1_RP_WR_FLOW (0x00000010) 1592 #define MPI_SCSIDEVPAGE1_RP_WR_FLOW (0x00000010)
1535 #define MPI_SCSIDEVPAGE1_RP_RD_STRM (0x00000020) 1593 #define MPI_SCSIDEVPAGE1_RP_RD_STRM (0x00000020)
1536 #define MPI_SCSIDEVPAGE1_RP_RTI (0x00000040) 1594 #define MPI_SCSIDEVPAGE1_RP_RTI (0x00000040)
1537 #define MPI_SCSIDEVPAGE1_RP_PCOMP_EN (0x00000080) 1595 #define MPI_SCSIDEVPAGE1_RP_PCOMP_EN (0x00000080)
1538 #define MPI_SCSIDEVPAGE1_RP_MIN_SYNC_PERIOD_MASK (0x0000FF00) 1596 #define MPI_SCSIDEVPAGE1_RP_MIN_SYNC_PERIOD_MASK (0x0000FF00)
1539 #define MPI_SCSIDEVPAGE1_RP_SHIFT_MIN_SYNC_PERIOD (8) 1597 #define MPI_SCSIDEVPAGE1_RP_SHIFT_MIN_SYNC_PERIOD (8)
1540 #define MPI_SCSIDEVPAGE1_RP_MAX_SYNC_OFFSET_MASK (0x00FF0000) 1598 #define MPI_SCSIDEVPAGE1_RP_MAX_SYNC_OFFSET_MASK (0x00FF0000)
1541 #define MPI_SCSIDEVPAGE1_RP_SHIFT_MAX_SYNC_OFFSET (16) 1599 #define MPI_SCSIDEVPAGE1_RP_SHIFT_MAX_SYNC_OFFSET (16)
1542 #define MPI_SCSIDEVPAGE1_RP_IDP (0x08000000) 1600 #define MPI_SCSIDEVPAGE1_RP_IDP (0x08000000)
1543 #define MPI_SCSIDEVPAGE1_RP_WIDE (0x20000000) 1601 #define MPI_SCSIDEVPAGE1_RP_WIDE (0x20000000)
1544 #define MPI_SCSIDEVPAGE1_RP_AIP (0x80000000) 1602 #define MPI_SCSIDEVPAGE1_RP_AIP (0x80000000)
1545 1603
1546 #define MPI_SCSIDEVPAGE1_CONF_WDTR_DISALLOWED (0x00000002) 1604 #define MPI_SCSIDEVPAGE1_CONF_WDTR_DISALLOWED (0x00000002)
1547 #define MPI_SCSIDEVPAGE1_CONF_SDTR_DISALLOWED (0x00000004) 1605 #define MPI_SCSIDEVPAGE1_CONF_SDTR_DISALLOWED (0x00000004)
1548 #define MPI_SCSIDEVPAGE1_CONF_EXTENDED_PARAMS_ENABLE (0x00000008) 1606 #define MPI_SCSIDEVPAGE1_CONF_EXTENDED_PARAMS_ENABLE (0x00000008)
1549 #define MPI_SCSIDEVPAGE1_CONF_FORCE_PPR_MSG (0x00000010) 1607 #define MPI_SCSIDEVPAGE1_CONF_FORCE_PPR_MSG (0x00000010)
1550 1608
1551 1609
1552 typedef struct _CONFIG_PAGE_SCSI_DEVICE_2 1610 typedef struct _CONFIG_PAGE_SCSI_DEVICE_2
1553 { 1611 {
1554 CONFIG_PAGE_HEADER Header; /* 00h */ 1612 CONFIG_PAGE_HEADER Header; /* 00h */
1555 U32 DomainValidation; /* 04h */ 1613 U32 DomainValidation; /* 04h */
1556 U32 ParityPipeSelect; /* 08h */ 1614 U32 ParityPipeSelect; /* 08h */
1557 U32 DataPipeSelect; /* 0Ch */ 1615 U32 DataPipeSelect; /* 0Ch */
1558 } CONFIG_PAGE_SCSI_DEVICE_2, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_2, 1616 } CONFIG_PAGE_SCSI_DEVICE_2, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_2,
1559 SCSIDevicePage2_t, MPI_POINTER pSCSIDevicePage2_t; 1617 SCSIDevicePage2_t, MPI_POINTER pSCSIDevicePage2_t;
1560 1618
1561 #define MPI_SCSIDEVPAGE2_PAGEVERSION (0x01) 1619 #define MPI_SCSIDEVPAGE2_PAGEVERSION (0x01)
1562 1620
1563 #define MPI_SCSIDEVPAGE2_DV_ISI_ENABLE (0x00000010) 1621 #define MPI_SCSIDEVPAGE2_DV_ISI_ENABLE (0x00000010)
1564 #define MPI_SCSIDEVPAGE2_DV_SECONDARY_DRIVER_ENABLE (0x00000020) 1622 #define MPI_SCSIDEVPAGE2_DV_SECONDARY_DRIVER_ENABLE (0x00000020)
1565 #define MPI_SCSIDEVPAGE2_DV_SLEW_RATE_CTRL (0x00000380) 1623 #define MPI_SCSIDEVPAGE2_DV_SLEW_RATE_CTRL (0x00000380)
1566 #define MPI_SCSIDEVPAGE2_DV_PRIM_DRIVE_STR_CTRL (0x00001C00) 1624 #define MPI_SCSIDEVPAGE2_DV_PRIM_DRIVE_STR_CTRL (0x00001C00)
1567 #define MPI_SCSIDEVPAGE2_DV_SECOND_DRIVE_STR_CTRL (0x0000E000) 1625 #define MPI_SCSIDEVPAGE2_DV_SECOND_DRIVE_STR_CTRL (0x0000E000)
1568 #define MPI_SCSIDEVPAGE2_DV_XCLKH_ST (0x10000000) 1626 #define MPI_SCSIDEVPAGE2_DV_XCLKH_ST (0x10000000)
1569 #define MPI_SCSIDEVPAGE2_DV_XCLKS_ST (0x20000000) 1627 #define MPI_SCSIDEVPAGE2_DV_XCLKS_ST (0x20000000)
1570 #define MPI_SCSIDEVPAGE2_DV_XCLKH_DT (0x40000000) 1628 #define MPI_SCSIDEVPAGE2_DV_XCLKH_DT (0x40000000)
1571 #define MPI_SCSIDEVPAGE2_DV_XCLKS_DT (0x80000000) 1629 #define MPI_SCSIDEVPAGE2_DV_XCLKS_DT (0x80000000)
1572 1630
1573 #define MPI_SCSIDEVPAGE2_PPS_PPS_MASK (0x00000003) 1631 #define MPI_SCSIDEVPAGE2_PPS_PPS_MASK (0x00000003)
1574 1632
1575 #define MPI_SCSIDEVPAGE2_DPS_BIT_0_PL_SELECT_MASK (0x00000003) 1633 #define MPI_SCSIDEVPAGE2_DPS_BIT_0_PL_SELECT_MASK (0x00000003)
1576 #define MPI_SCSIDEVPAGE2_DPS_BIT_1_PL_SELECT_MASK (0x0000000C) 1634 #define MPI_SCSIDEVPAGE2_DPS_BIT_1_PL_SELECT_MASK (0x0000000C)
1577 #define MPI_SCSIDEVPAGE2_DPS_BIT_2_PL_SELECT_MASK (0x00000030) 1635 #define MPI_SCSIDEVPAGE2_DPS_BIT_2_PL_SELECT_MASK (0x00000030)
1578 #define MPI_SCSIDEVPAGE2_DPS_BIT_3_PL_SELECT_MASK (0x000000C0) 1636 #define MPI_SCSIDEVPAGE2_DPS_BIT_3_PL_SELECT_MASK (0x000000C0)
1579 #define MPI_SCSIDEVPAGE2_DPS_BIT_4_PL_SELECT_MASK (0x00000300) 1637 #define MPI_SCSIDEVPAGE2_DPS_BIT_4_PL_SELECT_MASK (0x00000300)
1580 #define MPI_SCSIDEVPAGE2_DPS_BIT_5_PL_SELECT_MASK (0x00000C00) 1638 #define MPI_SCSIDEVPAGE2_DPS_BIT_5_PL_SELECT_MASK (0x00000C00)
1581 #define MPI_SCSIDEVPAGE2_DPS_BIT_6_PL_SELECT_MASK (0x00003000) 1639 #define MPI_SCSIDEVPAGE2_DPS_BIT_6_PL_SELECT_MASK (0x00003000)
1582 #define MPI_SCSIDEVPAGE2_DPS_BIT_7_PL_SELECT_MASK (0x0000C000) 1640 #define MPI_SCSIDEVPAGE2_DPS_BIT_7_PL_SELECT_MASK (0x0000C000)
1583 #define MPI_SCSIDEVPAGE2_DPS_BIT_8_PL_SELECT_MASK (0x00030000) 1641 #define MPI_SCSIDEVPAGE2_DPS_BIT_8_PL_SELECT_MASK (0x00030000)
1584 #define MPI_SCSIDEVPAGE2_DPS_BIT_9_PL_SELECT_MASK (0x000C0000) 1642 #define MPI_SCSIDEVPAGE2_DPS_BIT_9_PL_SELECT_MASK (0x000C0000)
1585 #define MPI_SCSIDEVPAGE2_DPS_BIT_10_PL_SELECT_MASK (0x00300000) 1643 #define MPI_SCSIDEVPAGE2_DPS_BIT_10_PL_SELECT_MASK (0x00300000)
1586 #define MPI_SCSIDEVPAGE2_DPS_BIT_11_PL_SELECT_MASK (0x00C00000) 1644 #define MPI_SCSIDEVPAGE2_DPS_BIT_11_PL_SELECT_MASK (0x00C00000)
1587 #define MPI_SCSIDEVPAGE2_DPS_BIT_12_PL_SELECT_MASK (0x03000000) 1645 #define MPI_SCSIDEVPAGE2_DPS_BIT_12_PL_SELECT_MASK (0x03000000)
1588 #define MPI_SCSIDEVPAGE2_DPS_BIT_13_PL_SELECT_MASK (0x0C000000) 1646 #define MPI_SCSIDEVPAGE2_DPS_BIT_13_PL_SELECT_MASK (0x0C000000)
1589 #define MPI_SCSIDEVPAGE2_DPS_BIT_14_PL_SELECT_MASK (0x30000000) 1647 #define MPI_SCSIDEVPAGE2_DPS_BIT_14_PL_SELECT_MASK (0x30000000)
1590 #define MPI_SCSIDEVPAGE2_DPS_BIT_15_PL_SELECT_MASK (0xC0000000) 1648 #define MPI_SCSIDEVPAGE2_DPS_BIT_15_PL_SELECT_MASK (0xC0000000)
1591 1649
1592 1650
1593 typedef struct _CONFIG_PAGE_SCSI_DEVICE_3 1651 typedef struct _CONFIG_PAGE_SCSI_DEVICE_3
1594 { 1652 {
1595 CONFIG_PAGE_HEADER Header; /* 00h */ 1653 CONFIG_PAGE_HEADER Header; /* 00h */
1596 U16 MsgRejectCount; /* 04h */ 1654 U16 MsgRejectCount; /* 04h */
1597 U16 PhaseErrorCount; /* 06h */ 1655 U16 PhaseErrorCount; /* 06h */
1598 U16 ParityErrorCount; /* 08h */ 1656 U16 ParityErrorCount; /* 08h */
1599 U16 Reserved; /* 0Ah */ 1657 U16 Reserved; /* 0Ah */
1600 } CONFIG_PAGE_SCSI_DEVICE_3, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_3, 1658 } CONFIG_PAGE_SCSI_DEVICE_3, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_3,
1601 SCSIDevicePage3_t, MPI_POINTER pSCSIDevicePage3_t; 1659 SCSIDevicePage3_t, MPI_POINTER pSCSIDevicePage3_t;
1602 1660
1603 #define MPI_SCSIDEVPAGE3_PAGEVERSION (0x00) 1661 #define MPI_SCSIDEVPAGE3_PAGEVERSION (0x00)
1604 1662
1605 #define MPI_SCSIDEVPAGE3_MAX_COUNTER (0xFFFE) 1663 #define MPI_SCSIDEVPAGE3_MAX_COUNTER (0xFFFE)
1606 #define MPI_SCSIDEVPAGE3_UNSUPPORTED_COUNTER (0xFFFF) 1664 #define MPI_SCSIDEVPAGE3_UNSUPPORTED_COUNTER (0xFFFF)
1607 1665
1608 1666
1609 /**************************************************************************** 1667 /****************************************************************************
1610 * FC Port Config Pages 1668 * FC Port Config Pages
1611 ****************************************************************************/ 1669 ****************************************************************************/
1612 1670
1613 typedef struct _CONFIG_PAGE_FC_PORT_0 1671 typedef struct _CONFIG_PAGE_FC_PORT_0
1614 { 1672 {
1615 CONFIG_PAGE_HEADER Header; /* 00h */ 1673 CONFIG_PAGE_HEADER Header; /* 00h */
1616 U32 Flags; /* 04h */ 1674 U32 Flags; /* 04h */
1617 U8 MPIPortNumber; /* 08h */ 1675 U8 MPIPortNumber; /* 08h */
1618 U8 LinkType; /* 09h */ 1676 U8 LinkType; /* 09h */
1619 U8 PortState; /* 0Ah */ 1677 U8 PortState; /* 0Ah */
1620 U8 Reserved; /* 0Bh */ 1678 U8 Reserved; /* 0Bh */
1621 U32 PortIdentifier; /* 0Ch */ 1679 U32 PortIdentifier; /* 0Ch */
1622 U64 WWNN; /* 10h */ 1680 U64 WWNN; /* 10h */
1623 U64 WWPN; /* 18h */ 1681 U64 WWPN; /* 18h */
1624 U32 SupportedServiceClass; /* 20h */ 1682 U32 SupportedServiceClass; /* 20h */
1625 U32 SupportedSpeeds; /* 24h */ 1683 U32 SupportedSpeeds; /* 24h */
1626 U32 CurrentSpeed; /* 28h */ 1684 U32 CurrentSpeed; /* 28h */
1627 U32 MaxFrameSize; /* 2Ch */ 1685 U32 MaxFrameSize; /* 2Ch */
1628 U64 FabricWWNN; /* 30h */ 1686 U64 FabricWWNN; /* 30h */
1629 U64 FabricWWPN; /* 38h */ 1687 U64 FabricWWPN; /* 38h */
1630 U32 DiscoveredPortsCount; /* 40h */ 1688 U32 DiscoveredPortsCount; /* 40h */
1631 U32 MaxInitiators; /* 44h */ 1689 U32 MaxInitiators; /* 44h */
1632 U8 MaxAliasesSupported; /* 48h */ 1690 U8 MaxAliasesSupported; /* 48h */
1633 U8 MaxHardAliasesSupported; /* 49h */ 1691 U8 MaxHardAliasesSupported; /* 49h */
1634 U8 NumCurrentAliases; /* 4Ah */ 1692 U8 NumCurrentAliases; /* 4Ah */
1635 U8 Reserved1; /* 4Bh */ 1693 U8 Reserved1; /* 4Bh */
1636 } CONFIG_PAGE_FC_PORT_0, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_0, 1694 } CONFIG_PAGE_FC_PORT_0, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_0,
1637 FCPortPage0_t, MPI_POINTER pFCPortPage0_t; 1695 FCPortPage0_t, MPI_POINTER pFCPortPage0_t;
1638 1696
1639 #define MPI_FCPORTPAGE0_PAGEVERSION (0x02) 1697 #define MPI_FCPORTPAGE0_PAGEVERSION (0x02)
1640 1698
1641 #define MPI_FCPORTPAGE0_FLAGS_PROT_MASK (0x0000000F) 1699 #define MPI_FCPORTPAGE0_FLAGS_PROT_MASK (0x0000000F)
1642 #define MPI_FCPORTPAGE0_FLAGS_PROT_FCP_INIT (MPI_PORTFACTS_PROTOCOL_INITIATOR) 1700 #define MPI_FCPORTPAGE0_FLAGS_PROT_FCP_INIT (MPI_PORTFACTS_PROTOCOL_INITIATOR)
1643 #define MPI_FCPORTPAGE0_FLAGS_PROT_FCP_TARG (MPI_PORTFACTS_PROTOCOL_TARGET) 1701 #define MPI_FCPORTPAGE0_FLAGS_PROT_FCP_TARG (MPI_PORTFACTS_PROTOCOL_TARGET)
1644 #define MPI_FCPORTPAGE0_FLAGS_PROT_LAN (MPI_PORTFACTS_PROTOCOL_LAN) 1702 #define MPI_FCPORTPAGE0_FLAGS_PROT_LAN (MPI_PORTFACTS_PROTOCOL_LAN)
1645 #define MPI_FCPORTPAGE0_FLAGS_PROT_LOGBUSADDR (MPI_PORTFACTS_PROTOCOL_LOGBUSADDR) 1703 #define MPI_FCPORTPAGE0_FLAGS_PROT_LOGBUSADDR (MPI_PORTFACTS_PROTOCOL_LOGBUSADDR)
1646 1704
1647 #define MPI_FCPORTPAGE0_FLAGS_ALIAS_ALPA_SUPPORTED (0x00000010) 1705 #define MPI_FCPORTPAGE0_FLAGS_ALIAS_ALPA_SUPPORTED (0x00000010)
1648 #define MPI_FCPORTPAGE0_FLAGS_ALIAS_WWN_SUPPORTED (0x00000020) 1706 #define MPI_FCPORTPAGE0_FLAGS_ALIAS_WWN_SUPPORTED (0x00000020)
1649 #define MPI_FCPORTPAGE0_FLAGS_FABRIC_WWN_VALID (0x00000040) 1707 #define MPI_FCPORTPAGE0_FLAGS_FABRIC_WWN_VALID (0x00000040)
1650 1708
1651 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_TYPE_MASK (0x00000F00) 1709 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_TYPE_MASK (0x00000F00)
1652 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_NO_INIT (0x00000000) 1710 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_NO_INIT (0x00000000)
1653 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_POINT_TO_POINT (0x00000100) 1711 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_POINT_TO_POINT (0x00000100)
1654 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_PRIVATE_LOOP (0x00000200) 1712 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_PRIVATE_LOOP (0x00000200)
1655 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_FABRIC_DIRECT (0x00000400) 1713 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_FABRIC_DIRECT (0x00000400)
1656 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_PUBLIC_LOOP (0x00000800) 1714 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_PUBLIC_LOOP (0x00000800)
1657 1715
1658 #define MPI_FCPORTPAGE0_LTYPE_RESERVED (0x00) 1716 #define MPI_FCPORTPAGE0_LTYPE_RESERVED (0x00)
1659 #define MPI_FCPORTPAGE0_LTYPE_OTHER (0x01) 1717 #define MPI_FCPORTPAGE0_LTYPE_OTHER (0x01)
1660 #define MPI_FCPORTPAGE0_LTYPE_UNKNOWN (0x02) 1718 #define MPI_FCPORTPAGE0_LTYPE_UNKNOWN (0x02)
1661 #define MPI_FCPORTPAGE0_LTYPE_COPPER (0x03) 1719 #define MPI_FCPORTPAGE0_LTYPE_COPPER (0x03)
1662 #define MPI_FCPORTPAGE0_LTYPE_SINGLE_1300 (0x04) 1720 #define MPI_FCPORTPAGE0_LTYPE_SINGLE_1300 (0x04)
1663 #define MPI_FCPORTPAGE0_LTYPE_SINGLE_1500 (0x05) 1721 #define MPI_FCPORTPAGE0_LTYPE_SINGLE_1500 (0x05)
1664 #define MPI_FCPORTPAGE0_LTYPE_50_LASER_MULTI (0x06) 1722 #define MPI_FCPORTPAGE0_LTYPE_50_LASER_MULTI (0x06)
1665 #define MPI_FCPORTPAGE0_LTYPE_50_LED_MULTI (0x07) 1723 #define MPI_FCPORTPAGE0_LTYPE_50_LED_MULTI (0x07)
1666 #define MPI_FCPORTPAGE0_LTYPE_62_LASER_MULTI (0x08) 1724 #define MPI_FCPORTPAGE0_LTYPE_62_LASER_MULTI (0x08)
1667 #define MPI_FCPORTPAGE0_LTYPE_62_LED_MULTI (0x09) 1725 #define MPI_FCPORTPAGE0_LTYPE_62_LED_MULTI (0x09)
1668 #define MPI_FCPORTPAGE0_LTYPE_MULTI_LONG_WAVE (0x0A) 1726 #define MPI_FCPORTPAGE0_LTYPE_MULTI_LONG_WAVE (0x0A)
1669 #define MPI_FCPORTPAGE0_LTYPE_MULTI_SHORT_WAVE (0x0B) 1727 #define MPI_FCPORTPAGE0_LTYPE_MULTI_SHORT_WAVE (0x0B)
1670 #define MPI_FCPORTPAGE0_LTYPE_LASER_SHORT_WAVE (0x0C) 1728 #define MPI_FCPORTPAGE0_LTYPE_LASER_SHORT_WAVE (0x0C)
1671 #define MPI_FCPORTPAGE0_LTYPE_LED_SHORT_WAVE (0x0D) 1729 #define MPI_FCPORTPAGE0_LTYPE_LED_SHORT_WAVE (0x0D)
1672 #define MPI_FCPORTPAGE0_LTYPE_1300_LONG_WAVE (0x0E) 1730 #define MPI_FCPORTPAGE0_LTYPE_1300_LONG_WAVE (0x0E)
1673 #define MPI_FCPORTPAGE0_LTYPE_1500_LONG_WAVE (0x0F) 1731 #define MPI_FCPORTPAGE0_LTYPE_1500_LONG_WAVE (0x0F)
1674 1732
1675 #define MPI_FCPORTPAGE0_PORTSTATE_UNKNOWN (0x01) /*(SNIA)HBA_PORTSTATE_UNKNOWN 1 Unknown */ 1733 #define MPI_FCPORTPAGE0_PORTSTATE_UNKNOWN (0x01) /*(SNIA)HBA_PORTSTATE_UNKNOWN 1 Unknown */
1676 #define MPI_FCPORTPAGE0_PORTSTATE_ONLINE (0x02) /*(SNIA)HBA_PORTSTATE_ONLINE 2 Operational */ 1734 #define MPI_FCPORTPAGE0_PORTSTATE_ONLINE (0x02) /*(SNIA)HBA_PORTSTATE_ONLINE 2 Operational */
1677 #define MPI_FCPORTPAGE0_PORTSTATE_OFFLINE (0x03) /*(SNIA)HBA_PORTSTATE_OFFLINE 3 User Offline */ 1735 #define MPI_FCPORTPAGE0_PORTSTATE_OFFLINE (0x03) /*(SNIA)HBA_PORTSTATE_OFFLINE 3 User Offline */
1678 #define MPI_FCPORTPAGE0_PORTSTATE_BYPASSED (0x04) /*(SNIA)HBA_PORTSTATE_BYPASSED 4 Bypassed */ 1736 #define MPI_FCPORTPAGE0_PORTSTATE_BYPASSED (0x04) /*(SNIA)HBA_PORTSTATE_BYPASSED 4 Bypassed */
1679 #define MPI_FCPORTPAGE0_PORTSTATE_DIAGNOST (0x05) /*(SNIA)HBA_PORTSTATE_DIAGNOSTICS 5 In diagnostics mode */ 1737 #define MPI_FCPORTPAGE0_PORTSTATE_DIAGNOST (0x05) /*(SNIA)HBA_PORTSTATE_DIAGNOSTICS 5 In diagnostics mode */
1680 #define MPI_FCPORTPAGE0_PORTSTATE_LINKDOWN (0x06) /*(SNIA)HBA_PORTSTATE_LINKDOWN 6 Link Down */ 1738 #define MPI_FCPORTPAGE0_PORTSTATE_LINKDOWN (0x06) /*(SNIA)HBA_PORTSTATE_LINKDOWN 6 Link Down */
1681 #define MPI_FCPORTPAGE0_PORTSTATE_ERROR (0x07) /*(SNIA)HBA_PORTSTATE_ERROR 7 Port Error */ 1739 #define MPI_FCPORTPAGE0_PORTSTATE_ERROR (0x07) /*(SNIA)HBA_PORTSTATE_ERROR 7 Port Error */
1682 #define MPI_FCPORTPAGE0_PORTSTATE_LOOPBACK (0x08) /*(SNIA)HBA_PORTSTATE_LOOPBACK 8 Loopback */ 1740 #define MPI_FCPORTPAGE0_PORTSTATE_LOOPBACK (0x08) /*(SNIA)HBA_PORTSTATE_LOOPBACK 8 Loopback */
1683 1741
1684 #define MPI_FCPORTPAGE0_SUPPORT_CLASS_1 (0x00000001) 1742 #define MPI_FCPORTPAGE0_SUPPORT_CLASS_1 (0x00000001)
1685 #define MPI_FCPORTPAGE0_SUPPORT_CLASS_2 (0x00000002) 1743 #define MPI_FCPORTPAGE0_SUPPORT_CLASS_2 (0x00000002)
1686 #define MPI_FCPORTPAGE0_SUPPORT_CLASS_3 (0x00000004) 1744 #define MPI_FCPORTPAGE0_SUPPORT_CLASS_3 (0x00000004)
1687 1745
1688 #define MPI_FCPORTPAGE0_SUPPORT_SPEED_UKNOWN (0x00000000) /* (SNIA)HBA_PORTSPEED_UNKNOWN 0 Unknown - transceiver incapable of reporting */ 1746 #define MPI_FCPORTPAGE0_SUPPORT_SPEED_UKNOWN (0x00000000) /* (SNIA)HBA_PORTSPEED_UNKNOWN 0 Unknown - transceiver incapable of reporting */
1689 #define MPI_FCPORTPAGE0_SUPPORT_1GBIT_SPEED (0x00000001) /* (SNIA)HBA_PORTSPEED_1GBIT 1 1 GBit/sec */ 1747 #define MPI_FCPORTPAGE0_SUPPORT_1GBIT_SPEED (0x00000001) /* (SNIA)HBA_PORTSPEED_1GBIT 1 1 GBit/sec */
1690 #define MPI_FCPORTPAGE0_SUPPORT_2GBIT_SPEED (0x00000002) /* (SNIA)HBA_PORTSPEED_2GBIT 2 2 GBit/sec */ 1748 #define MPI_FCPORTPAGE0_SUPPORT_2GBIT_SPEED (0x00000002) /* (SNIA)HBA_PORTSPEED_2GBIT 2 2 GBit/sec */
1691 #define MPI_FCPORTPAGE0_SUPPORT_10GBIT_SPEED (0x00000004) /* (SNIA)HBA_PORTSPEED_10GBIT 4 10 GBit/sec */ 1749 #define MPI_FCPORTPAGE0_SUPPORT_10GBIT_SPEED (0x00000004) /* (SNIA)HBA_PORTSPEED_10GBIT 4 10 GBit/sec */
1692 #define MPI_FCPORTPAGE0_SUPPORT_4GBIT_SPEED (0x00000008) /* (SNIA)HBA_PORTSPEED_4GBIT 8 4 GBit/sec */ 1750 #define MPI_FCPORTPAGE0_SUPPORT_4GBIT_SPEED (0x00000008) /* (SNIA)HBA_PORTSPEED_4GBIT 8 4 GBit/sec */
1693 1751
1694 #define MPI_FCPORTPAGE0_CURRENT_SPEED_UKNOWN MPI_FCPORTPAGE0_SUPPORT_SPEED_UKNOWN 1752 #define MPI_FCPORTPAGE0_CURRENT_SPEED_UKNOWN MPI_FCPORTPAGE0_SUPPORT_SPEED_UKNOWN
1695 #define MPI_FCPORTPAGE0_CURRENT_SPEED_1GBIT MPI_FCPORTPAGE0_SUPPORT_1GBIT_SPEED 1753 #define MPI_FCPORTPAGE0_CURRENT_SPEED_1GBIT MPI_FCPORTPAGE0_SUPPORT_1GBIT_SPEED
1696 #define MPI_FCPORTPAGE0_CURRENT_SPEED_2GBIT MPI_FCPORTPAGE0_SUPPORT_2GBIT_SPEED 1754 #define MPI_FCPORTPAGE0_CURRENT_SPEED_2GBIT MPI_FCPORTPAGE0_SUPPORT_2GBIT_SPEED
1697 #define MPI_FCPORTPAGE0_CURRENT_SPEED_10GBIT MPI_FCPORTPAGE0_SUPPORT_10GBIT_SPEED 1755 #define MPI_FCPORTPAGE0_CURRENT_SPEED_10GBIT MPI_FCPORTPAGE0_SUPPORT_10GBIT_SPEED
1698 #define MPI_FCPORTPAGE0_CURRENT_SPEED_4GBIT MPI_FCPORTPAGE0_SUPPORT_4GBIT_SPEED 1756 #define MPI_FCPORTPAGE0_CURRENT_SPEED_4GBIT MPI_FCPORTPAGE0_SUPPORT_4GBIT_SPEED
1699 #define MPI_FCPORTPAGE0_CURRENT_SPEED_NOT_NEGOTIATED (0x00008000) /* (SNIA)HBA_PORTSPEED_NOT_NEGOTIATED (1<<15) Speed not established */ 1757 #define MPI_FCPORTPAGE0_CURRENT_SPEED_NOT_NEGOTIATED (0x00008000) /* (SNIA)HBA_PORTSPEED_NOT_NEGOTIATED (1<<15) Speed not established */
1700 1758
1701 1759
1702 typedef struct _CONFIG_PAGE_FC_PORT_1 1760 typedef struct _CONFIG_PAGE_FC_PORT_1
1703 { 1761 {
1704 CONFIG_PAGE_HEADER Header; /* 00h */ 1762 CONFIG_PAGE_HEADER Header; /* 00h */
1705 U32 Flags; /* 04h */ 1763 U32 Flags; /* 04h */
1706 U64 NoSEEPROMWWNN; /* 08h */ 1764 U64 NoSEEPROMWWNN; /* 08h */
1707 U64 NoSEEPROMWWPN; /* 10h */ 1765 U64 NoSEEPROMWWPN; /* 10h */
1708 U8 HardALPA; /* 18h */ 1766 U8 HardALPA; /* 18h */
1709 U8 LinkConfig; /* 19h */ 1767 U8 LinkConfig; /* 19h */
1710 U8 TopologyConfig; /* 1Ah */ 1768 U8 TopologyConfig; /* 1Ah */
1711 U8 AltConnector; /* 1Bh */ 1769 U8 AltConnector; /* 1Bh */
1712 U8 NumRequestedAliases; /* 1Ch */ 1770 U8 NumRequestedAliases; /* 1Ch */
1713 U8 RR_TOV; /* 1Dh */ 1771 U8 RR_TOV; /* 1Dh */
1714 U8 InitiatorDeviceTimeout; /* 1Eh */ 1772 U8 InitiatorDeviceTimeout; /* 1Eh */
1715 U8 InitiatorIoPendTimeout; /* 1Fh */ 1773 U8 InitiatorIoPendTimeout; /* 1Fh */
1716 } CONFIG_PAGE_FC_PORT_1, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_1, 1774 } CONFIG_PAGE_FC_PORT_1, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_1,
1717 FCPortPage1_t, MPI_POINTER pFCPortPage1_t; 1775 FCPortPage1_t, MPI_POINTER pFCPortPage1_t;
1718 1776
1719 #define MPI_FCPORTPAGE1_PAGEVERSION (0x06) 1777 #define MPI_FCPORTPAGE1_PAGEVERSION (0x06)
1720 1778
1721 #define MPI_FCPORTPAGE1_FLAGS_EXT_FCP_STATUS_EN (0x08000000) 1779 #define MPI_FCPORTPAGE1_FLAGS_EXT_FCP_STATUS_EN (0x08000000)
1722 #define MPI_FCPORTPAGE1_FLAGS_IMMEDIATE_ERROR_REPLY (0x04000000) 1780 #define MPI_FCPORTPAGE1_FLAGS_IMMEDIATE_ERROR_REPLY (0x04000000)
1723 #define MPI_FCPORTPAGE1_FLAGS_FORCE_USE_NOSEEPROM_WWNS (0x02000000) 1781 #define MPI_FCPORTPAGE1_FLAGS_FORCE_USE_NOSEEPROM_WWNS (0x02000000)
1724 #define MPI_FCPORTPAGE1_FLAGS_VERBOSE_RESCAN_EVENTS (0x01000000) 1782 #define MPI_FCPORTPAGE1_FLAGS_VERBOSE_RESCAN_EVENTS (0x01000000)
1725 #define MPI_FCPORTPAGE1_FLAGS_TARGET_MODE_OXID (0x00800000) 1783 #define MPI_FCPORTPAGE1_FLAGS_TARGET_MODE_OXID (0x00800000)
1726 #define MPI_FCPORTPAGE1_FLAGS_PORT_OFFLINE (0x00400000) 1784 #define MPI_FCPORTPAGE1_FLAGS_PORT_OFFLINE (0x00400000)
1727 #define MPI_FCPORTPAGE1_FLAGS_SOFT_ALPA_FALLBACK (0x00200000) 1785 #define MPI_FCPORTPAGE1_FLAGS_SOFT_ALPA_FALLBACK (0x00200000)
1728 #define MPI_FCPORTPAGE1_FLAGS_TARGET_LARGE_CDB_ENABLE (0x00000080) 1786 #define MPI_FCPORTPAGE1_FLAGS_TARGET_LARGE_CDB_ENABLE (0x00000080)
1729 #define MPI_FCPORTPAGE1_FLAGS_MASK_RR_TOV_UNITS (0x00000070) 1787 #define MPI_FCPORTPAGE1_FLAGS_MASK_RR_TOV_UNITS (0x00000070)
1730 #define MPI_FCPORTPAGE1_FLAGS_SUPPRESS_PROT_REG (0x00000008) 1788 #define MPI_FCPORTPAGE1_FLAGS_SUPPRESS_PROT_REG (0x00000008)
1731 #define MPI_FCPORTPAGE1_FLAGS_PLOGI_ON_LOGO (0x00000004) 1789 #define MPI_FCPORTPAGE1_FLAGS_PLOGI_ON_LOGO (0x00000004)
1732 #define MPI_FCPORTPAGE1_FLAGS_MAINTAIN_LOGINS (0x00000002) 1790 #define MPI_FCPORTPAGE1_FLAGS_MAINTAIN_LOGINS (0x00000002)
1733 #define MPI_FCPORTPAGE1_FLAGS_SORT_BY_DID (0x00000001) 1791 #define MPI_FCPORTPAGE1_FLAGS_SORT_BY_DID (0x00000001)
1734 #define MPI_FCPORTPAGE1_FLAGS_SORT_BY_WWN (0x00000000) 1792 #define MPI_FCPORTPAGE1_FLAGS_SORT_BY_WWN (0x00000000)
1735 1793
1736 #define MPI_FCPORTPAGE1_FLAGS_PROT_MASK (0xF0000000) 1794 #define MPI_FCPORTPAGE1_FLAGS_PROT_MASK (0xF0000000)
1737 #define MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT (28) 1795 #define MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT (28)
1738 #define MPI_FCPORTPAGE1_FLAGS_PROT_FCP_INIT ((U32)MPI_PORTFACTS_PROTOCOL_INITIATOR << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT) 1796 #define MPI_FCPORTPAGE1_FLAGS_PROT_FCP_INIT ((U32)MPI_PORTFACTS_PROTOCOL_INITIATOR << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT)
1739 #define MPI_FCPORTPAGE1_FLAGS_PROT_FCP_TARG ((U32)MPI_PORTFACTS_PROTOCOL_TARGET << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT) 1797 #define MPI_FCPORTPAGE1_FLAGS_PROT_FCP_TARG ((U32)MPI_PORTFACTS_PROTOCOL_TARGET << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT)
1740 #define MPI_FCPORTPAGE1_FLAGS_PROT_LAN ((U32)MPI_PORTFACTS_PROTOCOL_LAN << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT) 1798 #define MPI_FCPORTPAGE1_FLAGS_PROT_LAN ((U32)MPI_PORTFACTS_PROTOCOL_LAN << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT)
1741 #define MPI_FCPORTPAGE1_FLAGS_PROT_LOGBUSADDR ((U32)MPI_PORTFACTS_PROTOCOL_LOGBUSADDR << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT) 1799 #define MPI_FCPORTPAGE1_FLAGS_PROT_LOGBUSADDR ((U32)MPI_PORTFACTS_PROTOCOL_LOGBUSADDR << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT)
1742 1800
1743 #define MPI_FCPORTPAGE1_FLAGS_NONE_RR_TOV_UNITS (0x00000000) 1801 #define MPI_FCPORTPAGE1_FLAGS_NONE_RR_TOV_UNITS (0x00000000)
1744 #define MPI_FCPORTPAGE1_FLAGS_THOUSANDTH_RR_TOV_UNITS (0x00000010) 1802 #define MPI_FCPORTPAGE1_FLAGS_THOUSANDTH_RR_TOV_UNITS (0x00000010)
1745 #define MPI_FCPORTPAGE1_FLAGS_TENTH_RR_TOV_UNITS (0x00000030) 1803 #define MPI_FCPORTPAGE1_FLAGS_TENTH_RR_TOV_UNITS (0x00000030)
1746 #define MPI_FCPORTPAGE1_FLAGS_TEN_RR_TOV_UNITS (0x00000050) 1804 #define MPI_FCPORTPAGE1_FLAGS_TEN_RR_TOV_UNITS (0x00000050)
1747 1805
1748 #define MPI_FCPORTPAGE1_HARD_ALPA_NOT_USED (0xFF) 1806 #define MPI_FCPORTPAGE1_HARD_ALPA_NOT_USED (0xFF)
1749 1807
1750 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_MASK (0x0F) 1808 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_MASK (0x0F)
1751 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_1GIG (0x00) 1809 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_1GIG (0x00)
1752 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_2GIG (0x01) 1810 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_2GIG (0x01)
1753 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_4GIG (0x02) 1811 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_4GIG (0x02)
1754 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_10GIG (0x03) 1812 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_10GIG (0x03)
1755 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_AUTO (0x0F) 1813 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_AUTO (0x0F)
1756 1814
1757 #define MPI_FCPORTPAGE1_TOPOLOGY_MASK (0x0F) 1815 #define MPI_FCPORTPAGE1_TOPOLOGY_MASK (0x0F)
1758 #define MPI_FCPORTPAGE1_TOPOLOGY_NLPORT (0x01) 1816 #define MPI_FCPORTPAGE1_TOPOLOGY_NLPORT (0x01)
1759 #define MPI_FCPORTPAGE1_TOPOLOGY_NPORT (0x02) 1817 #define MPI_FCPORTPAGE1_TOPOLOGY_NPORT (0x02)
1760 #define MPI_FCPORTPAGE1_TOPOLOGY_AUTO (0x0F) 1818 #define MPI_FCPORTPAGE1_TOPOLOGY_AUTO (0x0F)
1761 1819
1762 #define MPI_FCPORTPAGE1_ALT_CONN_UNKNOWN (0x00) 1820 #define MPI_FCPORTPAGE1_ALT_CONN_UNKNOWN (0x00)
1763 1821
1764 #define MPI_FCPORTPAGE1_INITIATOR_DEV_TIMEOUT_MASK (0x7F) 1822 #define MPI_FCPORTPAGE1_INITIATOR_DEV_TIMEOUT_MASK (0x7F)
1765 #define MPI_FCPORTPAGE1_INITIATOR_DEV_UNIT_16 (0x80) 1823 #define MPI_FCPORTPAGE1_INITIATOR_DEV_UNIT_16 (0x80)
1766 1824
1767 1825
1768 typedef struct _CONFIG_PAGE_FC_PORT_2 1826 typedef struct _CONFIG_PAGE_FC_PORT_2
1769 { 1827 {
1770 CONFIG_PAGE_HEADER Header; /* 00h */ 1828 CONFIG_PAGE_HEADER Header; /* 00h */
1771 U8 NumberActive; /* 04h */ 1829 U8 NumberActive; /* 04h */
1772 U8 ALPA[127]; /* 05h */ 1830 U8 ALPA[127]; /* 05h */
1773 } CONFIG_PAGE_FC_PORT_2, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_2, 1831 } CONFIG_PAGE_FC_PORT_2, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_2,
1774 FCPortPage2_t, MPI_POINTER pFCPortPage2_t; 1832 FCPortPage2_t, MPI_POINTER pFCPortPage2_t;
1775 1833
1776 #define MPI_FCPORTPAGE2_PAGEVERSION (0x01) 1834 #define MPI_FCPORTPAGE2_PAGEVERSION (0x01)
1777 1835
1778 1836
1779 typedef struct _WWN_FORMAT 1837 typedef struct _WWN_FORMAT
1780 { 1838 {
1781 U64 WWNN; /* 00h */ 1839 U64 WWNN; /* 00h */
1782 U64 WWPN; /* 08h */ 1840 U64 WWPN; /* 08h */
1783 } WWN_FORMAT, MPI_POINTER PTR_WWN_FORMAT, 1841 } WWN_FORMAT, MPI_POINTER PTR_WWN_FORMAT,
1784 WWNFormat, MPI_POINTER pWWNFormat; 1842 WWNFormat, MPI_POINTER pWWNFormat;
1785 1843
1786 typedef union _FC_PORT_PERSISTENT_PHYSICAL_ID 1844 typedef union _FC_PORT_PERSISTENT_PHYSICAL_ID
1787 { 1845 {
1788 WWN_FORMAT WWN; 1846 WWN_FORMAT WWN;
1789 U32 Did; 1847 U32 Did;
1790 } FC_PORT_PERSISTENT_PHYSICAL_ID, MPI_POINTER PTR_FC_PORT_PERSISTENT_PHYSICAL_ID, 1848 } FC_PORT_PERSISTENT_PHYSICAL_ID, MPI_POINTER PTR_FC_PORT_PERSISTENT_PHYSICAL_ID,
1791 PersistentPhysicalId_t, MPI_POINTER pPersistentPhysicalId_t; 1849 PersistentPhysicalId_t, MPI_POINTER pPersistentPhysicalId_t;
1792 1850
1793 typedef struct _FC_PORT_PERSISTENT 1851 typedef struct _FC_PORT_PERSISTENT
1794 { 1852 {
1795 FC_PORT_PERSISTENT_PHYSICAL_ID PhysicalIdentifier; /* 00h */ 1853 FC_PORT_PERSISTENT_PHYSICAL_ID PhysicalIdentifier; /* 00h */
1796 U8 TargetID; /* 10h */ 1854 U8 TargetID; /* 10h */
1797 U8 Bus; /* 11h */ 1855 U8 Bus; /* 11h */
1798 U16 Flags; /* 12h */ 1856 U16 Flags; /* 12h */
1799 } FC_PORT_PERSISTENT, MPI_POINTER PTR_FC_PORT_PERSISTENT, 1857 } FC_PORT_PERSISTENT, MPI_POINTER PTR_FC_PORT_PERSISTENT,
1800 PersistentData_t, MPI_POINTER pPersistentData_t; 1858 PersistentData_t, MPI_POINTER pPersistentData_t;
1801 1859
1802 #define MPI_PERSISTENT_FLAGS_SHIFT (16) 1860 #define MPI_PERSISTENT_FLAGS_SHIFT (16)
1803 #define MPI_PERSISTENT_FLAGS_ENTRY_VALID (0x0001) 1861 #define MPI_PERSISTENT_FLAGS_ENTRY_VALID (0x0001)
1804 #define MPI_PERSISTENT_FLAGS_SCAN_ID (0x0002) 1862 #define MPI_PERSISTENT_FLAGS_SCAN_ID (0x0002)
1805 #define MPI_PERSISTENT_FLAGS_SCAN_LUNS (0x0004) 1863 #define MPI_PERSISTENT_FLAGS_SCAN_LUNS (0x0004)
1806 #define MPI_PERSISTENT_FLAGS_BOOT_DEVICE (0x0008) 1864 #define MPI_PERSISTENT_FLAGS_BOOT_DEVICE (0x0008)
1807 #define MPI_PERSISTENT_FLAGS_BY_DID (0x0080) 1865 #define MPI_PERSISTENT_FLAGS_BY_DID (0x0080)
1808 1866
1809 /* 1867 /*
1810 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to 1868 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
1811 * one and check Header.PageLength at runtime. 1869 * one and check Header.PageLength at runtime.
1812 */ 1870 */
1813 #ifndef MPI_FC_PORT_PAGE_3_ENTRY_MAX 1871 #ifndef MPI_FC_PORT_PAGE_3_ENTRY_MAX
1814 #define MPI_FC_PORT_PAGE_3_ENTRY_MAX (1) 1872 #define MPI_FC_PORT_PAGE_3_ENTRY_MAX (1)
1815 #endif 1873 #endif
1816 1874
1817 typedef struct _CONFIG_PAGE_FC_PORT_3 1875 typedef struct _CONFIG_PAGE_FC_PORT_3
1818 { 1876 {
1819 CONFIG_PAGE_HEADER Header; /* 00h */ 1877 CONFIG_PAGE_HEADER Header; /* 00h */
1820 FC_PORT_PERSISTENT Entry[MPI_FC_PORT_PAGE_3_ENTRY_MAX]; /* 04h */ 1878 FC_PORT_PERSISTENT Entry[MPI_FC_PORT_PAGE_3_ENTRY_MAX]; /* 04h */
1821 } CONFIG_PAGE_FC_PORT_3, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_3, 1879 } CONFIG_PAGE_FC_PORT_3, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_3,
1822 FCPortPage3_t, MPI_POINTER pFCPortPage3_t; 1880 FCPortPage3_t, MPI_POINTER pFCPortPage3_t;
1823 1881
1824 #define MPI_FCPORTPAGE3_PAGEVERSION (0x01) 1882 #define MPI_FCPORTPAGE3_PAGEVERSION (0x01)
1825 1883
1826 1884
1827 typedef struct _CONFIG_PAGE_FC_PORT_4 1885 typedef struct _CONFIG_PAGE_FC_PORT_4
1828 { 1886 {
1829 CONFIG_PAGE_HEADER Header; /* 00h */ 1887 CONFIG_PAGE_HEADER Header; /* 00h */
1830 U32 PortFlags; /* 04h */ 1888 U32 PortFlags; /* 04h */
1831 U32 PortSettings; /* 08h */ 1889 U32 PortSettings; /* 08h */
1832 } CONFIG_PAGE_FC_PORT_4, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_4, 1890 } CONFIG_PAGE_FC_PORT_4, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_4,
1833 FCPortPage4_t, MPI_POINTER pFCPortPage4_t; 1891 FCPortPage4_t, MPI_POINTER pFCPortPage4_t;
1834 1892
1835 #define MPI_FCPORTPAGE4_PAGEVERSION (0x00) 1893 #define MPI_FCPORTPAGE4_PAGEVERSION (0x00)
1836 1894
1837 #define MPI_FCPORTPAGE4_PORT_FLAGS_ALTERNATE_CHS (0x00000008) 1895 #define MPI_FCPORTPAGE4_PORT_FLAGS_ALTERNATE_CHS (0x00000008)
1838 1896
1839 #define MPI_FCPORTPAGE4_PORT_MASK_INIT_HBA (0x00000030) 1897 #define MPI_FCPORTPAGE4_PORT_MASK_INIT_HBA (0x00000030)
1840 #define MPI_FCPORTPAGE4_PORT_DISABLE_INIT_HBA (0x00000000) 1898 #define MPI_FCPORTPAGE4_PORT_DISABLE_INIT_HBA (0x00000000)
1841 #define MPI_FCPORTPAGE4_PORT_BIOS_INIT_HBA (0x00000010) 1899 #define MPI_FCPORTPAGE4_PORT_BIOS_INIT_HBA (0x00000010)
1842 #define MPI_FCPORTPAGE4_PORT_OS_INIT_HBA (0x00000020) 1900 #define MPI_FCPORTPAGE4_PORT_OS_INIT_HBA (0x00000020)
1843 #define MPI_FCPORTPAGE4_PORT_BIOS_OS_INIT_HBA (0x00000030) 1901 #define MPI_FCPORTPAGE4_PORT_BIOS_OS_INIT_HBA (0x00000030)
1844 #define MPI_FCPORTPAGE4_PORT_REMOVABLE_MEDIA (0x000000C0) 1902 #define MPI_FCPORTPAGE4_PORT_REMOVABLE_MEDIA (0x000000C0)
1845 #define MPI_FCPORTPAGE4_PORT_SPINUP_DELAY_MASK (0x00000F00) 1903 #define MPI_FCPORTPAGE4_PORT_SPINUP_DELAY_MASK (0x00000F00)
1846 1904
1847 1905
1848 typedef struct _CONFIG_PAGE_FC_PORT_5_ALIAS_INFO 1906 typedef struct _CONFIG_PAGE_FC_PORT_5_ALIAS_INFO
1849 { 1907 {
1850 U8 Flags; /* 00h */ 1908 U8 Flags; /* 00h */
1851 U8 AliasAlpa; /* 01h */ 1909 U8 AliasAlpa; /* 01h */
1852 U16 Reserved; /* 02h */ 1910 U16 Reserved; /* 02h */
1853 U64 AliasWWNN; /* 04h */ 1911 U64 AliasWWNN; /* 04h */
1854 U64 AliasWWPN; /* 0Ch */ 1912 U64 AliasWWPN; /* 0Ch */
1855 } CONFIG_PAGE_FC_PORT_5_ALIAS_INFO, 1913 } CONFIG_PAGE_FC_PORT_5_ALIAS_INFO,
1856 MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_5_ALIAS_INFO, 1914 MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_5_ALIAS_INFO,
1857 FcPortPage5AliasInfo_t, MPI_POINTER pFcPortPage5AliasInfo_t; 1915 FcPortPage5AliasInfo_t, MPI_POINTER pFcPortPage5AliasInfo_t;
1858 1916
1859 typedef struct _CONFIG_PAGE_FC_PORT_5 1917 typedef struct _CONFIG_PAGE_FC_PORT_5
1860 { 1918 {
1861 CONFIG_PAGE_HEADER Header; /* 00h */ 1919 CONFIG_PAGE_HEADER Header; /* 00h */
1862 CONFIG_PAGE_FC_PORT_5_ALIAS_INFO AliasInfo; /* 04h */ 1920 CONFIG_PAGE_FC_PORT_5_ALIAS_INFO AliasInfo; /* 04h */
1863 } CONFIG_PAGE_FC_PORT_5, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_5, 1921 } CONFIG_PAGE_FC_PORT_5, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_5,
1864 FCPortPage5_t, MPI_POINTER pFCPortPage5_t; 1922 FCPortPage5_t, MPI_POINTER pFCPortPage5_t;
1865 1923
1866 #define MPI_FCPORTPAGE5_PAGEVERSION (0x02) 1924 #define MPI_FCPORTPAGE5_PAGEVERSION (0x02)
1867 1925
1868 #define MPI_FCPORTPAGE5_FLAGS_ALPA_ACQUIRED (0x01) 1926 #define MPI_FCPORTPAGE5_FLAGS_ALPA_ACQUIRED (0x01)
1869 #define MPI_FCPORTPAGE5_FLAGS_HARD_ALPA (0x02) 1927 #define MPI_FCPORTPAGE5_FLAGS_HARD_ALPA (0x02)
1870 #define MPI_FCPORTPAGE5_FLAGS_HARD_WWNN (0x04) 1928 #define MPI_FCPORTPAGE5_FLAGS_HARD_WWNN (0x04)
1871 #define MPI_FCPORTPAGE5_FLAGS_HARD_WWPN (0x08) 1929 #define MPI_FCPORTPAGE5_FLAGS_HARD_WWPN (0x08)
1872 #define MPI_FCPORTPAGE5_FLAGS_DISABLE (0x10) 1930 #define MPI_FCPORTPAGE5_FLAGS_DISABLE (0x10)
1873 1931
1874 typedef struct _CONFIG_PAGE_FC_PORT_6 1932 typedef struct _CONFIG_PAGE_FC_PORT_6
1875 { 1933 {
1876 CONFIG_PAGE_HEADER Header; /* 00h */ 1934 CONFIG_PAGE_HEADER Header; /* 00h */
1877 U32 Reserved; /* 04h */ 1935 U32 Reserved; /* 04h */
1878 U64 TimeSinceReset; /* 08h */ 1936 U64 TimeSinceReset; /* 08h */
1879 U64 TxFrames; /* 10h */ 1937 U64 TxFrames; /* 10h */
1880 U64 RxFrames; /* 18h */ 1938 U64 RxFrames; /* 18h */
1881 U64 TxWords; /* 20h */ 1939 U64 TxWords; /* 20h */
1882 U64 RxWords; /* 28h */ 1940 U64 RxWords; /* 28h */
1883 U64 LipCount; /* 30h */ 1941 U64 LipCount; /* 30h */
1884 U64 NosCount; /* 38h */ 1942 U64 NosCount; /* 38h */
1885 U64 ErrorFrames; /* 40h */ 1943 U64 ErrorFrames; /* 40h */
1886 U64 DumpedFrames; /* 48h */ 1944 U64 DumpedFrames; /* 48h */
1887 U64 LinkFailureCount; /* 50h */ 1945 U64 LinkFailureCount; /* 50h */
1888 U64 LossOfSyncCount; /* 58h */ 1946 U64 LossOfSyncCount; /* 58h */
1889 U64 LossOfSignalCount; /* 60h */ 1947 U64 LossOfSignalCount; /* 60h */
1890 U64 PrimativeSeqErrCount; /* 68h */ 1948 U64 PrimativeSeqErrCount; /* 68h */
1891 U64 InvalidTxWordCount; /* 70h */ 1949 U64 InvalidTxWordCount; /* 70h */
1892 U64 InvalidCrcCount; /* 78h */ 1950 U64 InvalidCrcCount; /* 78h */
1893 U64 FcpInitiatorIoCount; /* 80h */ 1951 U64 FcpInitiatorIoCount; /* 80h */
1894 } CONFIG_PAGE_FC_PORT_6, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_6, 1952 } CONFIG_PAGE_FC_PORT_6, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_6,
1895 FCPortPage6_t, MPI_POINTER pFCPortPage6_t; 1953 FCPortPage6_t, MPI_POINTER pFCPortPage6_t;
1896 1954
1897 #define MPI_FCPORTPAGE6_PAGEVERSION (0x00) 1955 #define MPI_FCPORTPAGE6_PAGEVERSION (0x00)
1898 1956
1899 1957
1900 typedef struct _CONFIG_PAGE_FC_PORT_7 1958 typedef struct _CONFIG_PAGE_FC_PORT_7
1901 { 1959 {
1902 CONFIG_PAGE_HEADER Header; /* 00h */ 1960 CONFIG_PAGE_HEADER Header; /* 00h */
1903 U32 Reserved; /* 04h */ 1961 U32 Reserved; /* 04h */
1904 U8 PortSymbolicName[256]; /* 08h */ 1962 U8 PortSymbolicName[256]; /* 08h */
1905 } CONFIG_PAGE_FC_PORT_7, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_7, 1963 } CONFIG_PAGE_FC_PORT_7, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_7,
1906 FCPortPage7_t, MPI_POINTER pFCPortPage7_t; 1964 FCPortPage7_t, MPI_POINTER pFCPortPage7_t;
1907 1965
1908 #define MPI_FCPORTPAGE7_PAGEVERSION (0x00) 1966 #define MPI_FCPORTPAGE7_PAGEVERSION (0x00)
1909 1967
1910 1968
1911 typedef struct _CONFIG_PAGE_FC_PORT_8 1969 typedef struct _CONFIG_PAGE_FC_PORT_8
1912 { 1970 {
1913 CONFIG_PAGE_HEADER Header; /* 00h */ 1971 CONFIG_PAGE_HEADER Header; /* 00h */
1914 U32 BitVector[8]; /* 04h */ 1972 U32 BitVector[8]; /* 04h */
1915 } CONFIG_PAGE_FC_PORT_8, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_8, 1973 } CONFIG_PAGE_FC_PORT_8, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_8,
1916 FCPortPage8_t, MPI_POINTER pFCPortPage8_t; 1974 FCPortPage8_t, MPI_POINTER pFCPortPage8_t;
1917 1975
1918 #define MPI_FCPORTPAGE8_PAGEVERSION (0x00) 1976 #define MPI_FCPORTPAGE8_PAGEVERSION (0x00)
1919 1977
1920 1978
1921 typedef struct _CONFIG_PAGE_FC_PORT_9 1979 typedef struct _CONFIG_PAGE_FC_PORT_9
1922 { 1980 {
1923 CONFIG_PAGE_HEADER Header; /* 00h */ 1981 CONFIG_PAGE_HEADER Header; /* 00h */
1924 U32 Reserved; /* 04h */ 1982 U32 Reserved; /* 04h */
1925 U64 GlobalWWPN; /* 08h */ 1983 U64 GlobalWWPN; /* 08h */
1926 U64 GlobalWWNN; /* 10h */ 1984 U64 GlobalWWNN; /* 10h */
1927 U32 UnitType; /* 18h */ 1985 U32 UnitType; /* 18h */
1928 U32 PhysicalPortNumber; /* 1Ch */ 1986 U32 PhysicalPortNumber; /* 1Ch */
1929 U32 NumAttachedNodes; /* 20h */ 1987 U32 NumAttachedNodes; /* 20h */
1930 U16 IPVersion; /* 24h */ 1988 U16 IPVersion; /* 24h */
1931 U16 UDPPortNumber; /* 26h */ 1989 U16 UDPPortNumber; /* 26h */
1932 U8 IPAddress[16]; /* 28h */ 1990 U8 IPAddress[16]; /* 28h */
1933 U16 Reserved1; /* 38h */ 1991 U16 Reserved1; /* 38h */
1934 U16 TopologyDiscoveryFlags; /* 3Ah */ 1992 U16 TopologyDiscoveryFlags; /* 3Ah */
1935 } CONFIG_PAGE_FC_PORT_9, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_9, 1993 } CONFIG_PAGE_FC_PORT_9, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_9,
1936 FCPortPage9_t, MPI_POINTER pFCPortPage9_t; 1994 FCPortPage9_t, MPI_POINTER pFCPortPage9_t;
1937 1995
1938 #define MPI_FCPORTPAGE9_PAGEVERSION (0x00) 1996 #define MPI_FCPORTPAGE9_PAGEVERSION (0x00)
1939 1997
1940 1998
1941 typedef struct _CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA 1999 typedef struct _CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA
1942 { 2000 {
1943 U8 Id; /* 10h */ 2001 U8 Id; /* 10h */
1944 U8 ExtId; /* 11h */ 2002 U8 ExtId; /* 11h */
1945 U8 Connector; /* 12h */ 2003 U8 Connector; /* 12h */
1946 U8 Transceiver[8]; /* 13h */ 2004 U8 Transceiver[8]; /* 13h */
1947 U8 Encoding; /* 1Bh */ 2005 U8 Encoding; /* 1Bh */
1948 U8 BitRate_100mbs; /* 1Ch */ 2006 U8 BitRate_100mbs; /* 1Ch */
1949 U8 Reserved1; /* 1Dh */ 2007 U8 Reserved1; /* 1Dh */
1950 U8 Length9u_km; /* 1Eh */ 2008 U8 Length9u_km; /* 1Eh */
1951 U8 Length9u_100m; /* 1Fh */ 2009 U8 Length9u_100m; /* 1Fh */
1952 U8 Length50u_10m; /* 20h */ 2010 U8 Length50u_10m; /* 20h */
1953 U8 Length62p5u_10m; /* 21h */ 2011 U8 Length62p5u_10m; /* 21h */
1954 U8 LengthCopper_m; /* 22h */ 2012 U8 LengthCopper_m; /* 22h */
1955 U8 Reseverved2; /* 22h */ 2013 U8 Reseverved2; /* 22h */
1956 U8 VendorName[16]; /* 24h */ 2014 U8 VendorName[16]; /* 24h */
1957 U8 Reserved3; /* 34h */ 2015 U8 Reserved3; /* 34h */
1958 U8 VendorOUI[3]; /* 35h */ 2016 U8 VendorOUI[3]; /* 35h */
1959 U8 VendorPN[16]; /* 38h */ 2017 U8 VendorPN[16]; /* 38h */
1960 U8 VendorRev[4]; /* 48h */ 2018 U8 VendorRev[4]; /* 48h */
1961 U16 Wavelength; /* 4Ch */ 2019 U16 Wavelength; /* 4Ch */
1962 U8 Reserved4; /* 4Eh */ 2020 U8 Reserved4; /* 4Eh */
1963 U8 CC_BASE; /* 4Fh */ 2021 U8 CC_BASE; /* 4Fh */
1964 } CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA, 2022 } CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA,
1965 MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA, 2023 MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA,
1966 FCPortPage10BaseSfpData_t, MPI_POINTER pFCPortPage10BaseSfpData_t; 2024 FCPortPage10BaseSfpData_t, MPI_POINTER pFCPortPage10BaseSfpData_t;
1967 2025
1968 #define MPI_FCPORT10_BASE_ID_UNKNOWN (0x00) 2026 #define MPI_FCPORT10_BASE_ID_UNKNOWN (0x00)
1969 #define MPI_FCPORT10_BASE_ID_GBIC (0x01) 2027 #define MPI_FCPORT10_BASE_ID_GBIC (0x01)
1970 #define MPI_FCPORT10_BASE_ID_FIXED (0x02) 2028 #define MPI_FCPORT10_BASE_ID_FIXED (0x02)
1971 #define MPI_FCPORT10_BASE_ID_SFP (0x03) 2029 #define MPI_FCPORT10_BASE_ID_SFP (0x03)
1972 #define MPI_FCPORT10_BASE_ID_SFP_MIN (0x04) 2030 #define MPI_FCPORT10_BASE_ID_SFP_MIN (0x04)
1973 #define MPI_FCPORT10_BASE_ID_SFP_MAX (0x7F) 2031 #define MPI_FCPORT10_BASE_ID_SFP_MAX (0x7F)
1974 #define MPI_FCPORT10_BASE_ID_VEND_SPEC_MASK (0x80) 2032 #define MPI_FCPORT10_BASE_ID_VEND_SPEC_MASK (0x80)
1975 2033
1976 #define MPI_FCPORT10_BASE_EXTID_UNKNOWN (0x00) 2034 #define MPI_FCPORT10_BASE_EXTID_UNKNOWN (0x00)
1977 #define MPI_FCPORT10_BASE_EXTID_MODDEF1 (0x01) 2035 #define MPI_FCPORT10_BASE_EXTID_MODDEF1 (0x01)
1978 #define MPI_FCPORT10_BASE_EXTID_MODDEF2 (0x02) 2036 #define MPI_FCPORT10_BASE_EXTID_MODDEF2 (0x02)
1979 #define MPI_FCPORT10_BASE_EXTID_MODDEF3 (0x03) 2037 #define MPI_FCPORT10_BASE_EXTID_MODDEF3 (0x03)
1980 #define MPI_FCPORT10_BASE_EXTID_SEEPROM (0x04) 2038 #define MPI_FCPORT10_BASE_EXTID_SEEPROM (0x04)
1981 #define MPI_FCPORT10_BASE_EXTID_MODDEF5 (0x05) 2039 #define MPI_FCPORT10_BASE_EXTID_MODDEF5 (0x05)
1982 #define MPI_FCPORT10_BASE_EXTID_MODDEF6 (0x06) 2040 #define MPI_FCPORT10_BASE_EXTID_MODDEF6 (0x06)
1983 #define MPI_FCPORT10_BASE_EXTID_MODDEF7 (0x07) 2041 #define MPI_FCPORT10_BASE_EXTID_MODDEF7 (0x07)
1984 #define MPI_FCPORT10_BASE_EXTID_VNDSPC_MASK (0x80) 2042 #define MPI_FCPORT10_BASE_EXTID_VNDSPC_MASK (0x80)
1985 2043
1986 #define MPI_FCPORT10_BASE_CONN_UNKNOWN (0x00) 2044 #define MPI_FCPORT10_BASE_CONN_UNKNOWN (0x00)
1987 #define MPI_FCPORT10_BASE_CONN_SC (0x01) 2045 #define MPI_FCPORT10_BASE_CONN_SC (0x01)
1988 #define MPI_FCPORT10_BASE_CONN_COPPER1 (0x02) 2046 #define MPI_FCPORT10_BASE_CONN_COPPER1 (0x02)
1989 #define MPI_FCPORT10_BASE_CONN_COPPER2 (0x03) 2047 #define MPI_FCPORT10_BASE_CONN_COPPER2 (0x03)
1990 #define MPI_FCPORT10_BASE_CONN_BNC_TNC (0x04) 2048 #define MPI_FCPORT10_BASE_CONN_BNC_TNC (0x04)
1991 #define MPI_FCPORT10_BASE_CONN_COAXIAL (0x05) 2049 #define MPI_FCPORT10_BASE_CONN_COAXIAL (0x05)
1992 #define MPI_FCPORT10_BASE_CONN_FIBERJACK (0x06) 2050 #define MPI_FCPORT10_BASE_CONN_FIBERJACK (0x06)
1993 #define MPI_FCPORT10_BASE_CONN_LC (0x07) 2051 #define MPI_FCPORT10_BASE_CONN_LC (0x07)
1994 #define MPI_FCPORT10_BASE_CONN_MT_RJ (0x08) 2052 #define MPI_FCPORT10_BASE_CONN_MT_RJ (0x08)
1995 #define MPI_FCPORT10_BASE_CONN_MU (0x09) 2053 #define MPI_FCPORT10_BASE_CONN_MU (0x09)
1996 #define MPI_FCPORT10_BASE_CONN_SG (0x0A) 2054 #define MPI_FCPORT10_BASE_CONN_SG (0x0A)
1997 #define MPI_FCPORT10_BASE_CONN_OPT_PIGT (0x0B) 2055 #define MPI_FCPORT10_BASE_CONN_OPT_PIGT (0x0B)
1998 #define MPI_FCPORT10_BASE_CONN_RSV1_MIN (0x0C) 2056 #define MPI_FCPORT10_BASE_CONN_RSV1_MIN (0x0C)
1999 #define MPI_FCPORT10_BASE_CONN_RSV1_MAX (0x1F) 2057 #define MPI_FCPORT10_BASE_CONN_RSV1_MAX (0x1F)
2000 #define MPI_FCPORT10_BASE_CONN_HSSDC_II (0x20) 2058 #define MPI_FCPORT10_BASE_CONN_HSSDC_II (0x20)
2001 #define MPI_FCPORT10_BASE_CONN_CPR_PIGT (0x21) 2059 #define MPI_FCPORT10_BASE_CONN_CPR_PIGT (0x21)
2002 #define MPI_FCPORT10_BASE_CONN_RSV2_MIN (0x22) 2060 #define MPI_FCPORT10_BASE_CONN_RSV2_MIN (0x22)
2003 #define MPI_FCPORT10_BASE_CONN_RSV2_MAX (0x7F) 2061 #define MPI_FCPORT10_BASE_CONN_RSV2_MAX (0x7F)
2004 #define MPI_FCPORT10_BASE_CONN_VNDSPC_MASK (0x80) 2062 #define MPI_FCPORT10_BASE_CONN_VNDSPC_MASK (0x80)
2005 2063
2006 #define MPI_FCPORT10_BASE_ENCODE_UNSPEC (0x00) 2064 #define MPI_FCPORT10_BASE_ENCODE_UNSPEC (0x00)
2007 #define MPI_FCPORT10_BASE_ENCODE_8B10B (0x01) 2065 #define MPI_FCPORT10_BASE_ENCODE_8B10B (0x01)
2008 #define MPI_FCPORT10_BASE_ENCODE_4B5B (0x02) 2066 #define MPI_FCPORT10_BASE_ENCODE_4B5B (0x02)
2009 #define MPI_FCPORT10_BASE_ENCODE_NRZ (0x03) 2067 #define MPI_FCPORT10_BASE_ENCODE_NRZ (0x03)
2010 #define MPI_FCPORT10_BASE_ENCODE_MANCHESTER (0x04) 2068 #define MPI_FCPORT10_BASE_ENCODE_MANCHESTER (0x04)
2011 2069
2012 2070
2013 typedef struct _CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA 2071 typedef struct _CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA
2014 { 2072 {
2015 U8 Options[2]; /* 50h */ 2073 U8 Options[2]; /* 50h */
2016 U8 BitRateMax; /* 52h */ 2074 U8 BitRateMax; /* 52h */
2017 U8 BitRateMin; /* 53h */ 2075 U8 BitRateMin; /* 53h */
2018 U8 VendorSN[16]; /* 54h */ 2076 U8 VendorSN[16]; /* 54h */
2019 U8 DateCode[8]; /* 64h */ 2077 U8 DateCode[8]; /* 64h */
2020 U8 DiagMonitoringType; /* 6Ch */ 2078 U8 DiagMonitoringType; /* 6Ch */
2021 U8 EnhancedOptions; /* 6Dh */ 2079 U8 EnhancedOptions; /* 6Dh */
2022 U8 SFF8472Compliance; /* 6Eh */ 2080 U8 SFF8472Compliance; /* 6Eh */
2023 U8 CC_EXT; /* 6Fh */ 2081 U8 CC_EXT; /* 6Fh */
2024 } CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA, 2082 } CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA,
2025 MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA, 2083 MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA,
2026 FCPortPage10ExtendedSfpData_t, MPI_POINTER pFCPortPage10ExtendedSfpData_t; 2084 FCPortPage10ExtendedSfpData_t, MPI_POINTER pFCPortPage10ExtendedSfpData_t;
2027 2085
2028 #define MPI_FCPORT10_EXT_OPTION1_RATESEL (0x20) 2086 #define MPI_FCPORT10_EXT_OPTION1_RATESEL (0x20)
2029 #define MPI_FCPORT10_EXT_OPTION1_TX_DISABLE (0x10) 2087 #define MPI_FCPORT10_EXT_OPTION1_TX_DISABLE (0x10)
2030 #define MPI_FCPORT10_EXT_OPTION1_TX_FAULT (0x08) 2088 #define MPI_FCPORT10_EXT_OPTION1_TX_FAULT (0x08)
2031 #define MPI_FCPORT10_EXT_OPTION1_LOS_INVERT (0x04) 2089 #define MPI_FCPORT10_EXT_OPTION1_LOS_INVERT (0x04)
2032 #define MPI_FCPORT10_EXT_OPTION1_LOS (0x02) 2090 #define MPI_FCPORT10_EXT_OPTION1_LOS (0x02)
2033 2091
2034 2092
2035 typedef struct _CONFIG_PAGE_FC_PORT_10 2093 typedef struct _CONFIG_PAGE_FC_PORT_10
2036 { 2094 {
2037 CONFIG_PAGE_HEADER Header; /* 00h */ 2095 CONFIG_PAGE_HEADER Header; /* 00h */
2038 U8 Flags; /* 04h */ 2096 U8 Flags; /* 04h */
2039 U8 Reserved1; /* 05h */ 2097 U8 Reserved1; /* 05h */
2040 U16 Reserved2; /* 06h */ 2098 U16 Reserved2; /* 06h */
2041 U32 HwConfig1; /* 08h */ 2099 U32 HwConfig1; /* 08h */
2042 U32 HwConfig2; /* 0Ch */ 2100 U32 HwConfig2; /* 0Ch */
2043 CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA Base; /* 10h */ 2101 CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA Base; /* 10h */
2044 CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA Extended; /* 50h */ 2102 CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA Extended; /* 50h */
2045 U8 VendorSpecific[32]; /* 70h */ 2103 U8 VendorSpecific[32]; /* 70h */
2046 } CONFIG_PAGE_FC_PORT_10, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_10, 2104 } CONFIG_PAGE_FC_PORT_10, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_10,
2047 FCPortPage10_t, MPI_POINTER pFCPortPage10_t; 2105 FCPortPage10_t, MPI_POINTER pFCPortPage10_t;
2048 2106
2049 #define MPI_FCPORTPAGE10_PAGEVERSION (0x01) 2107 #define MPI_FCPORTPAGE10_PAGEVERSION (0x01)
2050 2108
2051 /* standard MODDEF pin definitions (from GBIC spec.) */ 2109 /* standard MODDEF pin definitions (from GBIC spec.) */
2052 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_MASK (0x00000007) 2110 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_MASK (0x00000007)
2053 #define MPI_FCPORTPAGE10_FLAGS_MODDEF2 (0x00000001) 2111 #define MPI_FCPORTPAGE10_FLAGS_MODDEF2 (0x00000001)
2054 #define MPI_FCPORTPAGE10_FLAGS_MODDEF1 (0x00000002) 2112 #define MPI_FCPORTPAGE10_FLAGS_MODDEF1 (0x00000002)
2055 #define MPI_FCPORTPAGE10_FLAGS_MODDEF0 (0x00000004) 2113 #define MPI_FCPORTPAGE10_FLAGS_MODDEF0 (0x00000004)
2056 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_NOGBIC (0x00000007) 2114 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_NOGBIC (0x00000007)
2057 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_CPR_IEEE_CX (0x00000006) 2115 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_CPR_IEEE_CX (0x00000006)
2058 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_COPPER (0x00000005) 2116 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_COPPER (0x00000005)
2059 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_OPTICAL_LW (0x00000004) 2117 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_OPTICAL_LW (0x00000004)
2060 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_SEEPROM (0x00000003) 2118 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_SEEPROM (0x00000003)
2061 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_SW_OPTICAL (0x00000002) 2119 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_SW_OPTICAL (0x00000002)
2062 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_LX_IEEE_OPT_LW (0x00000001) 2120 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_LX_IEEE_OPT_LW (0x00000001)
2063 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_SX_IEEE_OPT_SW (0x00000000) 2121 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_SX_IEEE_OPT_SW (0x00000000)
2064 2122
2065 #define MPI_FCPORTPAGE10_FLAGS_CC_BASE_OK (0x00000010) 2123 #define MPI_FCPORTPAGE10_FLAGS_CC_BASE_OK (0x00000010)
2066 #define MPI_FCPORTPAGE10_FLAGS_CC_EXT_OK (0x00000020) 2124 #define MPI_FCPORTPAGE10_FLAGS_CC_EXT_OK (0x00000020)
2067 2125
2068 2126
2069 /**************************************************************************** 2127 /****************************************************************************
2070 * FC Device Config Pages 2128 * FC Device Config Pages
2071 ****************************************************************************/ 2129 ****************************************************************************/
2072 2130
2073 typedef struct _CONFIG_PAGE_FC_DEVICE_0 2131 typedef struct _CONFIG_PAGE_FC_DEVICE_0
2074 { 2132 {
2075 CONFIG_PAGE_HEADER Header; /* 00h */ 2133 CONFIG_PAGE_HEADER Header; /* 00h */
2076 U64 WWNN; /* 04h */ 2134 U64 WWNN; /* 04h */
2077 U64 WWPN; /* 0Ch */ 2135 U64 WWPN; /* 0Ch */
2078 U32 PortIdentifier; /* 14h */ 2136 U32 PortIdentifier; /* 14h */
2079 U8 Protocol; /* 18h */ 2137 U8 Protocol; /* 18h */
2080 U8 Flags; /* 19h */ 2138 U8 Flags; /* 19h */
2081 U16 BBCredit; /* 1Ah */ 2139 U16 BBCredit; /* 1Ah */
2082 U16 MaxRxFrameSize; /* 1Ch */ 2140 U16 MaxRxFrameSize; /* 1Ch */
2083 U8 ADISCHardALPA; /* 1Eh */ 2141 U8 ADISCHardALPA; /* 1Eh */
2084 U8 PortNumber; /* 1Fh */ 2142 U8 PortNumber; /* 1Fh */
2085 U8 FcPhLowestVersion; /* 20h */ 2143 U8 FcPhLowestVersion; /* 20h */
2086 U8 FcPhHighestVersion; /* 21h */ 2144 U8 FcPhHighestVersion; /* 21h */
2087 U8 CurrentTargetID; /* 22h */ 2145 U8 CurrentTargetID; /* 22h */
2088 U8 CurrentBus; /* 23h */ 2146 U8 CurrentBus; /* 23h */
2089 } CONFIG_PAGE_FC_DEVICE_0, MPI_POINTER PTR_CONFIG_PAGE_FC_DEVICE_0, 2147 } CONFIG_PAGE_FC_DEVICE_0, MPI_POINTER PTR_CONFIG_PAGE_FC_DEVICE_0,
2090 FCDevicePage0_t, MPI_POINTER pFCDevicePage0_t; 2148 FCDevicePage0_t, MPI_POINTER pFCDevicePage0_t;
2091 2149
2092 #define MPI_FC_DEVICE_PAGE0_PAGEVERSION (0x03) 2150 #define MPI_FC_DEVICE_PAGE0_PAGEVERSION (0x03)
2093 2151
2094 #define MPI_FC_DEVICE_PAGE0_FLAGS_TARGETID_BUS_VALID (0x01) 2152 #define MPI_FC_DEVICE_PAGE0_FLAGS_TARGETID_BUS_VALID (0x01)
2095 #define MPI_FC_DEVICE_PAGE0_FLAGS_PLOGI_INVALID (0x02) 2153 #define MPI_FC_DEVICE_PAGE0_FLAGS_PLOGI_INVALID (0x02)
2096 #define MPI_FC_DEVICE_PAGE0_FLAGS_PRLI_INVALID (0x04) 2154 #define MPI_FC_DEVICE_PAGE0_FLAGS_PRLI_INVALID (0x04)
2097 2155
2098 #define MPI_FC_DEVICE_PAGE0_PROT_IP (0x01) 2156 #define MPI_FC_DEVICE_PAGE0_PROT_IP (0x01)
2099 #define MPI_FC_DEVICE_PAGE0_PROT_FCP_TARGET (0x02) 2157 #define MPI_FC_DEVICE_PAGE0_PROT_FCP_TARGET (0x02)
2100 #define MPI_FC_DEVICE_PAGE0_PROT_FCP_INITIATOR (0x04) 2158 #define MPI_FC_DEVICE_PAGE0_PROT_FCP_INITIATOR (0x04)
2101 #define MPI_FC_DEVICE_PAGE0_PROT_FCP_RETRY (0x08) 2159 #define MPI_FC_DEVICE_PAGE0_PROT_FCP_RETRY (0x08)
2102 2160
2103 #define MPI_FC_DEVICE_PAGE0_PGAD_PORT_MASK (MPI_FC_DEVICE_PGAD_PORT_MASK) 2161 #define MPI_FC_DEVICE_PAGE0_PGAD_PORT_MASK (MPI_FC_DEVICE_PGAD_PORT_MASK)
2104 #define MPI_FC_DEVICE_PAGE0_PGAD_FORM_MASK (MPI_FC_DEVICE_PGAD_FORM_MASK) 2162 #define MPI_FC_DEVICE_PAGE0_PGAD_FORM_MASK (MPI_FC_DEVICE_PGAD_FORM_MASK)
2105 #define MPI_FC_DEVICE_PAGE0_PGAD_FORM_NEXT_DID (MPI_FC_DEVICE_PGAD_FORM_NEXT_DID) 2163 #define MPI_FC_DEVICE_PAGE0_PGAD_FORM_NEXT_DID (MPI_FC_DEVICE_PGAD_FORM_NEXT_DID)
2106 #define MPI_FC_DEVICE_PAGE0_PGAD_FORM_BUS_TID (MPI_FC_DEVICE_PGAD_FORM_BUS_TID) 2164 #define MPI_FC_DEVICE_PAGE0_PGAD_FORM_BUS_TID (MPI_FC_DEVICE_PGAD_FORM_BUS_TID)
2107 #define MPI_FC_DEVICE_PAGE0_PGAD_DID_MASK (MPI_FC_DEVICE_PGAD_ND_DID_MASK) 2165 #define MPI_FC_DEVICE_PAGE0_PGAD_DID_MASK (MPI_FC_DEVICE_PGAD_ND_DID_MASK)
2108 #define MPI_FC_DEVICE_PAGE0_PGAD_BUS_MASK (MPI_FC_DEVICE_PGAD_BT_BUS_MASK) 2166 #define MPI_FC_DEVICE_PAGE0_PGAD_BUS_MASK (MPI_FC_DEVICE_PGAD_BT_BUS_MASK)
2109 #define MPI_FC_DEVICE_PAGE0_PGAD_BUS_SHIFT (MPI_FC_DEVICE_PGAD_BT_BUS_SHIFT) 2167 #define MPI_FC_DEVICE_PAGE0_PGAD_BUS_SHIFT (MPI_FC_DEVICE_PGAD_BT_BUS_SHIFT)
2110 #define MPI_FC_DEVICE_PAGE0_PGAD_TID_MASK (MPI_FC_DEVICE_PGAD_BT_TID_MASK) 2168 #define MPI_FC_DEVICE_PAGE0_PGAD_TID_MASK (MPI_FC_DEVICE_PGAD_BT_TID_MASK)
2111 2169
2112 #define MPI_FC_DEVICE_PAGE0_HARD_ALPA_UNKNOWN (0xFF) 2170 #define MPI_FC_DEVICE_PAGE0_HARD_ALPA_UNKNOWN (0xFF)
2113 2171
2114 /**************************************************************************** 2172 /****************************************************************************
2115 * RAID Volume Config Pages 2173 * RAID Volume Config Pages
2116 ****************************************************************************/ 2174 ****************************************************************************/
2117 2175
2118 typedef struct _RAID_VOL0_PHYS_DISK 2176 typedef struct _RAID_VOL0_PHYS_DISK
2119 { 2177 {
2120 U16 Reserved; /* 00h */ 2178 U16 Reserved; /* 00h */
2121 U8 PhysDiskMap; /* 02h */ 2179 U8 PhysDiskMap; /* 02h */
2122 U8 PhysDiskNum; /* 03h */ 2180 U8 PhysDiskNum; /* 03h */
2123 } RAID_VOL0_PHYS_DISK, MPI_POINTER PTR_RAID_VOL0_PHYS_DISK, 2181 } RAID_VOL0_PHYS_DISK, MPI_POINTER PTR_RAID_VOL0_PHYS_DISK,
2124 RaidVol0PhysDisk_t, MPI_POINTER pRaidVol0PhysDisk_t; 2182 RaidVol0PhysDisk_t, MPI_POINTER pRaidVol0PhysDisk_t;
2125 2183
2126 #define MPI_RAIDVOL0_PHYSDISK_PRIMARY (0x01) 2184 #define MPI_RAIDVOL0_PHYSDISK_PRIMARY (0x01)
2127 #define MPI_RAIDVOL0_PHYSDISK_SECONDARY (0x02) 2185 #define MPI_RAIDVOL0_PHYSDISK_SECONDARY (0x02)
2128 2186
2129 typedef struct _RAID_VOL0_STATUS 2187 typedef struct _RAID_VOL0_STATUS
2130 { 2188 {
2131 U8 Flags; /* 00h */ 2189 U8 Flags; /* 00h */
2132 U8 State; /* 01h */ 2190 U8 State; /* 01h */
2133 U16 Reserved; /* 02h */ 2191 U16 Reserved; /* 02h */
2134 } RAID_VOL0_STATUS, MPI_POINTER PTR_RAID_VOL0_STATUS, 2192 } RAID_VOL0_STATUS, MPI_POINTER PTR_RAID_VOL0_STATUS,
2135 RaidVol0Status_t, MPI_POINTER pRaidVol0Status_t; 2193 RaidVol0Status_t, MPI_POINTER pRaidVol0Status_t;
2136 2194
2137 /* RAID Volume Page 0 VolumeStatus defines */ 2195 /* RAID Volume Page 0 VolumeStatus defines */
2138 #define MPI_RAIDVOL0_STATUS_FLAG_ENABLED (0x01) 2196 #define MPI_RAIDVOL0_STATUS_FLAG_ENABLED (0x01)
2139 #define MPI_RAIDVOL0_STATUS_FLAG_QUIESCED (0x02) 2197 #define MPI_RAIDVOL0_STATUS_FLAG_QUIESCED (0x02)
2140 #define MPI_RAIDVOL0_STATUS_FLAG_RESYNC_IN_PROGRESS (0x04) 2198 #define MPI_RAIDVOL0_STATUS_FLAG_RESYNC_IN_PROGRESS (0x04)
2141 #define MPI_RAIDVOL0_STATUS_FLAG_VOLUME_INACTIVE (0x08) 2199 #define MPI_RAIDVOL0_STATUS_FLAG_VOLUME_INACTIVE (0x08)
2142 #define MPI_RAIDVOL0_STATUS_FLAG_BAD_BLOCK_TABLE_FULL (0x10) 2200 #define MPI_RAIDVOL0_STATUS_FLAG_BAD_BLOCK_TABLE_FULL (0x10)
2143 2201
2144 #define MPI_RAIDVOL0_STATUS_STATE_OPTIMAL (0x00) 2202 #define MPI_RAIDVOL0_STATUS_STATE_OPTIMAL (0x00)
2145 #define MPI_RAIDVOL0_STATUS_STATE_DEGRADED (0x01) 2203 #define MPI_RAIDVOL0_STATUS_STATE_DEGRADED (0x01)
2146 #define MPI_RAIDVOL0_STATUS_STATE_FAILED (0x02) 2204 #define MPI_RAIDVOL0_STATUS_STATE_FAILED (0x02)
2147 #define MPI_RAIDVOL0_STATUS_STATE_MISSING (0x03) 2205 #define MPI_RAIDVOL0_STATUS_STATE_MISSING (0x03)
2148 2206
2149 typedef struct _RAID_VOL0_SETTINGS 2207 typedef struct _RAID_VOL0_SETTINGS
2150 { 2208 {
2151 U16 Settings; /* 00h */ 2209 U16 Settings; /* 00h */
2152 U8 HotSparePool; /* 01h */ /* MPI_RAID_HOT_SPARE_POOL_ */ 2210 U8 HotSparePool; /* 01h */ /* MPI_RAID_HOT_SPARE_POOL_ */
2153 U8 Reserved; /* 02h */ 2211 U8 Reserved; /* 02h */
2154 } RAID_VOL0_SETTINGS, MPI_POINTER PTR_RAID_VOL0_SETTINGS, 2212 } RAID_VOL0_SETTINGS, MPI_POINTER PTR_RAID_VOL0_SETTINGS,
2155 RaidVol0Settings, MPI_POINTER pRaidVol0Settings; 2213 RaidVol0Settings, MPI_POINTER pRaidVol0Settings;
2156 2214
2157 /* RAID Volume Page 0 VolumeSettings defines */ 2215 /* RAID Volume Page 0 VolumeSettings defines */
2158 #define MPI_RAIDVOL0_SETTING_WRITE_CACHING_ENABLE (0x0001) 2216 #define MPI_RAIDVOL0_SETTING_WRITE_CACHING_ENABLE (0x0001)
2159 #define MPI_RAIDVOL0_SETTING_OFFLINE_ON_SMART (0x0002) 2217 #define MPI_RAIDVOL0_SETTING_OFFLINE_ON_SMART (0x0002)
2160 #define MPI_RAIDVOL0_SETTING_AUTO_CONFIGURE (0x0004) 2218 #define MPI_RAIDVOL0_SETTING_AUTO_CONFIGURE (0x0004)
2161 #define MPI_RAIDVOL0_SETTING_PRIORITY_RESYNC (0x0008) 2219 #define MPI_RAIDVOL0_SETTING_PRIORITY_RESYNC (0x0008)
2162 #define MPI_RAIDVOL0_SETTING_FAST_DATA_SCRUBBING_0102 (0x0020) /* obsolete */ 2220 #define MPI_RAIDVOL0_SETTING_FAST_DATA_SCRUBBING_0102 (0x0020) /* obsolete */
2221
2222 #define MPI_RAIDVOL0_SETTING_MASK_METADATA_SIZE (0x00C0)
2223 #define MPI_RAIDVOL0_SETTING_64MB_METADATA_SIZE (0x0000)
2224 #define MPI_RAIDVOL0_SETTING_512MB_METADATA_SIZE (0x0040)
2225
2163 #define MPI_RAIDVOL0_SETTING_USE_PRODUCT_ID_SUFFIX (0x0010) 2226 #define MPI_RAIDVOL0_SETTING_USE_PRODUCT_ID_SUFFIX (0x0010)
2164 #define MPI_RAIDVOL0_SETTING_USE_DEFAULTS (0x8000) 2227 #define MPI_RAIDVOL0_SETTING_USE_DEFAULTS (0x8000)
2165 2228
2166 /* RAID Volume Page 0 HotSparePool defines, also used in RAID Physical Disk */ 2229 /* RAID Volume Page 0 HotSparePool defines, also used in RAID Physical Disk */
2167 #define MPI_RAID_HOT_SPARE_POOL_0 (0x01) 2230 #define MPI_RAID_HOT_SPARE_POOL_0 (0x01)
2168 #define MPI_RAID_HOT_SPARE_POOL_1 (0x02) 2231 #define MPI_RAID_HOT_SPARE_POOL_1 (0x02)
2169 #define MPI_RAID_HOT_SPARE_POOL_2 (0x04) 2232 #define MPI_RAID_HOT_SPARE_POOL_2 (0x04)
2170 #define MPI_RAID_HOT_SPARE_POOL_3 (0x08) 2233 #define MPI_RAID_HOT_SPARE_POOL_3 (0x08)
2171 #define MPI_RAID_HOT_SPARE_POOL_4 (0x10) 2234 #define MPI_RAID_HOT_SPARE_POOL_4 (0x10)
2172 #define MPI_RAID_HOT_SPARE_POOL_5 (0x20) 2235 #define MPI_RAID_HOT_SPARE_POOL_5 (0x20)
2173 #define MPI_RAID_HOT_SPARE_POOL_6 (0x40) 2236 #define MPI_RAID_HOT_SPARE_POOL_6 (0x40)
2174 #define MPI_RAID_HOT_SPARE_POOL_7 (0x80) 2237 #define MPI_RAID_HOT_SPARE_POOL_7 (0x80)
2175 2238
2176 /* 2239 /*
2177 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to 2240 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
2178 * one and check Header.PageLength at runtime. 2241 * one and check Header.PageLength at runtime.
2179 */ 2242 */
2180 #ifndef MPI_RAID_VOL_PAGE_0_PHYSDISK_MAX 2243 #ifndef MPI_RAID_VOL_PAGE_0_PHYSDISK_MAX
2181 #define MPI_RAID_VOL_PAGE_0_PHYSDISK_MAX (1) 2244 #define MPI_RAID_VOL_PAGE_0_PHYSDISK_MAX (1)
2182 #endif 2245 #endif
2183 2246
2184 typedef struct _CONFIG_PAGE_RAID_VOL_0 2247 typedef struct _CONFIG_PAGE_RAID_VOL_0
2185 { 2248 {
2186 CONFIG_PAGE_HEADER Header; /* 00h */ 2249 CONFIG_PAGE_HEADER Header; /* 00h */
2187 U8 VolumeID; /* 04h */ 2250 U8 VolumeID; /* 04h */
2188 U8 VolumeBus; /* 05h */ 2251 U8 VolumeBus; /* 05h */
2189 U8 VolumeIOC; /* 06h */ 2252 U8 VolumeIOC; /* 06h */
2190 U8 VolumeType; /* 07h */ /* MPI_RAID_VOL_TYPE_ */ 2253 U8 VolumeType; /* 07h */ /* MPI_RAID_VOL_TYPE_ */
2191 RAID_VOL0_STATUS VolumeStatus; /* 08h */ 2254 RAID_VOL0_STATUS VolumeStatus; /* 08h */
2192 RAID_VOL0_SETTINGS VolumeSettings; /* 0Ch */ 2255 RAID_VOL0_SETTINGS VolumeSettings; /* 0Ch */
2193 U32 MaxLBA; /* 10h */ 2256 U32 MaxLBA; /* 10h */
2194 U32 MaxLBAHigh; /* 14h */ 2257 U32 MaxLBAHigh; /* 14h */
2195 U32 StripeSize; /* 18h */ 2258 U32 StripeSize; /* 18h */
2196 U32 Reserved2; /* 1Ch */ 2259 U32 Reserved2; /* 1Ch */
2197 U32 Reserved3; /* 20h */ 2260 U32 Reserved3; /* 20h */
2198 U8 NumPhysDisks; /* 24h */ 2261 U8 NumPhysDisks; /* 24h */
2199 U8 DataScrubRate; /* 25h */ 2262 U8 DataScrubRate; /* 25h */
2200 U8 ResyncRate; /* 26h */ 2263 U8 ResyncRate; /* 26h */
2201 U8 InactiveStatus; /* 27h */ 2264 U8 InactiveStatus; /* 27h */
2202 RAID_VOL0_PHYS_DISK PhysDisk[MPI_RAID_VOL_PAGE_0_PHYSDISK_MAX];/* 28h */ 2265 RAID_VOL0_PHYS_DISK PhysDisk[MPI_RAID_VOL_PAGE_0_PHYSDISK_MAX];/* 28h */
2203 } CONFIG_PAGE_RAID_VOL_0, MPI_POINTER PTR_CONFIG_PAGE_RAID_VOL_0, 2266 } CONFIG_PAGE_RAID_VOL_0, MPI_POINTER PTR_CONFIG_PAGE_RAID_VOL_0,
2204 RaidVolumePage0_t, MPI_POINTER pRaidVolumePage0_t; 2267 RaidVolumePage0_t, MPI_POINTER pRaidVolumePage0_t;
2205 2268
2206 #define MPI_RAIDVOLPAGE0_PAGEVERSION (0x06) 2269 #define MPI_RAIDVOLPAGE0_PAGEVERSION (0x07)
2207 2270
2208 /* values for RAID Volume Page 0 InactiveStatus field */ 2271 /* values for RAID Volume Page 0 InactiveStatus field */
2209 #define MPI_RAIDVOLPAGE0_UNKNOWN_INACTIVE (0x00) 2272 #define MPI_RAIDVOLPAGE0_UNKNOWN_INACTIVE (0x00)
2210 #define MPI_RAIDVOLPAGE0_STALE_METADATA_INACTIVE (0x01) 2273 #define MPI_RAIDVOLPAGE0_STALE_METADATA_INACTIVE (0x01)
2211 #define MPI_RAIDVOLPAGE0_FOREIGN_VOLUME_INACTIVE (0x02) 2274 #define MPI_RAIDVOLPAGE0_FOREIGN_VOLUME_INACTIVE (0x02)
2212 #define MPI_RAIDVOLPAGE0_INSUFFICIENT_RESOURCE_INACTIVE (0x03) 2275 #define MPI_RAIDVOLPAGE0_INSUFFICIENT_RESOURCE_INACTIVE (0x03)
2213 #define MPI_RAIDVOLPAGE0_CLONE_VOLUME_INACTIVE (0x04) 2276 #define MPI_RAIDVOLPAGE0_CLONE_VOLUME_INACTIVE (0x04)
2214 #define MPI_RAIDVOLPAGE0_INSUFFICIENT_METADATA_INACTIVE (0x05) 2277 #define MPI_RAIDVOLPAGE0_INSUFFICIENT_METADATA_INACTIVE (0x05)
2215 #define MPI_RAIDVOLPAGE0_PREVIOUSLY_DELETED (0x06) 2278 #define MPI_RAIDVOLPAGE0_PREVIOUSLY_DELETED (0x06)
2216 2279
2217 2280
2218 typedef struct _CONFIG_PAGE_RAID_VOL_1 2281 typedef struct _CONFIG_PAGE_RAID_VOL_1
2219 { 2282 {
2220 CONFIG_PAGE_HEADER Header; /* 00h */ 2283 CONFIG_PAGE_HEADER Header; /* 00h */
2221 U8 VolumeID; /* 01h */ 2284 U8 VolumeID; /* 01h */
2222 U8 VolumeBus; /* 02h */ 2285 U8 VolumeBus; /* 02h */
2223 U8 VolumeIOC; /* 03h */ 2286 U8 VolumeIOC; /* 03h */
2224 U8 Reserved0; /* 04h */ 2287 U8 Reserved0; /* 04h */
2225 U8 GUID[24]; /* 05h */ 2288 U8 GUID[24]; /* 05h */
2226 U8 Name[32]; /* 20h */ 2289 U8 Name[32]; /* 20h */
2227 U64 WWID; /* 40h */ 2290 U64 WWID; /* 40h */
2228 U32 Reserved1; /* 48h */ 2291 U32 Reserved1; /* 48h */
2229 U32 Reserved2; /* 4Ch */ 2292 U32 Reserved2; /* 4Ch */
2230 } CONFIG_PAGE_RAID_VOL_1, MPI_POINTER PTR_CONFIG_PAGE_RAID_VOL_1, 2293 } CONFIG_PAGE_RAID_VOL_1, MPI_POINTER PTR_CONFIG_PAGE_RAID_VOL_1,
2231 RaidVolumePage1_t, MPI_POINTER pRaidVolumePage1_t; 2294 RaidVolumePage1_t, MPI_POINTER pRaidVolumePage1_t;
2232 2295
2233 #define MPI_RAIDVOLPAGE1_PAGEVERSION (0x01) 2296 #define MPI_RAIDVOLPAGE1_PAGEVERSION (0x01)
2234 2297
2235 2298
2236 /**************************************************************************** 2299 /****************************************************************************
2237 * RAID Physical Disk Config Pages 2300 * RAID Physical Disk Config Pages
2238 ****************************************************************************/ 2301 ****************************************************************************/
2239 2302
2240 typedef struct _RAID_PHYS_DISK0_ERROR_DATA 2303 typedef struct _RAID_PHYS_DISK0_ERROR_DATA
2241 { 2304 {
2242 U8 ErrorCdbByte; /* 00h */ 2305 U8 ErrorCdbByte; /* 00h */
2243 U8 ErrorSenseKey; /* 01h */ 2306 U8 ErrorSenseKey; /* 01h */
2244 U16 Reserved; /* 02h */ 2307 U16 Reserved; /* 02h */
2245 U16 ErrorCount; /* 04h */ 2308 U16 ErrorCount; /* 04h */
2246 U8 ErrorASC; /* 06h */ 2309 U8 ErrorASC; /* 06h */
2247 U8 ErrorASCQ; /* 07h */ 2310 U8 ErrorASCQ; /* 07h */
2248 U16 SmartCount; /* 08h */ 2311 U16 SmartCount; /* 08h */
2249 U8 SmartASC; /* 0Ah */ 2312 U8 SmartASC; /* 0Ah */
2250 U8 SmartASCQ; /* 0Bh */ 2313 U8 SmartASCQ; /* 0Bh */
2251 } RAID_PHYS_DISK0_ERROR_DATA, MPI_POINTER PTR_RAID_PHYS_DISK0_ERROR_DATA, 2314 } RAID_PHYS_DISK0_ERROR_DATA, MPI_POINTER PTR_RAID_PHYS_DISK0_ERROR_DATA,
2252 RaidPhysDisk0ErrorData_t, MPI_POINTER pRaidPhysDisk0ErrorData_t; 2315 RaidPhysDisk0ErrorData_t, MPI_POINTER pRaidPhysDisk0ErrorData_t;
2253 2316
2254 typedef struct _RAID_PHYS_DISK_INQUIRY_DATA 2317 typedef struct _RAID_PHYS_DISK_INQUIRY_DATA
2255 { 2318 {
2256 U8 VendorID[8]; /* 00h */ 2319 U8 VendorID[8]; /* 00h */
2257 U8 ProductID[16]; /* 08h */ 2320 U8 ProductID[16]; /* 08h */
2258 U8 ProductRevLevel[4]; /* 18h */ 2321 U8 ProductRevLevel[4]; /* 18h */
2259 U8 Info[32]; /* 1Ch */ 2322 U8 Info[32]; /* 1Ch */
2260 } RAID_PHYS_DISK0_INQUIRY_DATA, MPI_POINTER PTR_RAID_PHYS_DISK0_INQUIRY_DATA, 2323 } RAID_PHYS_DISK0_INQUIRY_DATA, MPI_POINTER PTR_RAID_PHYS_DISK0_INQUIRY_DATA,
2261 RaidPhysDisk0InquiryData, MPI_POINTER pRaidPhysDisk0InquiryData; 2324 RaidPhysDisk0InquiryData, MPI_POINTER pRaidPhysDisk0InquiryData;
2262 2325
2263 typedef struct _RAID_PHYS_DISK0_SETTINGS 2326 typedef struct _RAID_PHYS_DISK0_SETTINGS
2264 { 2327 {
2265 U8 SepID; /* 00h */ 2328 U8 SepID; /* 00h */
2266 U8 SepBus; /* 01h */ 2329 U8 SepBus; /* 01h */
2267 U8 HotSparePool; /* 02h */ /* MPI_RAID_HOT_SPARE_POOL_ */ 2330 U8 HotSparePool; /* 02h */ /* MPI_RAID_HOT_SPARE_POOL_ */
2268 U8 PhysDiskSettings; /* 03h */ 2331 U8 PhysDiskSettings; /* 03h */
2269 } RAID_PHYS_DISK0_SETTINGS, MPI_POINTER PTR_RAID_PHYS_DISK0_SETTINGS, 2332 } RAID_PHYS_DISK0_SETTINGS, MPI_POINTER PTR_RAID_PHYS_DISK0_SETTINGS,
2270 RaidPhysDiskSettings_t, MPI_POINTER pRaidPhysDiskSettings_t; 2333 RaidPhysDiskSettings_t, MPI_POINTER pRaidPhysDiskSettings_t;
2271 2334
2272 typedef struct _RAID_PHYS_DISK0_STATUS 2335 typedef struct _RAID_PHYS_DISK0_STATUS
2273 { 2336 {
2274 U8 Flags; /* 00h */ 2337 U8 Flags; /* 00h */
2275 U8 State; /* 01h */ 2338 U8 State; /* 01h */
2276 U16 Reserved; /* 02h */ 2339 U16 Reserved; /* 02h */
2277 } RAID_PHYS_DISK0_STATUS, MPI_POINTER PTR_RAID_PHYS_DISK0_STATUS, 2340 } RAID_PHYS_DISK0_STATUS, MPI_POINTER PTR_RAID_PHYS_DISK0_STATUS,
2278 RaidPhysDiskStatus_t, MPI_POINTER pRaidPhysDiskStatus_t; 2341 RaidPhysDiskStatus_t, MPI_POINTER pRaidPhysDiskStatus_t;
2279 2342
2280 /* RAID Volume 2 IM Physical Disk DiskStatus flags */ 2343 /* RAID Volume 2 IM Physical Disk DiskStatus flags */
2281 2344
2282 #define MPI_PHYSDISK0_STATUS_FLAG_OUT_OF_SYNC (0x01) 2345 #define MPI_PHYSDISK0_STATUS_FLAG_OUT_OF_SYNC (0x01)
2283 #define MPI_PHYSDISK0_STATUS_FLAG_QUIESCED (0x02) 2346 #define MPI_PHYSDISK0_STATUS_FLAG_QUIESCED (0x02)
2284 #define MPI_PHYSDISK0_STATUS_FLAG_INACTIVE_VOLUME (0x04) 2347 #define MPI_PHYSDISK0_STATUS_FLAG_INACTIVE_VOLUME (0x04)
2285 #define MPI_PHYSDISK0_STATUS_FLAG_OPTIMAL_PREVIOUS (0x00) 2348 #define MPI_PHYSDISK0_STATUS_FLAG_OPTIMAL_PREVIOUS (0x00)
2286 #define MPI_PHYSDISK0_STATUS_FLAG_NOT_OPTIMAL_PREVIOUS (0x08) 2349 #define MPI_PHYSDISK0_STATUS_FLAG_NOT_OPTIMAL_PREVIOUS (0x08)
2287 2350
2288 #define MPI_PHYSDISK0_STATUS_ONLINE (0x00) 2351 #define MPI_PHYSDISK0_STATUS_ONLINE (0x00)
2289 #define MPI_PHYSDISK0_STATUS_MISSING (0x01) 2352 #define MPI_PHYSDISK0_STATUS_MISSING (0x01)
2290 #define MPI_PHYSDISK0_STATUS_NOT_COMPATIBLE (0x02) 2353 #define MPI_PHYSDISK0_STATUS_NOT_COMPATIBLE (0x02)
2291 #define MPI_PHYSDISK0_STATUS_FAILED (0x03) 2354 #define MPI_PHYSDISK0_STATUS_FAILED (0x03)
2292 #define MPI_PHYSDISK0_STATUS_INITIALIZING (0x04) 2355 #define MPI_PHYSDISK0_STATUS_INITIALIZING (0x04)
2293 #define MPI_PHYSDISK0_STATUS_OFFLINE_REQUESTED (0x05) 2356 #define MPI_PHYSDISK0_STATUS_OFFLINE_REQUESTED (0x05)
2294 #define MPI_PHYSDISK0_STATUS_FAILED_REQUESTED (0x06) 2357 #define MPI_PHYSDISK0_STATUS_FAILED_REQUESTED (0x06)
2295 #define MPI_PHYSDISK0_STATUS_OTHER_OFFLINE (0xFF) 2358 #define MPI_PHYSDISK0_STATUS_OTHER_OFFLINE (0xFF)
2296 2359
2297 typedef struct _CONFIG_PAGE_RAID_PHYS_DISK_0 2360 typedef struct _CONFIG_PAGE_RAID_PHYS_DISK_0
2298 { 2361 {
2299 CONFIG_PAGE_HEADER Header; /* 00h */ 2362 CONFIG_PAGE_HEADER Header; /* 00h */
2300 U8 PhysDiskID; /* 04h */ 2363 U8 PhysDiskID; /* 04h */
2301 U8 PhysDiskBus; /* 05h */ 2364 U8 PhysDiskBus; /* 05h */
2302 U8 PhysDiskIOC; /* 06h */ 2365 U8 PhysDiskIOC; /* 06h */
2303 U8 PhysDiskNum; /* 07h */ 2366 U8 PhysDiskNum; /* 07h */
2304 RAID_PHYS_DISK0_SETTINGS PhysDiskSettings; /* 08h */ 2367 RAID_PHYS_DISK0_SETTINGS PhysDiskSettings; /* 08h */
2305 U32 Reserved1; /* 0Ch */ 2368 U32 Reserved1; /* 0Ch */
2306 U8 ExtDiskIdentifier[8]; /* 10h */ 2369 U8 ExtDiskIdentifier[8]; /* 10h */
2307 U8 DiskIdentifier[16]; /* 18h */ 2370 U8 DiskIdentifier[16]; /* 18h */
2308 RAID_PHYS_DISK0_INQUIRY_DATA InquiryData; /* 28h */ 2371 RAID_PHYS_DISK0_INQUIRY_DATA InquiryData; /* 28h */
2309 RAID_PHYS_DISK0_STATUS PhysDiskStatus; /* 64h */ 2372 RAID_PHYS_DISK0_STATUS PhysDiskStatus; /* 64h */
2310 U32 MaxLBA; /* 68h */ 2373 U32 MaxLBA; /* 68h */
2311 RAID_PHYS_DISK0_ERROR_DATA ErrorData; /* 6Ch */ 2374 RAID_PHYS_DISK0_ERROR_DATA ErrorData; /* 6Ch */
2312 } CONFIG_PAGE_RAID_PHYS_DISK_0, MPI_POINTER PTR_CONFIG_PAGE_RAID_PHYS_DISK_0, 2375 } CONFIG_PAGE_RAID_PHYS_DISK_0, MPI_POINTER PTR_CONFIG_PAGE_RAID_PHYS_DISK_0,
2313 RaidPhysDiskPage0_t, MPI_POINTER pRaidPhysDiskPage0_t; 2376 RaidPhysDiskPage0_t, MPI_POINTER pRaidPhysDiskPage0_t;
2314 2377
2315 #define MPI_RAIDPHYSDISKPAGE0_PAGEVERSION (0x02) 2378 #define MPI_RAIDPHYSDISKPAGE0_PAGEVERSION (0x02)
2316 2379
2317 2380
2318 typedef struct _RAID_PHYS_DISK1_PATH 2381 typedef struct _RAID_PHYS_DISK1_PATH
2319 { 2382 {
2320 U8 PhysDiskID; /* 00h */ 2383 U8 PhysDiskID; /* 00h */
2321 U8 PhysDiskBus; /* 01h */ 2384 U8 PhysDiskBus; /* 01h */
2322 U16 Reserved1; /* 02h */ 2385 U16 Reserved1; /* 02h */
2323 U64 WWID; /* 04h */ 2386 U64 WWID; /* 04h */
2324 U64 OwnerWWID; /* 0Ch */ 2387 U64 OwnerWWID; /* 0Ch */
2325 U8 OwnerIdentifier; /* 14h */ 2388 U8 OwnerIdentifier; /* 14h */
2326 U8 Reserved2; /* 15h */ 2389 U8 Reserved2; /* 15h */
2327 U16 Flags; /* 16h */ 2390 U16 Flags; /* 16h */
2328 } RAID_PHYS_DISK1_PATH, MPI_POINTER PTR_RAID_PHYS_DISK1_PATH, 2391 } RAID_PHYS_DISK1_PATH, MPI_POINTER PTR_RAID_PHYS_DISK1_PATH,
2329 RaidPhysDisk1Path_t, MPI_POINTER pRaidPhysDisk1Path_t; 2392 RaidPhysDisk1Path_t, MPI_POINTER pRaidPhysDisk1Path_t;
2330 2393
2331 /* RAID Physical Disk Page 1 Flags field defines */ 2394 /* RAID Physical Disk Page 1 Flags field defines */
2332 #define MPI_RAID_PHYSDISK1_FLAG_BROKEN (0x0002) 2395 #define MPI_RAID_PHYSDISK1_FLAG_BROKEN (0x0002)
2333 #define MPI_RAID_PHYSDISK1_FLAG_INVALID (0x0001) 2396 #define MPI_RAID_PHYSDISK1_FLAG_INVALID (0x0001)
2334 2397
2335 typedef struct _CONFIG_PAGE_RAID_PHYS_DISK_1 2398 typedef struct _CONFIG_PAGE_RAID_PHYS_DISK_1
2336 { 2399 {
2337 CONFIG_PAGE_HEADER Header; /* 00h */ 2400 CONFIG_PAGE_HEADER Header; /* 00h */
2338 U8 NumPhysDiskPaths; /* 04h */ 2401 U8 NumPhysDiskPaths; /* 04h */
2339 U8 PhysDiskNum; /* 05h */ 2402 U8 PhysDiskNum; /* 05h */
2340 U16 Reserved2; /* 06h */ 2403 U16 Reserved2; /* 06h */
2341 U32 Reserved1; /* 08h */ 2404 U32 Reserved1; /* 08h */
2342 RAID_PHYS_DISK1_PATH Path[1]; /* 0Ch */ 2405 RAID_PHYS_DISK1_PATH Path[1]; /* 0Ch */
2343 } CONFIG_PAGE_RAID_PHYS_DISK_1, MPI_POINTER PTR_CONFIG_PAGE_RAID_PHYS_DISK_1, 2406 } CONFIG_PAGE_RAID_PHYS_DISK_1, MPI_POINTER PTR_CONFIG_PAGE_RAID_PHYS_DISK_1,
2344 RaidPhysDiskPage1_t, MPI_POINTER pRaidPhysDiskPage1_t; 2407 RaidPhysDiskPage1_t, MPI_POINTER pRaidPhysDiskPage1_t;
2345 2408
2346 #define MPI_RAIDPHYSDISKPAGE1_PAGEVERSION (0x00) 2409 #define MPI_RAIDPHYSDISKPAGE1_PAGEVERSION (0x00)
2347 2410
2348 2411
2349 /**************************************************************************** 2412 /****************************************************************************
2350 * LAN Config Pages 2413 * LAN Config Pages
2351 ****************************************************************************/ 2414 ****************************************************************************/
2352 2415
2353 typedef struct _CONFIG_PAGE_LAN_0 2416 typedef struct _CONFIG_PAGE_LAN_0
2354 { 2417 {
2355 ConfigPageHeader_t Header; /* 00h */ 2418 ConfigPageHeader_t Header; /* 00h */
2356 U16 TxRxModes; /* 04h */ 2419 U16 TxRxModes; /* 04h */
2357 U16 Reserved; /* 06h */ 2420 U16 Reserved; /* 06h */
2358 U32 PacketPrePad; /* 08h */ 2421 U32 PacketPrePad; /* 08h */
2359 } CONFIG_PAGE_LAN_0, MPI_POINTER PTR_CONFIG_PAGE_LAN_0, 2422 } CONFIG_PAGE_LAN_0, MPI_POINTER PTR_CONFIG_PAGE_LAN_0,
2360 LANPage0_t, MPI_POINTER pLANPage0_t; 2423 LANPage0_t, MPI_POINTER pLANPage0_t;
2361 2424
2362 #define MPI_LAN_PAGE0_PAGEVERSION (0x01) 2425 #define MPI_LAN_PAGE0_PAGEVERSION (0x01)
2363 2426
2364 #define MPI_LAN_PAGE0_RETURN_LOOPBACK (0x0000) 2427 #define MPI_LAN_PAGE0_RETURN_LOOPBACK (0x0000)
2365 #define MPI_LAN_PAGE0_SUPPRESS_LOOPBACK (0x0001) 2428 #define MPI_LAN_PAGE0_SUPPRESS_LOOPBACK (0x0001)
2366 #define MPI_LAN_PAGE0_LOOPBACK_MASK (0x0001) 2429 #define MPI_LAN_PAGE0_LOOPBACK_MASK (0x0001)
2367 2430
2368 typedef struct _CONFIG_PAGE_LAN_1 2431 typedef struct _CONFIG_PAGE_LAN_1
2369 { 2432 {
2370 ConfigPageHeader_t Header; /* 00h */ 2433 ConfigPageHeader_t Header; /* 00h */
2371 U16 Reserved; /* 04h */ 2434 U16 Reserved; /* 04h */
2372 U8 CurrentDeviceState; /* 06h */ 2435 U8 CurrentDeviceState; /* 06h */
2373 U8 Reserved1; /* 07h */ 2436 U8 Reserved1; /* 07h */
2374 U32 MinPacketSize; /* 08h */ 2437 U32 MinPacketSize; /* 08h */
2375 U32 MaxPacketSize; /* 0Ch */ 2438 U32 MaxPacketSize; /* 0Ch */
2376 U32 HardwareAddressLow; /* 10h */ 2439 U32 HardwareAddressLow; /* 10h */
2377 U32 HardwareAddressHigh; /* 14h */ 2440 U32 HardwareAddressHigh; /* 14h */
2378 U32 MaxWireSpeedLow; /* 18h */ 2441 U32 MaxWireSpeedLow; /* 18h */
2379 U32 MaxWireSpeedHigh; /* 1Ch */ 2442 U32 MaxWireSpeedHigh; /* 1Ch */
2380 U32 BucketsRemaining; /* 20h */ 2443 U32 BucketsRemaining; /* 20h */
2381 U32 MaxReplySize; /* 24h */ 2444 U32 MaxReplySize; /* 24h */
2382 U32 NegWireSpeedLow; /* 28h */ 2445 U32 NegWireSpeedLow; /* 28h */
2383 U32 NegWireSpeedHigh; /* 2Ch */ 2446 U32 NegWireSpeedHigh; /* 2Ch */
2384 } CONFIG_PAGE_LAN_1, MPI_POINTER PTR_CONFIG_PAGE_LAN_1, 2447 } CONFIG_PAGE_LAN_1, MPI_POINTER PTR_CONFIG_PAGE_LAN_1,
2385 LANPage1_t, MPI_POINTER pLANPage1_t; 2448 LANPage1_t, MPI_POINTER pLANPage1_t;
2386 2449
2387 #define MPI_LAN_PAGE1_PAGEVERSION (0x03) 2450 #define MPI_LAN_PAGE1_PAGEVERSION (0x03)
2388 2451
2389 #define MPI_LAN_PAGE1_DEV_STATE_RESET (0x00) 2452 #define MPI_LAN_PAGE1_DEV_STATE_RESET (0x00)
2390 #define MPI_LAN_PAGE1_DEV_STATE_OPERATIONAL (0x01) 2453 #define MPI_LAN_PAGE1_DEV_STATE_OPERATIONAL (0x01)
2391 2454
2392 2455
2393 /**************************************************************************** 2456 /****************************************************************************
2394 * Inband Config Pages 2457 * Inband Config Pages
2395 ****************************************************************************/ 2458 ****************************************************************************/
2396 2459
2397 typedef struct _CONFIG_PAGE_INBAND_0 2460 typedef struct _CONFIG_PAGE_INBAND_0
2398 { 2461 {
2399 CONFIG_PAGE_HEADER Header; /* 00h */ 2462 CONFIG_PAGE_HEADER Header; /* 00h */
2400 MPI_VERSION_FORMAT InbandVersion; /* 04h */ 2463 MPI_VERSION_FORMAT InbandVersion; /* 04h */
2401 U16 MaximumBuffers; /* 08h */ 2464 U16 MaximumBuffers; /* 08h */
2402 U16 Reserved1; /* 0Ah */ 2465 U16 Reserved1; /* 0Ah */
2403 } CONFIG_PAGE_INBAND_0, MPI_POINTER PTR_CONFIG_PAGE_INBAND_0, 2466 } CONFIG_PAGE_INBAND_0, MPI_POINTER PTR_CONFIG_PAGE_INBAND_0,
2404 InbandPage0_t, MPI_POINTER pInbandPage0_t; 2467 InbandPage0_t, MPI_POINTER pInbandPage0_t;
2405 2468
2406 #define MPI_INBAND_PAGEVERSION (0x00) 2469 #define MPI_INBAND_PAGEVERSION (0x00)
2407 2470
2408 2471
2409 2472
2410 /**************************************************************************** 2473 /****************************************************************************
2411 * SAS IO Unit Config Pages 2474 * SAS IO Unit Config Pages
2412 ****************************************************************************/ 2475 ****************************************************************************/
2413 2476
2414 typedef struct _MPI_SAS_IO_UNIT0_PHY_DATA 2477 typedef struct _MPI_SAS_IO_UNIT0_PHY_DATA
2415 { 2478 {
2416 U8 Port; /* 00h */ 2479 U8 Port; /* 00h */
2417 U8 PortFlags; /* 01h */ 2480 U8 PortFlags; /* 01h */
2418 U8 PhyFlags; /* 02h */ 2481 U8 PhyFlags; /* 02h */
2419 U8 NegotiatedLinkRate; /* 03h */ 2482 U8 NegotiatedLinkRate; /* 03h */
2420 U32 ControllerPhyDeviceInfo;/* 04h */ 2483 U32 ControllerPhyDeviceInfo;/* 04h */
2421 U16 AttachedDeviceHandle; /* 08h */ 2484 U16 AttachedDeviceHandle; /* 08h */
2422 U16 ControllerDevHandle; /* 0Ah */ 2485 U16 ControllerDevHandle; /* 0Ah */
2423 U32 DiscoveryStatus; /* 0Ch */ 2486 U32 DiscoveryStatus; /* 0Ch */
2424 } MPI_SAS_IO_UNIT0_PHY_DATA, MPI_POINTER PTR_MPI_SAS_IO_UNIT0_PHY_DATA, 2487 } MPI_SAS_IO_UNIT0_PHY_DATA, MPI_POINTER PTR_MPI_SAS_IO_UNIT0_PHY_DATA,
2425 SasIOUnit0PhyData, MPI_POINTER pSasIOUnit0PhyData; 2488 SasIOUnit0PhyData, MPI_POINTER pSasIOUnit0PhyData;
2426 2489
2427 /* 2490 /*
2428 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to 2491 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
2429 * one and check Header.PageLength at runtime. 2492 * one and check Header.PageLength at runtime.
2430 */ 2493 */
2431 #ifndef MPI_SAS_IOUNIT0_PHY_MAX 2494 #ifndef MPI_SAS_IOUNIT0_PHY_MAX
2432 #define MPI_SAS_IOUNIT0_PHY_MAX (1) 2495 #define MPI_SAS_IOUNIT0_PHY_MAX (1)
2433 #endif 2496 #endif
2434 2497
2435 typedef struct _CONFIG_PAGE_SAS_IO_UNIT_0 2498 typedef struct _CONFIG_PAGE_SAS_IO_UNIT_0
2436 { 2499 {
2437 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */ 2500 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
2438 U16 NvdataVersionDefault; /* 08h */ 2501 U16 NvdataVersionDefault; /* 08h */
2439 U16 NvdataVersionPersistent; /* 0Ah */ 2502 U16 NvdataVersionPersistent; /* 0Ah */
2440 U8 NumPhys; /* 0Ch */ 2503 U8 NumPhys; /* 0Ch */
2441 U8 Reserved2; /* 0Dh */ 2504 U8 Reserved2; /* 0Dh */
2442 U16 Reserved3; /* 0Eh */ 2505 U16 Reserved3; /* 0Eh */
2443 MPI_SAS_IO_UNIT0_PHY_DATA PhyData[MPI_SAS_IOUNIT0_PHY_MAX]; /* 10h */ 2506 MPI_SAS_IO_UNIT0_PHY_DATA PhyData[MPI_SAS_IOUNIT0_PHY_MAX]; /* 10h */
2444 } CONFIG_PAGE_SAS_IO_UNIT_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_0, 2507 } CONFIG_PAGE_SAS_IO_UNIT_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_0,
2445 SasIOUnitPage0_t, MPI_POINTER pSasIOUnitPage0_t; 2508 SasIOUnitPage0_t, MPI_POINTER pSasIOUnitPage0_t;
2446 2509
2447 #define MPI_SASIOUNITPAGE0_PAGEVERSION (0x04) 2510 #define MPI_SASIOUNITPAGE0_PAGEVERSION (0x04)
2448 2511
2449 /* values for SAS IO Unit Page 0 PortFlags */ 2512 /* values for SAS IO Unit Page 0 PortFlags */
2450 #define MPI_SAS_IOUNIT0_PORT_FLAGS_DISCOVERY_IN_PROGRESS (0x08) 2513 #define MPI_SAS_IOUNIT0_PORT_FLAGS_DISCOVERY_IN_PROGRESS (0x08)
2451 #define MPI_SAS_IOUNIT0_PORT_FLAGS_0_TARGET_IOC_NUM (0x00) 2514 #define MPI_SAS_IOUNIT0_PORT_FLAGS_0_TARGET_IOC_NUM (0x00)
2452 #define MPI_SAS_IOUNIT0_PORT_FLAGS_1_TARGET_IOC_NUM (0x04) 2515 #define MPI_SAS_IOUNIT0_PORT_FLAGS_1_TARGET_IOC_NUM (0x04)
2453 #define MPI_SAS_IOUNIT0_PORT_FLAGS_AUTO_PORT_CONFIG (0x01) 2516 #define MPI_SAS_IOUNIT0_PORT_FLAGS_AUTO_PORT_CONFIG (0x01)
2454 2517
2455 /* values for SAS IO Unit Page 0 PhyFlags */ 2518 /* values for SAS IO Unit Page 0 PhyFlags */
2456 #define MPI_SAS_IOUNIT0_PHY_FLAGS_PHY_DISABLED (0x04) 2519 #define MPI_SAS_IOUNIT0_PHY_FLAGS_PHY_DISABLED (0x04)
2457 #define MPI_SAS_IOUNIT0_PHY_FLAGS_TX_INVERT (0x02) 2520 #define MPI_SAS_IOUNIT0_PHY_FLAGS_TX_INVERT (0x02)
2458 #define MPI_SAS_IOUNIT0_PHY_FLAGS_RX_INVERT (0x01) 2521 #define MPI_SAS_IOUNIT0_PHY_FLAGS_RX_INVERT (0x01)
2459 2522
2460 /* values for SAS IO Unit Page 0 NegotiatedLinkRate */ 2523 /* values for SAS IO Unit Page 0 NegotiatedLinkRate */
2461 #define MPI_SAS_IOUNIT0_RATE_UNKNOWN (0x00) 2524 #define MPI_SAS_IOUNIT0_RATE_UNKNOWN (0x00)
2462 #define MPI_SAS_IOUNIT0_RATE_PHY_DISABLED (0x01) 2525 #define MPI_SAS_IOUNIT0_RATE_PHY_DISABLED (0x01)
2463 #define MPI_SAS_IOUNIT0_RATE_FAILED_SPEED_NEGOTIATION (0x02) 2526 #define MPI_SAS_IOUNIT0_RATE_FAILED_SPEED_NEGOTIATION (0x02)
2464 #define MPI_SAS_IOUNIT0_RATE_SATA_OOB_COMPLETE (0x03) 2527 #define MPI_SAS_IOUNIT0_RATE_SATA_OOB_COMPLETE (0x03)
2465 #define MPI_SAS_IOUNIT0_RATE_1_5 (0x08) 2528 #define MPI_SAS_IOUNIT0_RATE_1_5 (0x08)
2466 #define MPI_SAS_IOUNIT0_RATE_3_0 (0x09) 2529 #define MPI_SAS_IOUNIT0_RATE_3_0 (0x09)
2467 2530
2468 /* see mpi_sas.h for values for SAS IO Unit Page 0 ControllerPhyDeviceInfo values */ 2531 /* see mpi_sas.h for values for SAS IO Unit Page 0 ControllerPhyDeviceInfo values */
2469 2532
2470 /* values for SAS IO Unit Page 0 DiscoveryStatus */ 2533 /* values for SAS IO Unit Page 0 DiscoveryStatus */
2471 #define MPI_SAS_IOUNIT0_DS_LOOP_DETECTED (0x00000001) 2534 #define MPI_SAS_IOUNIT0_DS_LOOP_DETECTED (0x00000001)
2472 #define MPI_SAS_IOUNIT0_DS_UNADDRESSABLE_DEVICE (0x00000002) 2535 #define MPI_SAS_IOUNIT0_DS_UNADDRESSABLE_DEVICE (0x00000002)
2473 #define MPI_SAS_IOUNIT0_DS_MULTIPLE_PORTS (0x00000004) 2536 #define MPI_SAS_IOUNIT0_DS_MULTIPLE_PORTS (0x00000004)
2474 #define MPI_SAS_IOUNIT0_DS_EXPANDER_ERR (0x00000008) 2537 #define MPI_SAS_IOUNIT0_DS_EXPANDER_ERR (0x00000008)
2475 #define MPI_SAS_IOUNIT0_DS_SMP_TIMEOUT (0x00000010) 2538 #define MPI_SAS_IOUNIT0_DS_SMP_TIMEOUT (0x00000010)
2476 #define MPI_SAS_IOUNIT0_DS_OUT_ROUTE_ENTRIES (0x00000020) 2539 #define MPI_SAS_IOUNIT0_DS_OUT_ROUTE_ENTRIES (0x00000020)
2477 #define MPI_SAS_IOUNIT0_DS_INDEX_NOT_EXIST (0x00000040) 2540 #define MPI_SAS_IOUNIT0_DS_INDEX_NOT_EXIST (0x00000040)
2478 #define MPI_SAS_IOUNIT0_DS_SMP_FUNCTION_FAILED (0x00000080) 2541 #define MPI_SAS_IOUNIT0_DS_SMP_FUNCTION_FAILED (0x00000080)
2479 #define MPI_SAS_IOUNIT0_DS_SMP_CRC_ERROR (0x00000100) 2542 #define MPI_SAS_IOUNIT0_DS_SMP_CRC_ERROR (0x00000100)
2480 #define MPI_SAS_IOUNIT0_DS_SUBTRACTIVE_LINK (0x00000200) 2543 #define MPI_SAS_IOUNIT0_DS_SUBTRACTIVE_LINK (0x00000200)
2481 #define MPI_SAS_IOUNIT0_DS_TABLE_LINK (0x00000400) 2544 #define MPI_SAS_IOUNIT0_DS_TABLE_LINK (0x00000400)
2482 #define MPI_SAS_IOUNIT0_DS_UNSUPPORTED_DEVICE (0x00000800) 2545 #define MPI_SAS_IOUNIT0_DS_UNSUPPORTED_DEVICE (0x00000800)
2483 #define MPI_SAS_IOUNIT0_DS_MAX_SATA_TARGETS (0x00001000) 2546 #define MPI_SAS_IOUNIT0_DS_MAX_SATA_TARGETS (0x00001000)
2484 2547
2485 2548
2486 typedef struct _MPI_SAS_IO_UNIT1_PHY_DATA 2549 typedef struct _MPI_SAS_IO_UNIT1_PHY_DATA
2487 { 2550 {
2488 U8 Port; /* 00h */ 2551 U8 Port; /* 00h */
2489 U8 PortFlags; /* 01h */ 2552 U8 PortFlags; /* 01h */
2490 U8 PhyFlags; /* 02h */ 2553 U8 PhyFlags; /* 02h */
2491 U8 MaxMinLinkRate; /* 03h */ 2554 U8 MaxMinLinkRate; /* 03h */
2492 U32 ControllerPhyDeviceInfo; /* 04h */ 2555 U32 ControllerPhyDeviceInfo; /* 04h */
2493 U16 MaxTargetPortConnectTime; /* 08h */ 2556 U16 MaxTargetPortConnectTime; /* 08h */
2494 U16 Reserved1; /* 0Ah */ 2557 U16 Reserved1; /* 0Ah */
2495 } MPI_SAS_IO_UNIT1_PHY_DATA, MPI_POINTER PTR_MPI_SAS_IO_UNIT1_PHY_DATA, 2558 } MPI_SAS_IO_UNIT1_PHY_DATA, MPI_POINTER PTR_MPI_SAS_IO_UNIT1_PHY_DATA,
2496 SasIOUnit1PhyData, MPI_POINTER pSasIOUnit1PhyData; 2559 SasIOUnit1PhyData, MPI_POINTER pSasIOUnit1PhyData;
2497 2560
2498 /* 2561 /*
2499 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to 2562 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
2500 * one and check Header.PageLength at runtime. 2563 * one and check Header.PageLength at runtime.
2501 */ 2564 */
2502 #ifndef MPI_SAS_IOUNIT1_PHY_MAX 2565 #ifndef MPI_SAS_IOUNIT1_PHY_MAX
2503 #define MPI_SAS_IOUNIT1_PHY_MAX (1) 2566 #define MPI_SAS_IOUNIT1_PHY_MAX (1)
2504 #endif 2567 #endif
2505 2568
2506 typedef struct _CONFIG_PAGE_SAS_IO_UNIT_1 2569 typedef struct _CONFIG_PAGE_SAS_IO_UNIT_1
2507 { 2570 {
2508 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */ 2571 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
2509 U16 ControlFlags; /* 08h */ 2572 U16 ControlFlags; /* 08h */
2510 U16 MaxNumSATATargets; /* 0Ah */ 2573 U16 MaxNumSATATargets; /* 0Ah */
2511 U16 AdditionalControlFlags; /* 0Ch */ 2574 U16 AdditionalControlFlags; /* 0Ch */
2512 U16 Reserved1; /* 0Eh */ 2575 U16 Reserved1; /* 0Eh */
2513 U8 NumPhys; /* 10h */ 2576 U8 NumPhys; /* 10h */
2514 U8 SATAMaxQDepth; /* 11h */ 2577 U8 SATAMaxQDepth; /* 11h */
2515 U8 ReportDeviceMissingDelay; /* 12h */ 2578 U8 ReportDeviceMissingDelay; /* 12h */
2516 U8 IODeviceMissingDelay; /* 13h */ 2579 U8 IODeviceMissingDelay; /* 13h */
2517 MPI_SAS_IO_UNIT1_PHY_DATA PhyData[MPI_SAS_IOUNIT1_PHY_MAX]; /* 14h */ 2580 MPI_SAS_IO_UNIT1_PHY_DATA PhyData[MPI_SAS_IOUNIT1_PHY_MAX]; /* 14h */
2518 } CONFIG_PAGE_SAS_IO_UNIT_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_1, 2581 } CONFIG_PAGE_SAS_IO_UNIT_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_1,
2519 SasIOUnitPage1_t, MPI_POINTER pSasIOUnitPage1_t; 2582 SasIOUnitPage1_t, MPI_POINTER pSasIOUnitPage1_t;
2520 2583
2521 #define MPI_SASIOUNITPAGE1_PAGEVERSION (0x06) 2584 #define MPI_SASIOUNITPAGE1_PAGEVERSION (0x07)
2522 2585
2523 /* values for SAS IO Unit Page 1 ControlFlags */ 2586 /* values for SAS IO Unit Page 1 ControlFlags */
2524 #define MPI_SAS_IOUNIT1_CONTROL_DEVICE_SELF_TEST (0x8000) 2587 #define MPI_SAS_IOUNIT1_CONTROL_DEVICE_SELF_TEST (0x8000)
2525 #define MPI_SAS_IOUNIT1_CONTROL_SATA_3_0_MAX (0x4000) 2588 #define MPI_SAS_IOUNIT1_CONTROL_SATA_3_0_MAX (0x4000)
2526 #define MPI_SAS_IOUNIT1_CONTROL_SATA_1_5_MAX (0x2000) 2589 #define MPI_SAS_IOUNIT1_CONTROL_SATA_1_5_MAX (0x2000)
2527 #define MPI_SAS_IOUNIT1_CONTROL_SATA_SW_PRESERVE (0x1000) 2590 #define MPI_SAS_IOUNIT1_CONTROL_SATA_SW_PRESERVE (0x1000)
2528 #define MPI_SAS_IOUNIT1_CONTROL_DISABLE_SAS_HASH (0x0800) 2591 #define MPI_SAS_IOUNIT1_CONTROL_DISABLE_SAS_HASH (0x0800)
2529 2592
2530 #define MPI_SAS_IOUNIT1_CONTROL_MASK_DEV_SUPPORT (0x0600) 2593 #define MPI_SAS_IOUNIT1_CONTROL_MASK_DEV_SUPPORT (0x0600)
2531 #define MPI_SAS_IOUNIT1_CONTROL_SHIFT_DEV_SUPPORT (9) 2594 #define MPI_SAS_IOUNIT1_CONTROL_SHIFT_DEV_SUPPORT (9)
2532 #define MPI_SAS_IOUNIT1_CONTROL_DEV_SUPPORT_BOTH (0x00) 2595 #define MPI_SAS_IOUNIT1_CONTROL_DEV_SUPPORT_BOTH (0x00)
2533 #define MPI_SAS_IOUNIT1_CONTROL_DEV_SAS_SUPPORT (0x01) 2596 #define MPI_SAS_IOUNIT1_CONTROL_DEV_SAS_SUPPORT (0x01)
2534 #define MPI_SAS_IOUNIT1_CONTROL_DEV_SATA_SUPPORT (0x02) 2597 #define MPI_SAS_IOUNIT1_CONTROL_DEV_SATA_SUPPORT (0x02)
2535 2598
2536 #define MPI_SAS_IOUNIT1_CONTROL_POSTPONE_SATA_INIT (0x0100) 2599 #define MPI_SAS_IOUNIT1_CONTROL_POSTPONE_SATA_INIT (0x0100)
2537 #define MPI_SAS_IOUNIT1_CONTROL_SATA_48BIT_LBA_REQUIRED (0x0080) 2600 #define MPI_SAS_IOUNIT1_CONTROL_SATA_48BIT_LBA_REQUIRED (0x0080)
2538 #define MPI_SAS_IOUNIT1_CONTROL_SATA_SMART_REQUIRED (0x0040) 2601 #define MPI_SAS_IOUNIT1_CONTROL_SATA_SMART_REQUIRED (0x0040)
2539 #define MPI_SAS_IOUNIT1_CONTROL_SATA_NCQ_REQUIRED (0x0020) 2602 #define MPI_SAS_IOUNIT1_CONTROL_SATA_NCQ_REQUIRED (0x0020)
2540 #define MPI_SAS_IOUNIT1_CONTROL_SATA_FUA_REQUIRED (0x0010) 2603 #define MPI_SAS_IOUNIT1_CONTROL_SATA_FUA_REQUIRED (0x0010)
2541 #define MPI_SAS_IOUNIT1_CONTROL_PHY_ENABLE_ORDER_HIGH (0x0008) 2604 #define MPI_SAS_IOUNIT1_CONTROL_PHY_ENABLE_ORDER_HIGH (0x0008)
2542 #define MPI_SAS_IOUNIT1_CONTROL_SUBTRACTIVE_ILLEGAL (0x0004) 2605 #define MPI_SAS_IOUNIT1_CONTROL_SUBTRACTIVE_ILLEGAL (0x0004)
2543 #define MPI_SAS_IOUNIT1_CONTROL_FIRST_LVL_DISC_ONLY (0x0002) 2606 #define MPI_SAS_IOUNIT1_CONTROL_FIRST_LVL_DISC_ONLY (0x0002)
2544 #define MPI_SAS_IOUNIT1_CONTROL_CLEAR_AFFILIATION (0x0001) 2607 #define MPI_SAS_IOUNIT1_CONTROL_CLEAR_AFFILIATION (0x0001)
2545 2608
2546 /* values for SAS IO Unit Page 1 AdditionalControlFlags */ 2609 /* values for SAS IO Unit Page 1 AdditionalControlFlags */
2547 #define MPI_SAS_IOUNIT1_ACONTROL_ALLOW_TABLE_TO_TABLE (0x0001) 2610 #define MPI_SAS_IOUNIT1_ACONTROL_SATA_ASYNCHROUNOUS_NOTIFICATION (0x0040)
2611 #define MPI_SAS_IOUNIT1_ACONTROL_HIDE_NONZERO_ATTACHED_PHY_IDENT (0x0020)
2612 #define MPI_SAS_IOUNIT1_ACONTROL_PORT_ENABLE_ONLY_SATA_LINK_RESET (0x0010)
2613 #define MPI_SAS_IOUNIT1_ACONTROL_OTHER_AFFILIATION_SATA_LINK_RESET (0x0008)
2614 #define MPI_SAS_IOUNIT1_ACONTROL_SELF_AFFILIATION_SATA_LINK_RESET (0x0004)
2615 #define MPI_SAS_IOUNIT1_ACONTROL_NO_AFFILIATION_SATA_LINK_RESET (0x0002)
2616 #define MPI_SAS_IOUNIT1_ACONTROL_ALLOW_TABLE_TO_TABLE (0x0001)
2548 2617
2549 /* defines for SAS IO Unit Page 1 ReportDeviceMissingDelay */ 2618 /* defines for SAS IO Unit Page 1 ReportDeviceMissingDelay */
2550 #define MPI_SAS_IOUNIT1_REPORT_MISSING_TIMEOUT_MASK (0x7F) 2619 #define MPI_SAS_IOUNIT1_REPORT_MISSING_TIMEOUT_MASK (0x7F)
2551 #define MPI_SAS_IOUNIT1_REPORT_MISSING_UNIT_16 (0x80) 2620 #define MPI_SAS_IOUNIT1_REPORT_MISSING_UNIT_16 (0x80)
2552 2621
2553 /* values for SAS IO Unit Page 1 PortFlags */ 2622 /* values for SAS IO Unit Page 1 PortFlags */
2554 #define MPI_SAS_IOUNIT1_PORT_FLAGS_0_TARGET_IOC_NUM (0x00) 2623 #define MPI_SAS_IOUNIT1_PORT_FLAGS_0_TARGET_IOC_NUM (0x00)
2555 #define MPI_SAS_IOUNIT1_PORT_FLAGS_1_TARGET_IOC_NUM (0x04) 2624 #define MPI_SAS_IOUNIT1_PORT_FLAGS_1_TARGET_IOC_NUM (0x04)
2556 #define MPI_SAS_IOUNIT1_PORT_FLAGS_AUTO_PORT_CONFIG (0x01) 2625 #define MPI_SAS_IOUNIT1_PORT_FLAGS_AUTO_PORT_CONFIG (0x01)
2557 2626
2558 /* values for SAS IO Unit Page 0 PhyFlags */ 2627 /* values for SAS IO Unit Page 0 PhyFlags */
2559 #define MPI_SAS_IOUNIT1_PHY_FLAGS_PHY_DISABLE (0x04) 2628 #define MPI_SAS_IOUNIT1_PHY_FLAGS_PHY_DISABLE (0x04)
2560 #define MPI_SAS_IOUNIT1_PHY_FLAGS_TX_INVERT (0x02) 2629 #define MPI_SAS_IOUNIT1_PHY_FLAGS_TX_INVERT (0x02)
2561 #define MPI_SAS_IOUNIT1_PHY_FLAGS_RX_INVERT (0x01) 2630 #define MPI_SAS_IOUNIT1_PHY_FLAGS_RX_INVERT (0x01)
2562 2631
2563 /* values for SAS IO Unit Page 0 MaxMinLinkRate */ 2632 /* values for SAS IO Unit Page 0 MaxMinLinkRate */
2564 #define MPI_SAS_IOUNIT1_MAX_RATE_MASK (0xF0) 2633 #define MPI_SAS_IOUNIT1_MAX_RATE_MASK (0xF0)
2565 #define MPI_SAS_IOUNIT1_MAX_RATE_1_5 (0x80) 2634 #define MPI_SAS_IOUNIT1_MAX_RATE_1_5 (0x80)
2566 #define MPI_SAS_IOUNIT1_MAX_RATE_3_0 (0x90) 2635 #define MPI_SAS_IOUNIT1_MAX_RATE_3_0 (0x90)
2567 #define MPI_SAS_IOUNIT1_MIN_RATE_MASK (0x0F) 2636 #define MPI_SAS_IOUNIT1_MIN_RATE_MASK (0x0F)
2568 #define MPI_SAS_IOUNIT1_MIN_RATE_1_5 (0x08) 2637 #define MPI_SAS_IOUNIT1_MIN_RATE_1_5 (0x08)
2569 #define MPI_SAS_IOUNIT1_MIN_RATE_3_0 (0x09) 2638 #define MPI_SAS_IOUNIT1_MIN_RATE_3_0 (0x09)
2570 2639
2571 /* see mpi_sas.h for values for SAS IO Unit Page 1 ControllerPhyDeviceInfo values */ 2640 /* see mpi_sas.h for values for SAS IO Unit Page 1 ControllerPhyDeviceInfo values */
2572 2641
2573 2642
2574 typedef struct _CONFIG_PAGE_SAS_IO_UNIT_2 2643 typedef struct _CONFIG_PAGE_SAS_IO_UNIT_2
2575 { 2644 {
2576 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */ 2645 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
2577 U8 NumDevsPerEnclosure; /* 08h */ 2646 U8 NumDevsPerEnclosure; /* 08h */
2578 U8 Reserved1; /* 09h */ 2647 U8 Reserved1; /* 09h */
2579 U16 Reserved2; /* 0Ah */ 2648 U16 Reserved2; /* 0Ah */
2580 U16 MaxPersistentIDs; /* 0Ch */ 2649 U16 MaxPersistentIDs; /* 0Ch */
2581 U16 NumPersistentIDsUsed; /* 0Eh */ 2650 U16 NumPersistentIDsUsed; /* 0Eh */
2582 U8 Status; /* 10h */ 2651 U8 Status; /* 10h */
2583 U8 Flags; /* 11h */ 2652 U8 Flags; /* 11h */
2584 U16 MaxNumPhysicalMappedIDs;/* 12h */ 2653 U16 MaxNumPhysicalMappedIDs;/* 12h */
2585 } CONFIG_PAGE_SAS_IO_UNIT_2, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_2, 2654 } CONFIG_PAGE_SAS_IO_UNIT_2, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_2,
2586 SasIOUnitPage2_t, MPI_POINTER pSasIOUnitPage2_t; 2655 SasIOUnitPage2_t, MPI_POINTER pSasIOUnitPage2_t;
2587 2656
2588 #define MPI_SASIOUNITPAGE2_PAGEVERSION (0x05) 2657 #define MPI_SASIOUNITPAGE2_PAGEVERSION (0x06)
2589 2658
2590 /* values for SAS IO Unit Page 2 Status field */ 2659 /* values for SAS IO Unit Page 2 Status field */
2660 #define MPI_SAS_IOUNIT2_STATUS_DEVICE_LIMIT_EXCEEDED (0x08)
2661 #define MPI_SAS_IOUNIT2_STATUS_ENCLOSURE_DEVICES_UNMAPPED (0x04)
2591 #define MPI_SAS_IOUNIT2_STATUS_DISABLED_PERSISTENT_MAPPINGS (0x02) 2662 #define MPI_SAS_IOUNIT2_STATUS_DISABLED_PERSISTENT_MAPPINGS (0x02)
2592 #define MPI_SAS_IOUNIT2_STATUS_FULL_PERSISTENT_MAPPINGS (0x01) 2663 #define MPI_SAS_IOUNIT2_STATUS_FULL_PERSISTENT_MAPPINGS (0x01)
2593 2664
2594 /* values for SAS IO Unit Page 2 Flags field */ 2665 /* values for SAS IO Unit Page 2 Flags field */
2595 #define MPI_SAS_IOUNIT2_FLAGS_DISABLE_PERSISTENT_MAPPINGS (0x01) 2666 #define MPI_SAS_IOUNIT2_FLAGS_DISABLE_PERSISTENT_MAPPINGS (0x01)
2596 /* Physical Mapping Modes */ 2667 /* Physical Mapping Modes */
2597 #define MPI_SAS_IOUNIT2_FLAGS_MASK_PHYS_MAP_MODE (0x0E) 2668 #define MPI_SAS_IOUNIT2_FLAGS_MASK_PHYS_MAP_MODE (0x0E)
2598 #define MPI_SAS_IOUNIT2_FLAGS_SHIFT_PHYS_MAP_MODE (1) 2669 #define MPI_SAS_IOUNIT2_FLAGS_SHIFT_PHYS_MAP_MODE (1)
2599 #define MPI_SAS_IOUNIT2_FLAGS_NO_PHYS_MAP (0x00) 2670 #define MPI_SAS_IOUNIT2_FLAGS_NO_PHYS_MAP (0x00)
2600 #define MPI_SAS_IOUNIT2_FLAGS_DIRECT_ATTACH_PHYS_MAP (0x01) 2671 #define MPI_SAS_IOUNIT2_FLAGS_DIRECT_ATTACH_PHYS_MAP (0x01)
2601 #define MPI_SAS_IOUNIT2_FLAGS_ENCLOSURE_SLOT_PHYS_MAP (0x02) 2672 #define MPI_SAS_IOUNIT2_FLAGS_ENCLOSURE_SLOT_PHYS_MAP (0x02)
2602 #define MPI_SAS_IOUNIT2_FLAGS_HOST_ASSIGNED_PHYS_MAP (0x07) 2673 #define MPI_SAS_IOUNIT2_FLAGS_HOST_ASSIGNED_PHYS_MAP (0x07)
2603 2674
2604 #define MPI_SAS_IOUNIT2_FLAGS_RESERVE_ID_0_FOR_BOOT (0x10) 2675 #define MPI_SAS_IOUNIT2_FLAGS_RESERVE_ID_0_FOR_BOOT (0x10)
2605 #define MPI_SAS_IOUNIT2_FLAGS_DA_STARTING_SLOT (0x20) 2676 #define MPI_SAS_IOUNIT2_FLAGS_DA_STARTING_SLOT (0x20)
2606 2677
2607 2678
2608 typedef struct _CONFIG_PAGE_SAS_IO_UNIT_3 2679 typedef struct _CONFIG_PAGE_SAS_IO_UNIT_3
2609 { 2680 {
2610 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */ 2681 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
2611 U32 Reserved1; /* 08h */ 2682 U32 Reserved1; /* 08h */
2612 U32 MaxInvalidDwordCount; /* 0Ch */ 2683 U32 MaxInvalidDwordCount; /* 0Ch */
2613 U32 InvalidDwordCountTime; /* 10h */ 2684 U32 InvalidDwordCountTime; /* 10h */
2614 U32 MaxRunningDisparityErrorCount; /* 14h */ 2685 U32 MaxRunningDisparityErrorCount; /* 14h */
2615 U32 RunningDisparityErrorTime; /* 18h */ 2686 U32 RunningDisparityErrorTime; /* 18h */
2616 U32 MaxLossDwordSynchCount; /* 1Ch */ 2687 U32 MaxLossDwordSynchCount; /* 1Ch */
2617 U32 LossDwordSynchCountTime; /* 20h */ 2688 U32 LossDwordSynchCountTime; /* 20h */
2618 U32 MaxPhyResetProblemCount; /* 24h */ 2689 U32 MaxPhyResetProblemCount; /* 24h */
2619 U32 PhyResetProblemTime; /* 28h */ 2690 U32 PhyResetProblemTime; /* 28h */
2620 } CONFIG_PAGE_SAS_IO_UNIT_3, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_3, 2691 } CONFIG_PAGE_SAS_IO_UNIT_3, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_3,
2621 SasIOUnitPage3_t, MPI_POINTER pSasIOUnitPage3_t; 2692 SasIOUnitPage3_t, MPI_POINTER pSasIOUnitPage3_t;
2622 2693
2623 #define MPI_SASIOUNITPAGE3_PAGEVERSION (0x00) 2694 #define MPI_SASIOUNITPAGE3_PAGEVERSION (0x00)
2624 2695
2625 2696
2626 /**************************************************************************** 2697 /****************************************************************************
2627 * SAS Expander Config Pages 2698 * SAS Expander Config Pages
2628 ****************************************************************************/ 2699 ****************************************************************************/
2629 2700
2630 typedef struct _CONFIG_PAGE_SAS_EXPANDER_0 2701 typedef struct _CONFIG_PAGE_SAS_EXPANDER_0
2631 { 2702 {
2632 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */ 2703 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
2633 U8 PhysicalPort; /* 08h */ 2704 U8 PhysicalPort; /* 08h */
2634 U8 Reserved1; /* 09h */ 2705 U8 Reserved1; /* 09h */
2635 U16 EnclosureHandle; /* 0Ah */ 2706 U16 EnclosureHandle; /* 0Ah */
2636 U64 SASAddress; /* 0Ch */ 2707 U64 SASAddress; /* 0Ch */
2637 U32 DiscoveryStatus; /* 14h */ 2708 U32 DiscoveryStatus; /* 14h */
2638 U16 DevHandle; /* 18h */ 2709 U16 DevHandle; /* 18h */
2639 U16 ParentDevHandle; /* 1Ah */ 2710 U16 ParentDevHandle; /* 1Ah */
2640 U16 ExpanderChangeCount; /* 1Ch */ 2711 U16 ExpanderChangeCount; /* 1Ch */
2641 U16 ExpanderRouteIndexes; /* 1Eh */ 2712 U16 ExpanderRouteIndexes; /* 1Eh */
2642 U8 NumPhys; /* 20h */ 2713 U8 NumPhys; /* 20h */
2643 U8 SASLevel; /* 21h */ 2714 U8 SASLevel; /* 21h */
2644 U8 Flags; /* 22h */ 2715 U8 Flags; /* 22h */
2645 U8 Reserved3; /* 23h */ 2716 U8 Reserved3; /* 23h */
2646 } CONFIG_PAGE_SAS_EXPANDER_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_EXPANDER_0, 2717 } CONFIG_PAGE_SAS_EXPANDER_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_EXPANDER_0,
2647 SasExpanderPage0_t, MPI_POINTER pSasExpanderPage0_t; 2718 SasExpanderPage0_t, MPI_POINTER pSasExpanderPage0_t;
2648 2719
2649 #define MPI_SASEXPANDER0_PAGEVERSION (0x03) 2720 #define MPI_SASEXPANDER0_PAGEVERSION (0x03)
2650 2721
2651 /* values for SAS Expander Page 0 DiscoveryStatus field */ 2722 /* values for SAS Expander Page 0 DiscoveryStatus field */
2652 #define MPI_SAS_EXPANDER0_DS_LOOP_DETECTED (0x00000001) 2723 #define MPI_SAS_EXPANDER0_DS_LOOP_DETECTED (0x00000001)
2653 #define MPI_SAS_EXPANDER0_DS_UNADDRESSABLE_DEVICE (0x00000002) 2724 #define MPI_SAS_EXPANDER0_DS_UNADDRESSABLE_DEVICE (0x00000002)
2654 #define MPI_SAS_EXPANDER0_DS_MULTIPLE_PORTS (0x00000004) 2725 #define MPI_SAS_EXPANDER0_DS_MULTIPLE_PORTS (0x00000004)
2655 #define MPI_SAS_EXPANDER0_DS_EXPANDER_ERR (0x00000008) 2726 #define MPI_SAS_EXPANDER0_DS_EXPANDER_ERR (0x00000008)
2656 #define MPI_SAS_EXPANDER0_DS_SMP_TIMEOUT (0x00000010) 2727 #define MPI_SAS_EXPANDER0_DS_SMP_TIMEOUT (0x00000010)
2657 #define MPI_SAS_EXPANDER0_DS_OUT_ROUTE_ENTRIES (0x00000020) 2728 #define MPI_SAS_EXPANDER0_DS_OUT_ROUTE_ENTRIES (0x00000020)
2658 #define MPI_SAS_EXPANDER0_DS_INDEX_NOT_EXIST (0x00000040) 2729 #define MPI_SAS_EXPANDER0_DS_INDEX_NOT_EXIST (0x00000040)
2659 #define MPI_SAS_EXPANDER0_DS_SMP_FUNCTION_FAILED (0x00000080) 2730 #define MPI_SAS_EXPANDER0_DS_SMP_FUNCTION_FAILED (0x00000080)
2660 #define MPI_SAS_EXPANDER0_DS_SMP_CRC_ERROR (0x00000100) 2731 #define MPI_SAS_EXPANDER0_DS_SMP_CRC_ERROR (0x00000100)
2661 #define MPI_SAS_EXPANDER0_DS_SUBTRACTIVE_LINK (0x00000200) 2732 #define MPI_SAS_EXPANDER0_DS_SUBTRACTIVE_LINK (0x00000200)
2662 #define MPI_SAS_EXPANDER0_DS_TABLE_LINK (0x00000400) 2733 #define MPI_SAS_EXPANDER0_DS_TABLE_LINK (0x00000400)
2663 #define MPI_SAS_EXPANDER0_DS_UNSUPPORTED_DEVICE (0x00000800) 2734 #define MPI_SAS_EXPANDER0_DS_UNSUPPORTED_DEVICE (0x00000800)
2664 2735
2665 /* values for SAS Expander Page 0 Flags field */ 2736 /* values for SAS Expander Page 0 Flags field */
2666 #define MPI_SAS_EXPANDER0_FLAGS_ROUTE_TABLE_CONFIG (0x02) 2737 #define MPI_SAS_EXPANDER0_FLAGS_ROUTE_TABLE_CONFIG (0x02)
2667 #define MPI_SAS_EXPANDER0_FLAGS_CONFIG_IN_PROGRESS (0x01) 2738 #define MPI_SAS_EXPANDER0_FLAGS_CONFIG_IN_PROGRESS (0x01)
2668 2739
2669 2740
2670 typedef struct _CONFIG_PAGE_SAS_EXPANDER_1 2741 typedef struct _CONFIG_PAGE_SAS_EXPANDER_1
2671 { 2742 {
2672 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */ 2743 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
2673 U8 PhysicalPort; /* 08h */ 2744 U8 PhysicalPort; /* 08h */
2674 U8 Reserved1; /* 09h */ 2745 U8 Reserved1; /* 09h */
2675 U16 Reserved2; /* 0Ah */ 2746 U16 Reserved2; /* 0Ah */
2676 U8 NumPhys; /* 0Ch */ 2747 U8 NumPhys; /* 0Ch */
2677 U8 Phy; /* 0Dh */ 2748 U8 Phy; /* 0Dh */
2678 U16 NumTableEntriesProgrammed; /* 0Eh */ 2749 U16 NumTableEntriesProgrammed; /* 0Eh */
2679 U8 ProgrammedLinkRate; /* 10h */ 2750 U8 ProgrammedLinkRate; /* 10h */
2680 U8 HwLinkRate; /* 11h */ 2751 U8 HwLinkRate; /* 11h */
2681 U16 AttachedDevHandle; /* 12h */ 2752 U16 AttachedDevHandle; /* 12h */
2682 U32 PhyInfo; /* 14h */ 2753 U32 PhyInfo; /* 14h */
2683 U32 AttachedDeviceInfo; /* 18h */ 2754 U32 AttachedDeviceInfo; /* 18h */
2684 U16 OwnerDevHandle; /* 1Ch */ 2755 U16 OwnerDevHandle; /* 1Ch */
2685 U8 ChangeCount; /* 1Eh */ 2756 U8 ChangeCount; /* 1Eh */
2686 U8 NegotiatedLinkRate; /* 1Fh */ 2757 U8 NegotiatedLinkRate; /* 1Fh */
2687 U8 PhyIdentifier; /* 20h */ 2758 U8 PhyIdentifier; /* 20h */
2688 U8 AttachedPhyIdentifier; /* 21h */ 2759 U8 AttachedPhyIdentifier; /* 21h */
2689 U8 Reserved3; /* 22h */ 2760 U8 Reserved3; /* 22h */
2690 U8 DiscoveryInfo; /* 23h */ 2761 U8 DiscoveryInfo; /* 23h */
2691 U32 Reserved4; /* 24h */ 2762 U32 Reserved4; /* 24h */
2692 } CONFIG_PAGE_SAS_EXPANDER_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_EXPANDER_1, 2763 } CONFIG_PAGE_SAS_EXPANDER_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_EXPANDER_1,
2693 SasExpanderPage1_t, MPI_POINTER pSasExpanderPage1_t; 2764 SasExpanderPage1_t, MPI_POINTER pSasExpanderPage1_t;
2694 2765
2695 #define MPI_SASEXPANDER1_PAGEVERSION (0x01) 2766 #define MPI_SASEXPANDER1_PAGEVERSION (0x01)
2696 2767
2697 /* use MPI_SAS_PHY0_PRATE_ defines for ProgrammedLinkRate */ 2768 /* use MPI_SAS_PHY0_PRATE_ defines for ProgrammedLinkRate */
2698 2769
2699 /* use MPI_SAS_PHY0_HWRATE_ defines for HwLinkRate */ 2770 /* use MPI_SAS_PHY0_HWRATE_ defines for HwLinkRate */
2700 2771
2701 /* use MPI_SAS_PHY0_PHYINFO_ defines for PhyInfo */ 2772 /* use MPI_SAS_PHY0_PHYINFO_ defines for PhyInfo */
2702 2773
2703 /* see mpi_sas.h for values for SAS Expander Page 1 AttachedDeviceInfo values */ 2774 /* see mpi_sas.h for values for SAS Expander Page 1 AttachedDeviceInfo values */
2704 2775
2705 /* values for SAS Expander Page 1 DiscoveryInfo field */ 2776 /* values for SAS Expander Page 1 DiscoveryInfo field */
2706 #define MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY DISABLED (0x04) 2777 #define MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY DISABLED (0x04)
2707 #define MPI_SAS_EXPANDER1_DISCINFO_LINK_STATUS_CHANGE (0x02) 2778 #define MPI_SAS_EXPANDER1_DISCINFO_LINK_STATUS_CHANGE (0x02)
2708 #define MPI_SAS_EXPANDER1_DISCINFO_NO_ROUTING_ENTRIES (0x01) 2779 #define MPI_SAS_EXPANDER1_DISCINFO_NO_ROUTING_ENTRIES (0x01)
2709 2780
2710 /* values for SAS Expander Page 1 NegotiatedLinkRate field */ 2781 /* values for SAS Expander Page 1 NegotiatedLinkRate field */
2711 #define MPI_SAS_EXPANDER1_NEG_RATE_UNKNOWN (0x00) 2782 #define MPI_SAS_EXPANDER1_NEG_RATE_UNKNOWN (0x00)
2712 #define MPI_SAS_EXPANDER1_NEG_RATE_PHY_DISABLED (0x01) 2783 #define MPI_SAS_EXPANDER1_NEG_RATE_PHY_DISABLED (0x01)
2713 #define MPI_SAS_EXPANDER1_NEG_RATE_FAILED_NEGOTIATION (0x02) 2784 #define MPI_SAS_EXPANDER1_NEG_RATE_FAILED_NEGOTIATION (0x02)
2714 #define MPI_SAS_EXPANDER1_NEG_RATE_SATA_OOB_COMPLETE (0x03) 2785 #define MPI_SAS_EXPANDER1_NEG_RATE_SATA_OOB_COMPLETE (0x03)
2715 #define MPI_SAS_EXPANDER1_NEG_RATE_1_5 (0x08) 2786 #define MPI_SAS_EXPANDER1_NEG_RATE_1_5 (0x08)
2716 #define MPI_SAS_EXPANDER1_NEG_RATE_3_0 (0x09) 2787 #define MPI_SAS_EXPANDER1_NEG_RATE_3_0 (0x09)
2717 2788
2718 2789
2719 /**************************************************************************** 2790 /****************************************************************************
2720 * SAS Device Config Pages 2791 * SAS Device Config Pages
2721 ****************************************************************************/ 2792 ****************************************************************************/
2722 2793
2723 typedef struct _CONFIG_PAGE_SAS_DEVICE_0 2794 typedef struct _CONFIG_PAGE_SAS_DEVICE_0
2724 { 2795 {
2725 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */ 2796 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
2726 U16 Slot; /* 08h */ 2797 U16 Slot; /* 08h */
2727 U16 EnclosureHandle; /* 0Ah */ 2798 U16 EnclosureHandle; /* 0Ah */
2728 U64 SASAddress; /* 0Ch */ 2799 U64 SASAddress; /* 0Ch */
2729 U16 ParentDevHandle; /* 14h */ 2800 U16 ParentDevHandle; /* 14h */
2730 U8 PhyNum; /* 16h */ 2801 U8 PhyNum; /* 16h */
2731 U8 AccessStatus; /* 17h */ 2802 U8 AccessStatus; /* 17h */
2732 U16 DevHandle; /* 18h */ 2803 U16 DevHandle; /* 18h */
2733 U8 TargetID; /* 1Ah */ 2804 U8 TargetID; /* 1Ah */
2734 U8 Bus; /* 1Bh */ 2805 U8 Bus; /* 1Bh */
2735 U32 DeviceInfo; /* 1Ch */ 2806 U32 DeviceInfo; /* 1Ch */
2736 U16 Flags; /* 20h */ 2807 U16 Flags; /* 20h */
2737 U8 PhysicalPort; /* 22h */ 2808 U8 PhysicalPort; /* 22h */
2738 U8 Reserved2; /* 23h */ 2809 U8 Reserved2; /* 23h */
2739 } CONFIG_PAGE_SAS_DEVICE_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_DEVICE_0, 2810 } CONFIG_PAGE_SAS_DEVICE_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_DEVICE_0,
2740 SasDevicePage0_t, MPI_POINTER pSasDevicePage0_t; 2811 SasDevicePage0_t, MPI_POINTER pSasDevicePage0_t;
2741 2812
2742 #define MPI_SASDEVICE0_PAGEVERSION (0x04) 2813 #define MPI_SASDEVICE0_PAGEVERSION (0x05)
2743 2814
2744 /* values for SAS Device Page 0 AccessStatus field */ 2815 /* values for SAS Device Page 0 AccessStatus field */
2745 #define MPI_SAS_DEVICE0_ASTATUS_NO_ERRORS (0x00) 2816 #define MPI_SAS_DEVICE0_ASTATUS_NO_ERRORS (0x00)
2746 #define MPI_SAS_DEVICE0_ASTATUS_SATA_INIT_FAILED (0x01) 2817 #define MPI_SAS_DEVICE0_ASTATUS_SATA_INIT_FAILED (0x01)
2747 #define MPI_SAS_DEVICE0_ASTATUS_SATA_CAPABILITY_FAILED (0x02) 2818 #define MPI_SAS_DEVICE0_ASTATUS_SATA_CAPABILITY_FAILED (0x02)
2819 #define MPI_SAS_DEVICE0_ASTATUS_SATA_AFFILIATION_CONFLICT (0x03)
2820 /* specific values for SATA Init failures */
2821 #define MPI_SAS_DEVICE0_ASTATUS_SIF_UNKNOWN (0x10)
2822 #define MPI_SAS_DEVICE0_ASTATUS_SIF_AFFILIATION_CONFLICT (0x11)
2823 #define MPI_SAS_DEVICE0_ASTATUS_SIF_DIAG (0x12)
2824 #define MPI_SAS_DEVICE0_ASTATUS_SIF_IDENTIFICATION (0x13)
2825 #define MPI_SAS_DEVICE0_ASTATUS_SIF_CHECK_POWER (0x14)
2826 #define MPI_SAS_DEVICE0_ASTATUS_SIF_PIO_SN (0x15)
2827 #define MPI_SAS_DEVICE0_ASTATUS_SIF_MDMA_SN (0x16)
2828 #define MPI_SAS_DEVICE0_ASTATUS_SIF_UDMA_SN (0x17)
2829 #define MPI_SAS_DEVICE0_ASTATUS_SIF_ZONING_VIOLATION (0x18)
2830 #define MPI_SAS_DEVICE0_ASTATUS_SIF_NOT_ADDRESSABLE (0x19)
2831 #define MPI_SAS_DEVICE0_ASTATUS_SIF_MAX (0x1F)
2748 2832
2749 /* values for SAS Device Page 0 Flags field */ 2833 /* values for SAS Device Page 0 Flags field */
2750 #define MPI_SAS_DEVICE0_FLAGS_SATA_SW_PRESERVE (0x0200) 2834 #define MPI_SAS_DEVICE0_FLAGS_SATA_ASYNCHRONOUS_NOTIFY (0x0400)
2751 #define MPI_SAS_DEVICE0_FLAGS_UNSUPPORTED_DEVICE (0x0100) 2835 #define MPI_SAS_DEVICE0_FLAGS_SATA_SW_PRESERVE (0x0200)
2752 #define MPI_SAS_DEVICE0_FLAGS_SATA_48BIT_LBA_SUPPORTED (0x0080) 2836 #define MPI_SAS_DEVICE0_FLAGS_UNSUPPORTED_DEVICE (0x0100)
2753 #define MPI_SAS_DEVICE0_FLAGS_SATA_SMART_SUPPORTED (0x0040) 2837 #define MPI_SAS_DEVICE0_FLAGS_SATA_48BIT_LBA_SUPPORTED (0x0080)
2754 #define MPI_SAS_DEVICE0_FLAGS_SATA_NCQ_SUPPORTED (0x0020) 2838 #define MPI_SAS_DEVICE0_FLAGS_SATA_SMART_SUPPORTED (0x0040)
2755 #define MPI_SAS_DEVICE0_FLAGS_SATA_FUA_SUPPORTED (0x0010) 2839 #define MPI_SAS_DEVICE0_FLAGS_SATA_NCQ_SUPPORTED (0x0020)
2756 #define MPI_SAS_DEVICE0_FLAGS_PORT_SELECTOR_ATTACH (0x0008) 2840 #define MPI_SAS_DEVICE0_FLAGS_SATA_FUA_SUPPORTED (0x0010)
2757 #define MPI_SAS_DEVICE0_FLAGS_MAPPING_PERSISTENT (0x0004) 2841 #define MPI_SAS_DEVICE0_FLAGS_PORT_SELECTOR_ATTACH (0x0008)
2758 #define MPI_SAS_DEVICE0_FLAGS_DEVICE_MAPPED (0x0002) 2842 #define MPI_SAS_DEVICE0_FLAGS_MAPPING_PERSISTENT (0x0004)
2759 #define MPI_SAS_DEVICE0_FLAGS_DEVICE_PRESENT (0x0001) 2843 #define MPI_SAS_DEVICE0_FLAGS_DEVICE_MAPPED (0x0002)
2844 #define MPI_SAS_DEVICE0_FLAGS_DEVICE_PRESENT (0x0001)
2760 2845
2761 /* see mpi_sas.h for values for SAS Device Page 0 DeviceInfo values */ 2846 /* see mpi_sas.h for values for SAS Device Page 0 DeviceInfo values */
2762 2847
2763 2848
2764 typedef struct _CONFIG_PAGE_SAS_DEVICE_1 2849 typedef struct _CONFIG_PAGE_SAS_DEVICE_1
2765 { 2850 {
2766 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */ 2851 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
2767 U32 Reserved1; /* 08h */ 2852 U32 Reserved1; /* 08h */
2768 U64 SASAddress; /* 0Ch */ 2853 U64 SASAddress; /* 0Ch */
2769 U32 Reserved2; /* 14h */ 2854 U32 Reserved2; /* 14h */
2770 U16 DevHandle; /* 18h */ 2855 U16 DevHandle; /* 18h */
2771 U8 TargetID; /* 1Ah */ 2856 U8 TargetID; /* 1Ah */
2772 U8 Bus; /* 1Bh */ 2857 U8 Bus; /* 1Bh */
2773 U8 InitialRegDeviceFIS[20];/* 1Ch */ 2858 U8 InitialRegDeviceFIS[20];/* 1Ch */
2774 } CONFIG_PAGE_SAS_DEVICE_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_DEVICE_1, 2859 } CONFIG_PAGE_SAS_DEVICE_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_DEVICE_1,
2775 SasDevicePage1_t, MPI_POINTER pSasDevicePage1_t; 2860 SasDevicePage1_t, MPI_POINTER pSasDevicePage1_t;
2776 2861
2777 #define MPI_SASDEVICE1_PAGEVERSION (0x00) 2862 #define MPI_SASDEVICE1_PAGEVERSION (0x00)
2778 2863
2779 2864
2780 typedef struct _CONFIG_PAGE_SAS_DEVICE_2 2865 typedef struct _CONFIG_PAGE_SAS_DEVICE_2
2781 { 2866 {
2782 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */ 2867 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
2783 U64 PhysicalIdentifier; /* 08h */ 2868 U64 PhysicalIdentifier; /* 08h */
2784 U32 EnclosureMapping; /* 10h */ 2869 U32 EnclosureMapping; /* 10h */
2785 } CONFIG_PAGE_SAS_DEVICE_2, MPI_POINTER PTR_CONFIG_PAGE_SAS_DEVICE_2, 2870 } CONFIG_PAGE_SAS_DEVICE_2, MPI_POINTER PTR_CONFIG_PAGE_SAS_DEVICE_2,
2786 SasDevicePage2_t, MPI_POINTER pSasDevicePage2_t; 2871 SasDevicePage2_t, MPI_POINTER pSasDevicePage2_t;
2787 2872
2788 #define MPI_SASDEVICE2_PAGEVERSION (0x01) 2873 #define MPI_SASDEVICE2_PAGEVERSION (0x01)
2789 2874
2790 /* defines for SAS Device Page 2 EnclosureMapping field */ 2875 /* defines for SAS Device Page 2 EnclosureMapping field */
2791 #define MPI_SASDEVICE2_ENC_MAP_MASK_MISSING_COUNT (0x0000000F) 2876 #define MPI_SASDEVICE2_ENC_MAP_MASK_MISSING_COUNT (0x0000000F)
2792 #define MPI_SASDEVICE2_ENC_MAP_SHIFT_MISSING_COUNT (0) 2877 #define MPI_SASDEVICE2_ENC_MAP_SHIFT_MISSING_COUNT (0)
2793 #define MPI_SASDEVICE2_ENC_MAP_MASK_NUM_SLOTS (0x000007F0) 2878 #define MPI_SASDEVICE2_ENC_MAP_MASK_NUM_SLOTS (0x000007F0)
2794 #define MPI_SASDEVICE2_ENC_MAP_SHIFT_NUM_SLOTS (4) 2879 #define MPI_SASDEVICE2_ENC_MAP_SHIFT_NUM_SLOTS (4)
2795 #define MPI_SASDEVICE2_ENC_MAP_MASK_START_INDEX (0x001FF800) 2880 #define MPI_SASDEVICE2_ENC_MAP_MASK_START_INDEX (0x001FF800)
2796 #define MPI_SASDEVICE2_ENC_MAP_SHIFT_START_INDEX (11) 2881 #define MPI_SASDEVICE2_ENC_MAP_SHIFT_START_INDEX (11)
2797 2882
2798 2883
2799 /**************************************************************************** 2884 /****************************************************************************
2800 * SAS PHY Config Pages 2885 * SAS PHY Config Pages
2801 ****************************************************************************/ 2886 ****************************************************************************/
2802 2887
2803 typedef struct _CONFIG_PAGE_SAS_PHY_0 2888 typedef struct _CONFIG_PAGE_SAS_PHY_0
2804 { 2889 {
2805 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */ 2890 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
2806 U16 OwnerDevHandle; /* 08h */ 2891 U16 OwnerDevHandle; /* 08h */
2807 U16 Reserved1; /* 0Ah */ 2892 U16 Reserved1; /* 0Ah */
2808 U64 SASAddress; /* 0Ch */ 2893 U64 SASAddress; /* 0Ch */
2809 U16 AttachedDevHandle; /* 14h */ 2894 U16 AttachedDevHandle; /* 14h */
2810 U8 AttachedPhyIdentifier; /* 16h */ 2895 U8 AttachedPhyIdentifier; /* 16h */
2811 U8 Reserved2; /* 17h */ 2896 U8 Reserved2; /* 17h */
2812 U32 AttachedDeviceInfo; /* 18h */ 2897 U32 AttachedDeviceInfo; /* 18h */
2813 U8 ProgrammedLinkRate; /* 20h */ 2898 U8 ProgrammedLinkRate; /* 20h */
2814 U8 HwLinkRate; /* 21h */ 2899 U8 HwLinkRate; /* 21h */
2815 U8 ChangeCount; /* 22h */ 2900 U8 ChangeCount; /* 22h */
2816 U8 Flags; /* 23h */ 2901 U8 Flags; /* 23h */
2817 U32 PhyInfo; /* 24h */ 2902 U32 PhyInfo; /* 24h */
2818 } CONFIG_PAGE_SAS_PHY_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_PHY_0, 2903 } CONFIG_PAGE_SAS_PHY_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_PHY_0,
2819 SasPhyPage0_t, MPI_POINTER pSasPhyPage0_t; 2904 SasPhyPage0_t, MPI_POINTER pSasPhyPage0_t;
2820 2905
2821 #define MPI_SASPHY0_PAGEVERSION (0x01) 2906 #define MPI_SASPHY0_PAGEVERSION (0x01)
2822 2907
2823 /* values for SAS PHY Page 0 ProgrammedLinkRate field */ 2908 /* values for SAS PHY Page 0 ProgrammedLinkRate field */
2824 #define MPI_SAS_PHY0_PRATE_MAX_RATE_MASK (0xF0) 2909 #define MPI_SAS_PHY0_PRATE_MAX_RATE_MASK (0xF0)
2825 #define MPI_SAS_PHY0_PRATE_MAX_RATE_NOT_PROGRAMMABLE (0x00) 2910 #define MPI_SAS_PHY0_PRATE_MAX_RATE_NOT_PROGRAMMABLE (0x00)
2826 #define MPI_SAS_PHY0_PRATE_MAX_RATE_1_5 (0x80) 2911 #define MPI_SAS_PHY0_PRATE_MAX_RATE_1_5 (0x80)
2827 #define MPI_SAS_PHY0_PRATE_MAX_RATE_3_0 (0x90) 2912 #define MPI_SAS_PHY0_PRATE_MAX_RATE_3_0 (0x90)
2828 #define MPI_SAS_PHY0_PRATE_MIN_RATE_MASK (0x0F) 2913 #define MPI_SAS_PHY0_PRATE_MIN_RATE_MASK (0x0F)
2829 #define MPI_SAS_PHY0_PRATE_MIN_RATE_NOT_PROGRAMMABLE (0x00) 2914 #define MPI_SAS_PHY0_PRATE_MIN_RATE_NOT_PROGRAMMABLE (0x00)
2830 #define MPI_SAS_PHY0_PRATE_MIN_RATE_1_5 (0x08) 2915 #define MPI_SAS_PHY0_PRATE_MIN_RATE_1_5 (0x08)
2831 #define MPI_SAS_PHY0_PRATE_MIN_RATE_3_0 (0x09) 2916 #define MPI_SAS_PHY0_PRATE_MIN_RATE_3_0 (0x09)
2832 2917
2833 /* values for SAS PHY Page 0 HwLinkRate field */ 2918 /* values for SAS PHY Page 0 HwLinkRate field */
2834 #define MPI_SAS_PHY0_HWRATE_MAX_RATE_MASK (0xF0) 2919 #define MPI_SAS_PHY0_HWRATE_MAX_RATE_MASK (0xF0)
2835 #define MPI_SAS_PHY0_HWRATE_MAX_RATE_1_5 (0x80) 2920 #define MPI_SAS_PHY0_HWRATE_MAX_RATE_1_5 (0x80)
2836 #define MPI_SAS_PHY0_HWRATE_MAX_RATE_3_0 (0x90) 2921 #define MPI_SAS_PHY0_HWRATE_MAX_RATE_3_0 (0x90)
2837 #define MPI_SAS_PHY0_HWRATE_MIN_RATE_MASK (0x0F) 2922 #define MPI_SAS_PHY0_HWRATE_MIN_RATE_MASK (0x0F)
2838 #define MPI_SAS_PHY0_HWRATE_MIN_RATE_1_5 (0x08) 2923 #define MPI_SAS_PHY0_HWRATE_MIN_RATE_1_5 (0x08)
2839 #define MPI_SAS_PHY0_HWRATE_MIN_RATE_3_0 (0x09) 2924 #define MPI_SAS_PHY0_HWRATE_MIN_RATE_3_0 (0x09)
2840 2925
2841 /* values for SAS PHY Page 0 Flags field */ 2926 /* values for SAS PHY Page 0 Flags field */
2842 #define MPI_SAS_PHY0_FLAGS_SGPIO_DIRECT_ATTACH_ENC (0x01) 2927 #define MPI_SAS_PHY0_FLAGS_SGPIO_DIRECT_ATTACH_ENC (0x01)
2843 2928
2844 /* values for SAS PHY Page 0 PhyInfo field */ 2929 /* values for SAS PHY Page 0 PhyInfo field */
2845 #define MPI_SAS_PHY0_PHYINFO_SATA_PORT_ACTIVE (0x00004000) 2930 #define MPI_SAS_PHY0_PHYINFO_SATA_PORT_ACTIVE (0x00004000)
2846 #define MPI_SAS_PHY0_PHYINFO_SATA_PORT_SELECTOR (0x00002000) 2931 #define MPI_SAS_PHY0_PHYINFO_SATA_PORT_SELECTOR (0x00002000)
2847 #define MPI_SAS_PHY0_PHYINFO_VIRTUAL_PHY (0x00001000) 2932 #define MPI_SAS_PHY0_PHYINFO_VIRTUAL_PHY (0x00001000)
2848 2933
2849 #define MPI_SAS_PHY0_PHYINFO_MASK_PARTIAL_PATHWAY_TIME (0x00000F00) 2934 #define MPI_SAS_PHY0_PHYINFO_MASK_PARTIAL_PATHWAY_TIME (0x00000F00)
2850 #define MPI_SAS_PHY0_PHYINFO_SHIFT_PARTIAL_PATHWAY_TIME (8) 2935 #define MPI_SAS_PHY0_PHYINFO_SHIFT_PARTIAL_PATHWAY_TIME (8)
2851 2936
2852 #define MPI_SAS_PHY0_PHYINFO_MASK_ROUTING_ATTRIBUTE (0x000000F0) 2937 #define MPI_SAS_PHY0_PHYINFO_MASK_ROUTING_ATTRIBUTE (0x000000F0)
2853 #define MPI_SAS_PHY0_PHYINFO_DIRECT_ROUTING (0x00000000) 2938 #define MPI_SAS_PHY0_PHYINFO_DIRECT_ROUTING (0x00000000)
2854 #define MPI_SAS_PHY0_PHYINFO_SUBTRACTIVE_ROUTING (0x00000010) 2939 #define MPI_SAS_PHY0_PHYINFO_SUBTRACTIVE_ROUTING (0x00000010)
2855 #define MPI_SAS_PHY0_PHYINFO_TABLE_ROUTING (0x00000020) 2940 #define MPI_SAS_PHY0_PHYINFO_TABLE_ROUTING (0x00000020)
2856 2941
2857 #define MPI_SAS_PHY0_PHYINFO_MASK_LINK_RATE (0x0000000F) 2942 #define MPI_SAS_PHY0_PHYINFO_MASK_LINK_RATE (0x0000000F)
2858 #define MPI_SAS_PHY0_PHYINFO_UNKNOWN_LINK_RATE (0x00000000) 2943 #define MPI_SAS_PHY0_PHYINFO_UNKNOWN_LINK_RATE (0x00000000)
2859 #define MPI_SAS_PHY0_PHYINFO_PHY_DISABLED (0x00000001) 2944 #define MPI_SAS_PHY0_PHYINFO_PHY_DISABLED (0x00000001)
2860 #define MPI_SAS_PHY0_PHYINFO_NEGOTIATION_FAILED (0x00000002) 2945 #define MPI_SAS_PHY0_PHYINFO_NEGOTIATION_FAILED (0x00000002)
2861 #define MPI_SAS_PHY0_PHYINFO_SATA_OOB_COMPLETE (0x00000003) 2946 #define MPI_SAS_PHY0_PHYINFO_SATA_OOB_COMPLETE (0x00000003)
2862 #define MPI_SAS_PHY0_PHYINFO_RATE_1_5 (0x00000008) 2947 #define MPI_SAS_PHY0_PHYINFO_RATE_1_5 (0x00000008)
2863 #define MPI_SAS_PHY0_PHYINFO_RATE_3_0 (0x00000009) 2948 #define MPI_SAS_PHY0_PHYINFO_RATE_3_0 (0x00000009)
2864 2949
2865 2950
2866 typedef struct _CONFIG_PAGE_SAS_PHY_1 2951 typedef struct _CONFIG_PAGE_SAS_PHY_1
2867 { 2952 {
2868 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */ 2953 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
2869 U32 Reserved1; /* 08h */ 2954 U32 Reserved1; /* 08h */
2870 U32 InvalidDwordCount; /* 0Ch */ 2955 U32 InvalidDwordCount; /* 0Ch */
2871 U32 RunningDisparityErrorCount; /* 10h */ 2956 U32 RunningDisparityErrorCount; /* 10h */
2872 U32 LossDwordSynchCount; /* 14h */ 2957 U32 LossDwordSynchCount; /* 14h */
2873 U32 PhyResetProblemCount; /* 18h */ 2958 U32 PhyResetProblemCount; /* 18h */
2874 } CONFIG_PAGE_SAS_PHY_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_PHY_1, 2959 } CONFIG_PAGE_SAS_PHY_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_PHY_1,
2875 SasPhyPage1_t, MPI_POINTER pSasPhyPage1_t; 2960 SasPhyPage1_t, MPI_POINTER pSasPhyPage1_t;
2876 2961
2877 #define MPI_SASPHY1_PAGEVERSION (0x00) 2962 #define MPI_SASPHY1_PAGEVERSION (0x00)
2878 2963
2879 2964
2880 /**************************************************************************** 2965 /****************************************************************************
2881 * SAS Enclosure Config Pages 2966 * SAS Enclosure Config Pages
2882 ****************************************************************************/ 2967 ****************************************************************************/
2883 2968
2884 typedef struct _CONFIG_PAGE_SAS_ENCLOSURE_0 2969 typedef struct _CONFIG_PAGE_SAS_ENCLOSURE_0
2885 { 2970 {
2886 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */ 2971 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
2887 U32 Reserved1; /* 08h */ 2972 U32 Reserved1; /* 08h */
2888 U64 EnclosureLogicalID; /* 0Ch */ 2973 U64 EnclosureLogicalID; /* 0Ch */
2889 U16 Flags; /* 14h */ 2974 U16 Flags; /* 14h */
2890 U16 EnclosureHandle; /* 16h */ 2975 U16 EnclosureHandle; /* 16h */
2891 U16 NumSlots; /* 18h */ 2976 U16 NumSlots; /* 18h */
2892 U16 StartSlot; /* 1Ah */ 2977 U16 StartSlot; /* 1Ah */
2893 U8 StartTargetID; /* 1Ch */ 2978 U8 StartTargetID; /* 1Ch */
2894 U8 StartBus; /* 1Dh */ 2979 U8 StartBus; /* 1Dh */
2895 U8 SEPTargetID; /* 1Eh */ 2980 U8 SEPTargetID; /* 1Eh */
2896 U8 SEPBus; /* 1Fh */ 2981 U8 SEPBus; /* 1Fh */
2897 U32 Reserved2; /* 20h */ 2982 U32 Reserved2; /* 20h */
2898 U32 Reserved3; /* 24h */ 2983 U32 Reserved3; /* 24h */
2899 } CONFIG_PAGE_SAS_ENCLOSURE_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_ENCLOSURE_0, 2984 } CONFIG_PAGE_SAS_ENCLOSURE_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_ENCLOSURE_0,
2900 SasEnclosurePage0_t, MPI_POINTER pSasEnclosurePage0_t; 2985 SasEnclosurePage0_t, MPI_POINTER pSasEnclosurePage0_t;
2901 2986
2902 #define MPI_SASENCLOSURE0_PAGEVERSION (0x01) 2987 #define MPI_SASENCLOSURE0_PAGEVERSION (0x01)
2903 2988
2904 /* values for SAS Enclosure Page 0 Flags field */ 2989 /* values for SAS Enclosure Page 0 Flags field */
2905 #define MPI_SAS_ENCLS0_FLAGS_SEP_BUS_ID_VALID (0x0020) 2990 #define MPI_SAS_ENCLS0_FLAGS_SEP_BUS_ID_VALID (0x0020)
2906 #define MPI_SAS_ENCLS0_FLAGS_START_BUS_ID_VALID (0x0010) 2991 #define MPI_SAS_ENCLS0_FLAGS_START_BUS_ID_VALID (0x0010)
2907 2992
2908 #define MPI_SAS_ENCLS0_FLAGS_MNG_MASK (0x000F) 2993 #define MPI_SAS_ENCLS0_FLAGS_MNG_MASK (0x000F)
2909 #define MPI_SAS_ENCLS0_FLAGS_MNG_UNKNOWN (0x0000) 2994 #define MPI_SAS_ENCLS0_FLAGS_MNG_UNKNOWN (0x0000)
2910 #define MPI_SAS_ENCLS0_FLAGS_MNG_IOC_SES (0x0001) 2995 #define MPI_SAS_ENCLS0_FLAGS_MNG_IOC_SES (0x0001)
2911 #define MPI_SAS_ENCLS0_FLAGS_MNG_IOC_SGPIO (0x0002) 2996 #define MPI_SAS_ENCLS0_FLAGS_MNG_IOC_SGPIO (0x0002)
2912 #define MPI_SAS_ENCLS0_FLAGS_MNG_EXP_SGPIO (0x0003) 2997 #define MPI_SAS_ENCLS0_FLAGS_MNG_EXP_SGPIO (0x0003)
2913 #define MPI_SAS_ENCLS0_FLAGS_MNG_SES_ENCLOSURE (0x0004) 2998 #define MPI_SAS_ENCLS0_FLAGS_MNG_SES_ENCLOSURE (0x0004)
2914 #define MPI_SAS_ENCLS0_FLAGS_MNG_IOC_GPIO (0x0005) 2999 #define MPI_SAS_ENCLS0_FLAGS_MNG_IOC_GPIO (0x0005)
2915 3000
2916 3001
2917 /**************************************************************************** 3002 /****************************************************************************
2918 * Log Config Pages 3003 * Log Config Pages
2919 ****************************************************************************/ 3004 ****************************************************************************/
2920 /* 3005 /*
2921 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to 3006 * Host code (drivers, BIOS, utilities, etc.) should leave this define set to
2922 * one and check NumLogEntries at runtime. 3007 * one and check NumLogEntries at runtime.
2923 */ 3008 */
2924 #ifndef MPI_LOG_0_NUM_LOG_ENTRIES 3009 #ifndef MPI_LOG_0_NUM_LOG_ENTRIES
2925 #define MPI_LOG_0_NUM_LOG_ENTRIES (1) 3010 #define MPI_LOG_0_NUM_LOG_ENTRIES (1)
2926 #endif 3011 #endif
2927 3012
2928 #define MPI_LOG_0_LOG_DATA_LENGTH (0x1C) 3013 #define MPI_LOG_0_LOG_DATA_LENGTH (0x1C)
2929 3014
2930 typedef struct _MPI_LOG_0_ENTRY 3015 typedef struct _MPI_LOG_0_ENTRY
2931 { 3016 {
2932 U32 TimeStamp; /* 00h */ 3017 U32 TimeStamp; /* 00h */
2933 U32 Reserved1; /* 04h */ 3018 U32 Reserved1; /* 04h */
2934 U16 LogSequence; /* 08h */ 3019 U16 LogSequence; /* 08h */
2935 U16 LogEntryQualifier; /* 0Ah */ 3020 U16 LogEntryQualifier; /* 0Ah */
2936 U8 LogData[MPI_LOG_0_LOG_DATA_LENGTH]; /* 0Ch */ 3021 U8 LogData[MPI_LOG_0_LOG_DATA_LENGTH]; /* 0Ch */
2937 } MPI_LOG_0_ENTRY, MPI_POINTER PTR_MPI_LOG_0_ENTRY, 3022 } MPI_LOG_0_ENTRY, MPI_POINTER PTR_MPI_LOG_0_ENTRY,
2938 MpiLog0Entry_t, MPI_POINTER pMpiLog0Entry_t; 3023 MpiLog0Entry_t, MPI_POINTER pMpiLog0Entry_t;
2939 3024
2940 /* values for Log Page 0 LogEntry LogEntryQualifier field */ 3025 /* values for Log Page 0 LogEntry LogEntryQualifier field */
2941 #define MPI_LOG_0_ENTRY_QUAL_ENTRY_UNUSED (0x0000) 3026 #define MPI_LOG_0_ENTRY_QUAL_ENTRY_UNUSED (0x0000)
2942 #define MPI_LOG_0_ENTRY_QUAL_POWER_ON_RESET (0x0001) 3027 #define MPI_LOG_0_ENTRY_QUAL_POWER_ON_RESET (0x0001)
2943 3028
2944 typedef struct _CONFIG_PAGE_LOG_0 3029 typedef struct _CONFIG_PAGE_LOG_0
2945 { 3030 {
2946 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */ 3031 CONFIG_EXTENDED_PAGE_HEADER Header; /* 00h */
2947 U32 Reserved1; /* 08h */ 3032 U32 Reserved1; /* 08h */
2948 U32 Reserved2; /* 0Ch */ 3033 U32 Reserved2; /* 0Ch */
2949 U16 NumLogEntries; /* 10h */ 3034 U16 NumLogEntries; /* 10h */
2950 U16 Reserved3; /* 12h */ 3035 U16 Reserved3; /* 12h */
2951 MPI_LOG_0_ENTRY LogEntry[MPI_LOG_0_NUM_LOG_ENTRIES]; /* 14h */ 3036 MPI_LOG_0_ENTRY LogEntry[MPI_LOG_0_NUM_LOG_ENTRIES]; /* 14h */
2952 } CONFIG_PAGE_LOG_0, MPI_POINTER PTR_CONFIG_PAGE_LOG_0, 3037 } CONFIG_PAGE_LOG_0, MPI_POINTER PTR_CONFIG_PAGE_LOG_0,
2953 LogPage0_t, MPI_POINTER pLogPage0_t; 3038 LogPage0_t, MPI_POINTER pLogPage0_t;
2954 3039
2955 #define MPI_LOG_0_PAGEVERSION (0x01) 3040 #define MPI_LOG_0_PAGEVERSION (0x01)
2956 3041
2957 3042
2958 #endif 3043 #endif
2959 3044
2960 3045
drivers/message/fusion/lsi/mpi_history.txt
1 1
2 ============================== 2 ==============================
3 MPI Header File Change History 3 MPI Header File Change History
4 ============================== 4 ==============================
5 5
6 Copyright (c) 2000-2005 LSI Logic Corporation. 6 Copyright (c) 2000-2006 LSI Logic Corporation.
7 7
8 --------------------------------------- 8 ---------------------------------------
9 Header Set Release Version: 01.05.13 9 Header Set Release Version: 01.05.14
10 Header Set Release Date: 03-27-06 10 Header Set Release Date: 10-11-06
11 --------------------------------------- 11 ---------------------------------------
12 12
13 Filename Current version Prior version 13 Filename Current version Prior version
14 ---------- --------------- ------------- 14 ---------- --------------- -------------
15 mpi.h 01.05.11 01.05.10 15 mpi.h 01.05.12 01.05.11
16 mpi_ioc.h 01.05.11 01.05.10 16 mpi_ioc.h 01.05.12 01.05.11
17 mpi_cnfg.h 01.05.12 01.05.11 17 mpi_cnfg.h 01.05.13 01.05.12
18 mpi_init.h 01.05.07 01.05.06 18 mpi_init.h 01.05.08 01.05.07
19 mpi_targ.h 01.05.06 01.05.05 19 mpi_targ.h 01.05.06 01.05.06
20 mpi_fc.h 01.05.01 01.05.01 20 mpi_fc.h 01.05.01 01.05.01
21 mpi_lan.h 01.05.01 01.05.01 21 mpi_lan.h 01.05.01 01.05.01
22 mpi_raid.h 01.05.02 01.05.02 22 mpi_raid.h 01.05.02 01.05.02
23 mpi_tool.h 01.05.03 01.05.03 23 mpi_tool.h 01.05.03 01.05.03
24 mpi_inb.h 01.05.01 01.05.01 24 mpi_inb.h 01.05.01 01.05.01
25 mpi_sas.h 01.05.03 01.05.02 25 mpi_sas.h 01.05.04 01.05.03
26 mpi_type.h 01.05.02 01.05.02 26 mpi_type.h 01.05.02 01.05.02
27 mpi_history.txt 01.05.13 01.05.12 27 mpi_history.txt 01.05.14 01.05.13
28 28
29 29
30 * Date Version Description 30 * Date Version Description
31 * -------- -------- ------------------------------------------------------ 31 * -------- -------- ------------------------------------------------------
32 32
33 mpi.h 33 mpi.h
34 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000. 34 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000.
35 * 05-24-00 00.10.02 Added MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH definition. 35 * 05-24-00 00.10.02 Added MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH definition.
36 * 06-06-00 01.00.01 Update MPI_VERSION_MAJOR and MPI_VERSION_MINOR. 36 * 06-06-00 01.00.01 Update MPI_VERSION_MAJOR and MPI_VERSION_MINOR.
37 * 06-22-00 01.00.02 Added MPI_IOCSTATUS_LAN_ definitions. 37 * 06-22-00 01.00.02 Added MPI_IOCSTATUS_LAN_ definitions.
38 * Removed LAN_SUSPEND function definition. 38 * Removed LAN_SUSPEND function definition.
39 * Added MPI_MSGFLAGS_CONTINUATION_REPLY definition. 39 * Added MPI_MSGFLAGS_CONTINUATION_REPLY definition.
40 * 06-30-00 01.00.03 Added MPI_CONTEXT_REPLY_TYPE_LAN definition. 40 * 06-30-00 01.00.03 Added MPI_CONTEXT_REPLY_TYPE_LAN definition.
41 * Added MPI_GET/SET_CONTEXT_REPLY_TYPE macros. 41 * Added MPI_GET/SET_CONTEXT_REPLY_TYPE macros.
42 * 07-27-00 01.00.04 Added MPI_FAULT_ definitions. 42 * 07-27-00 01.00.04 Added MPI_FAULT_ definitions.
43 * Removed MPI_IOCSTATUS_MSG/DATA_XFER_ERROR definitions. 43 * Removed MPI_IOCSTATUS_MSG/DATA_XFER_ERROR definitions.
44 * Added MPI_IOCSTATUS_INTERNAL_ERROR definition. 44 * Added MPI_IOCSTATUS_INTERNAL_ERROR definition.
45 * Added MPI_IOCSTATUS_TARGET_XFER_COUNT_MISMATCH. 45 * Added MPI_IOCSTATUS_TARGET_XFER_COUNT_MISMATCH.
46 * 11-02-00 01.01.01 Original release for post 1.0 work 46 * 11-02-00 01.01.01 Original release for post 1.0 work
47 * 12-04-00 01.01.02 Added new function codes. 47 * 12-04-00 01.01.02 Added new function codes.
48 * 01-09-01 01.01.03 Added more definitions to the system interface section 48 * 01-09-01 01.01.03 Added more definitions to the system interface section
49 * Added MPI_IOCSTATUS_TARGET_STS_DATA_NOT_SENT. 49 * Added MPI_IOCSTATUS_TARGET_STS_DATA_NOT_SENT.
50 * 01-25-01 01.01.04 Changed MPI_VERSION_MINOR from 0x00 to 0x01. 50 * 01-25-01 01.01.04 Changed MPI_VERSION_MINOR from 0x00 to 0x01.
51 * 02-20-01 01.01.05 Started using MPI_POINTER. 51 * 02-20-01 01.01.05 Started using MPI_POINTER.
52 * Added defines for MPI_DIAG_PREVENT_IOC_BOOT and 52 * Added defines for MPI_DIAG_PREVENT_IOC_BOOT and
53 * MPI_DIAG_CLEAR_FLASH_BAD_SIG. 53 * MPI_DIAG_CLEAR_FLASH_BAD_SIG.
54 * Obsoleted MPI_IOCSTATUS_TARGET_FC_ defines. 54 * Obsoleted MPI_IOCSTATUS_TARGET_FC_ defines.
55 * 02-27-01 01.01.06 Removed MPI_HOST_INDEX_REGISTER define. 55 * 02-27-01 01.01.06 Removed MPI_HOST_INDEX_REGISTER define.
56 * Added function codes for RAID. 56 * Added function codes for RAID.
57 * 04-09-01 01.01.07 Added alternate define for MPI_DOORBELL_ACTIVE, 57 * 04-09-01 01.01.07 Added alternate define for MPI_DOORBELL_ACTIVE,
58 * MPI_DOORBELL_USED, to better match the spec. 58 * MPI_DOORBELL_USED, to better match the spec.
59 * 08-08-01 01.02.01 Original release for v1.2 work. 59 * 08-08-01 01.02.01 Original release for v1.2 work.
60 * Changed MPI_VERSION_MINOR from 0x01 to 0x02. 60 * Changed MPI_VERSION_MINOR from 0x01 to 0x02.
61 * Added define MPI_FUNCTION_TOOLBOX. 61 * Added define MPI_FUNCTION_TOOLBOX.
62 * 09-28-01 01.02.02 New function code MPI_SCSI_ENCLOSURE_PROCESSOR. 62 * 09-28-01 01.02.02 New function code MPI_SCSI_ENCLOSURE_PROCESSOR.
63 * 11-01-01 01.02.03 Changed name to MPI_FUNCTION_SCSI_ENCLOSURE_PROCESSOR. 63 * 11-01-01 01.02.03 Changed name to MPI_FUNCTION_SCSI_ENCLOSURE_PROCESSOR.
64 * 03-14-02 01.02.04 Added MPI_HEADER_VERSION_ defines. 64 * 03-14-02 01.02.04 Added MPI_HEADER_VERSION_ defines.
65 * 05-31-02 01.02.05 Bumped MPI_HEADER_VERSION_UNIT. 65 * 05-31-02 01.02.05 Bumped MPI_HEADER_VERSION_UNIT.
66 * 07-12-02 01.02.06 Added define for MPI_FUNCTION_MAILBOX. 66 * 07-12-02 01.02.06 Added define for MPI_FUNCTION_MAILBOX.
67 * 09-16-02 01.02.07 Bumped value for MPI_HEADER_VERSION_UNIT. 67 * 09-16-02 01.02.07 Bumped value for MPI_HEADER_VERSION_UNIT.
68 * 11-15-02 01.02.08 Added define MPI_IOCSTATUS_TARGET_INVALID_IO_INDEX and 68 * 11-15-02 01.02.08 Added define MPI_IOCSTATUS_TARGET_INVALID_IO_INDEX and
69 * obsoleted define MPI_IOCSTATUS_TARGET_INVALID_IOCINDEX. 69 * obsoleted define MPI_IOCSTATUS_TARGET_INVALID_IOCINDEX.
70 * 04-01-03 01.02.09 New IOCStatus code: MPI_IOCSTATUS_FC_EXCHANGE_CANCELED 70 * 04-01-03 01.02.09 New IOCStatus code: MPI_IOCSTATUS_FC_EXCHANGE_CANCELED
71 * 06-26-03 01.02.10 Bumped MPI_HEADER_VERSION_UNIT value. 71 * 06-26-03 01.02.10 Bumped MPI_HEADER_VERSION_UNIT value.
72 * 01-16-04 01.02.11 Added define for MPI_IOCLOGINFO_TYPE_SHIFT. 72 * 01-16-04 01.02.11 Added define for MPI_IOCLOGINFO_TYPE_SHIFT.
73 * 04-29-04 01.02.12 Added function codes for MPI_FUNCTION_DIAG_BUFFER_POST 73 * 04-29-04 01.02.12 Added function codes for MPI_FUNCTION_DIAG_BUFFER_POST
74 * and MPI_FUNCTION_DIAG_RELEASE. 74 * and MPI_FUNCTION_DIAG_RELEASE.
75 * Added MPI_IOCSTATUS_DIAGNOSTIC_RELEASED define. 75 * Added MPI_IOCSTATUS_DIAGNOSTIC_RELEASED define.
76 * Bumped MPI_HEADER_VERSION_UNIT value. 76 * Bumped MPI_HEADER_VERSION_UNIT value.
77 * 05-11-04 01.03.01 Bumped MPI_VERSION_MINOR for MPI v1.3. 77 * 05-11-04 01.03.01 Bumped MPI_VERSION_MINOR for MPI v1.3.
78 * Added codes for Inband. 78 * Added codes for Inband.
79 * 08-19-04 01.05.01 Added defines for Host Buffer Access Control doorbell. 79 * 08-19-04 01.05.01 Added defines for Host Buffer Access Control doorbell.
80 * Added define for offset of High Priority Request Queue. 80 * Added define for offset of High Priority Request Queue.
81 * Added new function codes and new IOCStatus codes. 81 * Added new function codes and new IOCStatus codes.
82 * Added a IOCLogInfo type of SAS. 82 * Added a IOCLogInfo type of SAS.
83 * 12-07-04 01.05.02 Bumped MPI_HEADER_VERSION_UNIT. 83 * 12-07-04 01.05.02 Bumped MPI_HEADER_VERSION_UNIT.
84 * 12-09-04 01.05.03 Bumped MPI_HEADER_VERSION_UNIT. 84 * 12-09-04 01.05.03 Bumped MPI_HEADER_VERSION_UNIT.
85 * 01-15-05 01.05.04 Bumped MPI_HEADER_VERSION_UNIT. 85 * 01-15-05 01.05.04 Bumped MPI_HEADER_VERSION_UNIT.
86 * 02-09-05 01.05.05 Bumped MPI_HEADER_VERSION_UNIT. 86 * 02-09-05 01.05.05 Bumped MPI_HEADER_VERSION_UNIT.
87 * 02-22-05 01.05.06 Bumped MPI_HEADER_VERSION_UNIT. 87 * 02-22-05 01.05.06 Bumped MPI_HEADER_VERSION_UNIT.
88 * 03-11-05 01.05.07 Removed function codes for SCSI IO 32 and 88 * 03-11-05 01.05.07 Removed function codes for SCSI IO 32 and
89 * TargetAssistExtended requests. 89 * TargetAssistExtended requests.
90 * Removed EEDP IOCStatus codes. 90 * Removed EEDP IOCStatus codes.
91 * 06-24-05 01.05.08 Added function codes for SCSI IO 32 and 91 * 06-24-05 01.05.08 Added function codes for SCSI IO 32 and
92 * TargetAssistExtended requests. 92 * TargetAssistExtended requests.
93 * Added EEDP IOCStatus codes. 93 * Added EEDP IOCStatus codes.
94 * 08-03-05 01.05.09 Bumped MPI_HEADER_VERSION_UNIT. 94 * 08-03-05 01.05.09 Bumped MPI_HEADER_VERSION_UNIT.
95 * 08-30-05 01.05.10 Added 2 new IOCStatus codes for Target. 95 * 08-30-05 01.05.10 Added 2 new IOCStatus codes for Target.
96 * 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT. 96 * 03-27-06 01.05.11 Bumped MPI_HEADER_VERSION_UNIT.
97 * 10-11-06 01.05.12 Bumped MPI_HEADER_VERSION_UNIT.
97 * -------------------------------------------------------------------------- 98 * --------------------------------------------------------------------------
98 99
99 mpi_ioc.h 100 mpi_ioc.h
100 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000. 101 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000.
101 * 05-24-00 00.10.02 Added _MSG_IOC_INIT_REPLY structure. 102 * 05-24-00 00.10.02 Added _MSG_IOC_INIT_REPLY structure.
102 * 06-06-00 01.00.01 Added CurReplyFrameSize field to _MSG_IOC_FACTS_REPLY. 103 * 06-06-00 01.00.01 Added CurReplyFrameSize field to _MSG_IOC_FACTS_REPLY.
103 * 06-12-00 01.00.02 Added _MSG_PORT_ENABLE_REPLY structure. 104 * 06-12-00 01.00.02 Added _MSG_PORT_ENABLE_REPLY structure.
104 * Added _MSG_EVENT_ACK_REPLY structure. 105 * Added _MSG_EVENT_ACK_REPLY structure.
105 * Added _MSG_FW_DOWNLOAD_REPLY structure. 106 * Added _MSG_FW_DOWNLOAD_REPLY structure.
106 * Added _MSG_TOOLBOX_REPLY structure. 107 * Added _MSG_TOOLBOX_REPLY structure.
107 * 06-30-00 01.00.03 Added MaxLanBuckets to _PORT_FACT_REPLY structure. 108 * 06-30-00 01.00.03 Added MaxLanBuckets to _PORT_FACT_REPLY structure.
108 * 07-27-00 01.00.04 Added _EVENT_DATA structure definitions for _SCSI, 109 * 07-27-00 01.00.04 Added _EVENT_DATA structure definitions for _SCSI,
109 * _LINK_STATUS, _LOOP_STATE and _LOGOUT. 110 * _LINK_STATUS, _LOOP_STATE and _LOGOUT.
110 * 08-11-00 01.00.05 Switched positions of MsgLength and Function fields in 111 * 08-11-00 01.00.05 Switched positions of MsgLength and Function fields in
111 * _MSG_EVENT_ACK_REPLY structure to match specification. 112 * _MSG_EVENT_ACK_REPLY structure to match specification.
112 * 11-02-00 01.01.01 Original release for post 1.0 work 113 * 11-02-00 01.01.01 Original release for post 1.0 work
113 * Added a value for Manufacturer to WhoInit 114 * Added a value for Manufacturer to WhoInit
114 * 12-04-00 01.01.02 Modified IOCFacts reply, added FWUpload messages, and 115 * 12-04-00 01.01.02 Modified IOCFacts reply, added FWUpload messages, and
115 * removed toolbox message. 116 * removed toolbox message.
116 * 01-09-01 01.01.03 Added event enabled and disabled defines. 117 * 01-09-01 01.01.03 Added event enabled and disabled defines.
117 * Added structures for FwHeader and DataHeader. 118 * Added structures for FwHeader and DataHeader.
118 * Added ImageType to FwUpload reply. 119 * Added ImageType to FwUpload reply.
119 * 02-20-01 01.01.04 Started using MPI_POINTER. 120 * 02-20-01 01.01.04 Started using MPI_POINTER.
120 * 02-27-01 01.01.05 Added event for RAID status change and its event data. 121 * 02-27-01 01.01.05 Added event for RAID status change and its event data.
121 * Added IocNumber field to MSG_IOC_FACTS_REPLY. 122 * Added IocNumber field to MSG_IOC_FACTS_REPLY.
122 * 03-27-01 01.01.06 Added defines for ProductId field of MPI_FW_HEADER. 123 * 03-27-01 01.01.06 Added defines for ProductId field of MPI_FW_HEADER.
123 * Added structure offset comments. 124 * Added structure offset comments.
124 * 04-09-01 01.01.07 Added structure EVENT_DATA_EVENT_CHANGE. 125 * 04-09-01 01.01.07 Added structure EVENT_DATA_EVENT_CHANGE.
125 * 08-08-01 01.02.01 Original release for v1.2 work. 126 * 08-08-01 01.02.01 Original release for v1.2 work.
126 * New format for FWVersion and ProductId in 127 * New format for FWVersion and ProductId in
127 * MSG_IOC_FACTS_REPLY and MPI_FW_HEADER. 128 * MSG_IOC_FACTS_REPLY and MPI_FW_HEADER.
128 * 08-31-01 01.02.02 Addded event MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE and 129 * 08-31-01 01.02.02 Addded event MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE and
129 * related structure and defines. 130 * related structure and defines.
130 * Added event MPI_EVENT_ON_BUS_TIMER_EXPIRED. 131 * Added event MPI_EVENT_ON_BUS_TIMER_EXPIRED.
131 * Added MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE. 132 * Added MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE.
132 * Replaced a reserved field in MSG_IOC_FACTS_REPLY with 133 * Replaced a reserved field in MSG_IOC_FACTS_REPLY with
133 * IOCExceptions and changed DataImageSize to reserved. 134 * IOCExceptions and changed DataImageSize to reserved.
134 * Added MPI_FW_DOWNLOAD_ITYPE_NVSTORE_DATA and 135 * Added MPI_FW_DOWNLOAD_ITYPE_NVSTORE_DATA and
135 * MPI_FW_UPLOAD_ITYPE_NVDATA. 136 * MPI_FW_UPLOAD_ITYPE_NVDATA.
136 * 09-28-01 01.02.03 Modified Event Data for Integrated RAID. 137 * 09-28-01 01.02.03 Modified Event Data for Integrated RAID.
137 * 11-01-01 01.02.04 Added defines for MPI_EXT_IMAGE_HEADER ImageType field. 138 * 11-01-01 01.02.04 Added defines for MPI_EXT_IMAGE_HEADER ImageType field.
138 * 03-14-02 01.02.05 Added HeaderVersion field to MSG_IOC_FACTS_REPLY. 139 * 03-14-02 01.02.05 Added HeaderVersion field to MSG_IOC_FACTS_REPLY.
139 * 05-31-02 01.02.06 Added define for 140 * 05-31-02 01.02.06 Added define for
140 * MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID. 141 * MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID.
141 * Added AliasIndex to EVENT_DATA_LOGOUT structure. 142 * Added AliasIndex to EVENT_DATA_LOGOUT structure.
142 * 04-01-03 01.02.07 Added defines for MPI_FW_HEADER_SIGNATURE_. 143 * 04-01-03 01.02.07 Added defines for MPI_FW_HEADER_SIGNATURE_.
143 * 06-26-03 01.02.08 Added new values to the product family defines. 144 * 06-26-03 01.02.08 Added new values to the product family defines.
144 * 04-29-04 01.02.09 Added IOCCapabilities field to MSG_IOC_FACTS_REPLY and 145 * 04-29-04 01.02.09 Added IOCCapabilities field to MSG_IOC_FACTS_REPLY and
145 * added related defines. 146 * added related defines.
146 * 05-11-04 01.03.01 Original release for MPI v1.3. 147 * 05-11-04 01.03.01 Original release for MPI v1.3.
147 * 08-19-04 01.05.01 Added four new fields to MSG_IOC_INIT. 148 * 08-19-04 01.05.01 Added four new fields to MSG_IOC_INIT.
148 * Added three new fields to MSG_IOC_FACTS_REPLY. 149 * Added three new fields to MSG_IOC_FACTS_REPLY.
149 * Defined four new bits for the IOCCapabilities field of 150 * Defined four new bits for the IOCCapabilities field of
150 * the IOCFacts reply. 151 * the IOCFacts reply.
151 * Added two new PortTypes for the PortFacts reply. 152 * Added two new PortTypes for the PortFacts reply.
152 * Added six new events along with their EventData 153 * Added six new events along with their EventData
153 * structures. 154 * structures.
154 * Added a new MsgFlag to the FwDownload request to 155 * Added a new MsgFlag to the FwDownload request to
155 * indicate last segment. 156 * indicate last segment.
156 * Defined a new image type of boot loader. 157 * Defined a new image type of boot loader.
157 * Added FW family codes for SAS product families. 158 * Added FW family codes for SAS product families.
158 * 10-05-04 01.05.02 Added ReplyFifoHostSignalingAddr field to 159 * 10-05-04 01.05.02 Added ReplyFifoHostSignalingAddr field to
159 * MSG_IOC_FACTS_REPLY. 160 * MSG_IOC_FACTS_REPLY.
160 * 12-07-04 01.05.03 Added more defines for SAS Discovery Error event. 161 * 12-07-04 01.05.03 Added more defines for SAS Discovery Error event.
161 * 12-09-04 01.05.04 Added Unsupported device to SAS Device event. 162 * 12-09-04 01.05.04 Added Unsupported device to SAS Device event.
162 * 01-15-05 01.05.05 Added event data for SAS SES Event. 163 * 01-15-05 01.05.05 Added event data for SAS SES Event.
163 * 02-09-05 01.05.06 Added MPI_FW_UPLOAD_ITYPE_FW_BACKUP define. 164 * 02-09-05 01.05.06 Added MPI_FW_UPLOAD_ITYPE_FW_BACKUP define.
164 * 02-22-05 01.05.07 Added Host Page Buffer Persistent flag to IOC Facts 165 * 02-22-05 01.05.07 Added Host Page Buffer Persistent flag to IOC Facts
165 * Reply and IOC Init Request. 166 * Reply and IOC Init Request.
166 * 03-11-05 01.05.08 Added family code for 1068E family. 167 * 03-11-05 01.05.08 Added family code for 1068E family.
167 * Removed IOCFacts Reply EEDP Capability bit. 168 * Removed IOCFacts Reply EEDP Capability bit.
168 * 06-24-05 01.05.09 Added 5 new IOCFacts Reply IOCCapabilities bits. 169 * 06-24-05 01.05.09 Added 5 new IOCFacts Reply IOCCapabilities bits.
169 * Added Max SATA Targets to SAS Discovery Error event. 170 * Added Max SATA Targets to SAS Discovery Error event.
170 * 08-30-05 01.05.10 Added 4 new events and their event data structures. 171 * 08-30-05 01.05.10 Added 4 new events and their event data structures.
171 * Added new ReasonCode value for SAS Device Status Change 172 * Added new ReasonCode value for SAS Device Status Change
172 * event. 173 * event.
173 * Added new family code for FC949E. 174 * Added new family code for FC949E.
174 * 03-27-06 01.05.11 Added MPI_IOCFACTS_CAPABILITY_TLR. 175 * 03-27-06 01.05.11 Added MPI_IOCFACTS_CAPABILITY_TLR.
175 * Added additional Reason Codes and more event data fields 176 * Added additional Reason Codes and more event data fields
176 * to EVENT_DATA_SAS_DEVICE_STATUS_CHANGE. 177 * to EVENT_DATA_SAS_DEVICE_STATUS_CHANGE.
177 * Added EVENT_DATA_SAS_BROADCAST_PRIMITIVE structure and 178 * Added EVENT_DATA_SAS_BROADCAST_PRIMITIVE structure and
178 * new event. 179 * new event.
179 * Added MPI_EVENT_SAS_SMP_ERROR and event data structure. 180 * Added MPI_EVENT_SAS_SMP_ERROR and event data structure.
180 * Added MPI_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE and event 181 * Added MPI_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE and event
181 * data structure. 182 * data structure.
182 * Added MPI_EVENT_SAS_INIT_TABLE_OVERFLOW and event 183 * Added MPI_EVENT_SAS_INIT_TABLE_OVERFLOW and event
183 * data structure. 184 * data structure.
184 * Added MPI_EXT_IMAGE_TYPE_INITIALIZATION. 185 * Added MPI_EXT_IMAGE_TYPE_INITIALIZATION.
186 * 10-11-06 01.05.12 Added MPI_IOCFACTS_EXCEPT_METADATA_UNSUPPORTED.
187 * Added MaxInitiators field to PortFacts reply.
188 * Added SAS Device Status Change ReasonCode for
189 * asynchronous notificaiton.
190 * Added MPI_EVENT_SAS_EXPANDER_STATUS_CHANGE and event
191 * data structure.
192 * Added new ImageType values for FWDownload and FWUpload
193 * requests.
185 * -------------------------------------------------------------------------- 194 * --------------------------------------------------------------------------
186 195
187 mpi_cnfg.h 196 mpi_cnfg.h
188 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000. 197 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000.
189 * 06-06-00 01.00.01 Update version number for 1.0 release. 198 * 06-06-00 01.00.01 Update version number for 1.0 release.
190 * 06-08-00 01.00.02 Added _PAGEVERSION definitions for all pages. 199 * 06-08-00 01.00.02 Added _PAGEVERSION definitions for all pages.
191 * Added FcPhLowestVersion, FcPhHighestVersion, Reserved2 200 * Added FcPhLowestVersion, FcPhHighestVersion, Reserved2
192 * fields to FC_DEVICE_0 page, updated the page version. 201 * fields to FC_DEVICE_0 page, updated the page version.
193 * Changed _FREE_RUNNING_CLOCK to _PACING_TRANSFERS in 202 * Changed _FREE_RUNNING_CLOCK to _PACING_TRANSFERS in
194 * SCSI_PORT_0, SCSI_DEVICE_0 and SCSI_DEVICE_1 pages 203 * SCSI_PORT_0, SCSI_DEVICE_0 and SCSI_DEVICE_1 pages
195 * and updated the page versions. 204 * and updated the page versions.
196 * Added _RESPONSE_ID_MASK definition to SCSI_PORT_1 205 * Added _RESPONSE_ID_MASK definition to SCSI_PORT_1
197 * page and updated the page version. 206 * page and updated the page version.
198 * Added Information field and _INFO_PARAMS_NEGOTIATED 207 * Added Information field and _INFO_PARAMS_NEGOTIATED
199 * definitionto SCSI_DEVICE_0 page. 208 * definitionto SCSI_DEVICE_0 page.
200 * 06-22-00 01.00.03 Removed batch controls from LAN_0 page and updated the 209 * 06-22-00 01.00.03 Removed batch controls from LAN_0 page and updated the
201 * page version. 210 * page version.
202 * Added BucketsRemaining to LAN_1 page, redefined the 211 * Added BucketsRemaining to LAN_1 page, redefined the
203 * state values, and updated the page version. 212 * state values, and updated the page version.
204 * Revised bus width definitions in SCSI_PORT_0, 213 * Revised bus width definitions in SCSI_PORT_0,
205 * SCSI_DEVICE_0 and SCSI_DEVICE_1 pages. 214 * SCSI_DEVICE_0 and SCSI_DEVICE_1 pages.
206 * 06-30-00 01.00.04 Added MaxReplySize to LAN_1 page and updated the page 215 * 06-30-00 01.00.04 Added MaxReplySize to LAN_1 page and updated the page
207 * version. 216 * version.
208 * Moved FC_DEVICE_0 PageAddress description to spec. 217 * Moved FC_DEVICE_0 PageAddress description to spec.
209 * 07-27-00 01.00.05 Corrected the SubsystemVendorID and SubsystemID field 218 * 07-27-00 01.00.05 Corrected the SubsystemVendorID and SubsystemID field
210 * widths in IOC_0 page and updated the page version. 219 * widths in IOC_0 page and updated the page version.
211 * 11-02-00 01.01.01 Original release for post 1.0 work 220 * 11-02-00 01.01.01 Original release for post 1.0 work
212 * Added Manufacturing pages, IO Unit Page 2, SCSI SPI 221 * Added Manufacturing pages, IO Unit Page 2, SCSI SPI
213 * Port Page 2, FC Port Page 4, FC Port Page 5 222 * Port Page 2, FC Port Page 4, FC Port Page 5
214 * 12-04-00 01.01.03 Config page changes to match MPI rev 1.00.01. 223 * 12-04-00 01.01.03 Config page changes to match MPI rev 1.00.01.
215 * 12-05-00 01.01.04 Modified config page actions. 224 * 12-05-00 01.01.04 Modified config page actions.
216 * 01-09-01 01.01.05 Added defines for page address formats. 225 * 01-09-01 01.01.05 Added defines for page address formats.
217 * Data size for Manufacturing pages 2 and 3 no longer 226 * Data size for Manufacturing pages 2 and 3 no longer
218 * defined here. 227 * defined here.
219 * Io Unit Page 2 size is fixed at 4 adapters and some 228 * Io Unit Page 2 size is fixed at 4 adapters and some
220 * flags were changed. 229 * flags were changed.
221 * SCSI Port Page 2 Device Settings modified. 230 * SCSI Port Page 2 Device Settings modified.
222 * New fields added to FC Port Page 0 and some flags 231 * New fields added to FC Port Page 0 and some flags
223 * cleaned up. 232 * cleaned up.
224 * Removed impedance flash from FC Port Page 1. 233 * Removed impedance flash from FC Port Page 1.
225 * Added FC Port pages 6 and 7. 234 * Added FC Port pages 6 and 7.
226 * 01-25-01 01.01.06 Added MaxInitiators field to FcPortPage0. 235 * 01-25-01 01.01.06 Added MaxInitiators field to FcPortPage0.
227 * 01-29-01 01.01.07 Changed some defines to make them 32 character unique. 236 * 01-29-01 01.01.07 Changed some defines to make them 32 character unique.
228 * Added some LinkType defines for FcPortPage0. 237 * Added some LinkType defines for FcPortPage0.
229 * 02-20-01 01.01.08 Started using MPI_POINTER. 238 * 02-20-01 01.01.08 Started using MPI_POINTER.
230 * 02-27-01 01.01.09 Replaced MPI_CONFIG_PAGETYPE_SCSI_LUN with 239 * 02-27-01 01.01.09 Replaced MPI_CONFIG_PAGETYPE_SCSI_LUN with
231 * MPI_CONFIG_PAGETYPE_RAID_VOLUME. 240 * MPI_CONFIG_PAGETYPE_RAID_VOLUME.
232 * Added definitions and structures for IOC Page 2 and 241 * Added definitions and structures for IOC Page 2 and
233 * RAID Volume Page 2. 242 * RAID Volume Page 2.
234 * 03-27-01 01.01.10 Added CONFIG_PAGE_FC_PORT_8 and CONFIG_PAGE_FC_PORT_9. 243 * 03-27-01 01.01.10 Added CONFIG_PAGE_FC_PORT_8 and CONFIG_PAGE_FC_PORT_9.
235 * CONFIG_PAGE_FC_PORT_3 now supports persistent by DID. 244 * CONFIG_PAGE_FC_PORT_3 now supports persistent by DID.
236 * Added VendorId and ProductRevLevel fields to 245 * Added VendorId and ProductRevLevel fields to
237 * RAIDVOL2_IM_PHYS_ID struct. 246 * RAIDVOL2_IM_PHYS_ID struct.
238 * Modified values for MPI_FCPORTPAGE0_FLAGS_ATTACH_ 247 * Modified values for MPI_FCPORTPAGE0_FLAGS_ATTACH_
239 * defines to make them compatible to MPI version 1.0. 248 * defines to make them compatible to MPI version 1.0.
240 * Added structure offset comments. 249 * Added structure offset comments.
241 * 04-09-01 01.01.11 Added some new defines for the PageAddress field and 250 * 04-09-01 01.01.11 Added some new defines for the PageAddress field and
242 * removed some obsolete ones. 251 * removed some obsolete ones.
243 * Added IO Unit Page 3. 252 * Added IO Unit Page 3.
244 * Modified defines for Scsi Port Page 2. 253 * Modified defines for Scsi Port Page 2.
245 * Modified RAID Volume Pages. 254 * Modified RAID Volume Pages.
246 * 08-08-01 01.02.01 Original release for v1.2 work. 255 * 08-08-01 01.02.01 Original release for v1.2 work.
247 * Added SepID and SepBus to RVP2 IMPhysicalDisk struct. 256 * Added SepID and SepBus to RVP2 IMPhysicalDisk struct.
248 * Added defines for the SEP bits in RVP2 VolumeSettings. 257 * Added defines for the SEP bits in RVP2 VolumeSettings.
249 * Modified the DeviceSettings field in RVP2 to use the 258 * Modified the DeviceSettings field in RVP2 to use the
250 * proper structure. 259 * proper structure.
251 * Added defines for SES, SAF-TE, and cross channel for 260 * Added defines for SES, SAF-TE, and cross channel for
252 * IOCPage2 CapabilitiesFlags. 261 * IOCPage2 CapabilitiesFlags.
253 * Removed define for MPI_IOUNITPAGE2_FLAGS_RAID_DISABLE. 262 * Removed define for MPI_IOUNITPAGE2_FLAGS_RAID_DISABLE.
254 * Removed define for 263 * Removed define for
255 * MPI_SCSIPORTPAGE2_PORT_FLAGS_PARITY_ENABLE. 264 * MPI_SCSIPORTPAGE2_PORT_FLAGS_PARITY_ENABLE.
256 * Added define for MPI_CONFIG_PAGEATTR_RO_PERSISTENT. 265 * Added define for MPI_CONFIG_PAGEATTR_RO_PERSISTENT.
257 * 08-29-01 01.02.02 Fixed value for MPI_MANUFACTPAGE_DEVID_53C1035. 266 * 08-29-01 01.02.02 Fixed value for MPI_MANUFACTPAGE_DEVID_53C1035.
258 * Added defines for MPI_FCPORTPAGE1_FLAGS_HARD_ALPA_ONLY 267 * Added defines for MPI_FCPORTPAGE1_FLAGS_HARD_ALPA_ONLY
259 * and MPI_FCPORTPAGE1_FLAGS_IMMEDIATE_ERROR_REPLY. 268 * and MPI_FCPORTPAGE1_FLAGS_IMMEDIATE_ERROR_REPLY.
260 * Removed MPI_SCSIPORTPAGE0_CAP_PACING_TRANSFERS, 269 * Removed MPI_SCSIPORTPAGE0_CAP_PACING_TRANSFERS,
261 * MPI_SCSIDEVPAGE0_NP_PACING_TRANSFERS, and 270 * MPI_SCSIDEVPAGE0_NP_PACING_TRANSFERS, and
262 * MPI_SCSIDEVPAGE1_RP_PACING_TRANSFERS, and 271 * MPI_SCSIDEVPAGE1_RP_PACING_TRANSFERS, and
263 * MPI_SCSIDEVPAGE1_CONF_PPR_ALLOWED. 272 * MPI_SCSIDEVPAGE1_CONF_PPR_ALLOWED.
264 * Added defines for MPI_SCSIDEVPAGE1_CONF_WDTR_DISALLOWED 273 * Added defines for MPI_SCSIDEVPAGE1_CONF_WDTR_DISALLOWED
265 * and MPI_SCSIDEVPAGE1_CONF_SDTR_DISALLOWED. 274 * and MPI_SCSIDEVPAGE1_CONF_SDTR_DISALLOWED.
266 * Added OnBusTimerValue to CONFIG_PAGE_SCSI_PORT_1. 275 * Added OnBusTimerValue to CONFIG_PAGE_SCSI_PORT_1.
267 * Added rejected bits to SCSI Device Page 0 Information. 276 * Added rejected bits to SCSI Device Page 0 Information.
268 * Increased size of ALPA array in FC Port Page 2 by one 277 * Increased size of ALPA array in FC Port Page 2 by one
269 * and removed a one byte reserved field. 278 * and removed a one byte reserved field.
270 * 09-28-01 01.02.03 Swapped NegWireSpeedLow and NegWireSpeedLow in 279 * 09-28-01 01.02.03 Swapped NegWireSpeedLow and NegWireSpeedLow in
271 * CONFIG_PAGE_LAN_1 to match preferred 64-bit ordering. 280 * CONFIG_PAGE_LAN_1 to match preferred 64-bit ordering.
272 * Added structures for Manufacturing Page 4, IO Unit 281 * Added structures for Manufacturing Page 4, IO Unit
273 * Page 3, IOC Page 3, IOC Page 4, RAID Volume Page 0, and 282 * Page 3, IOC Page 3, IOC Page 4, RAID Volume Page 0, and
274 * RAID PhysDisk Page 0. 283 * RAID PhysDisk Page 0.
275 * 10-04-01 01.02.04 Added define for MPI_CONFIG_PAGETYPE_RAID_PHYSDISK. 284 * 10-04-01 01.02.04 Added define for MPI_CONFIG_PAGETYPE_RAID_PHYSDISK.
276 * Modified some of the new defines to make them 32 285 * Modified some of the new defines to make them 32
277 * character unique. 286 * character unique.
278 * Modified how variable length pages (arrays) are defined. 287 * Modified how variable length pages (arrays) are defined.
279 * Added generic defines for hot spare pools and RAID 288 * Added generic defines for hot spare pools and RAID
280 * volume types. 289 * volume types.
281 * 11-01-01 01.02.05 Added define for MPI_IOUNITPAGE1_DISABLE_IR. 290 * 11-01-01 01.02.05 Added define for MPI_IOUNITPAGE1_DISABLE_IR.
282 * 03-14-02 01.02.06 Added PCISlotNum field to CONFIG_PAGE_IOC_1 along with 291 * 03-14-02 01.02.06 Added PCISlotNum field to CONFIG_PAGE_IOC_1 along with
283 * related define, and bumped the page version define. 292 * related define, and bumped the page version define.
284 * 05-31-02 01.02.07 Added a Flags field to CONFIG_PAGE_IOC_2_RAID_VOL in a 293 * 05-31-02 01.02.07 Added a Flags field to CONFIG_PAGE_IOC_2_RAID_VOL in a
285 * reserved byte and added a define. 294 * reserved byte and added a define.
286 * Added define for 295 * Added define for
287 * MPI_RAIDVOL0_STATUS_FLAG_VOLUME_INACTIVE. 296 * MPI_RAIDVOL0_STATUS_FLAG_VOLUME_INACTIVE.
288 * Added new config page: CONFIG_PAGE_IOC_5. 297 * Added new config page: CONFIG_PAGE_IOC_5.
289 * Added MaxAliases, MaxHardAliases, and NumCurrentAliases 298 * Added MaxAliases, MaxHardAliases, and NumCurrentAliases
290 * fields to CONFIG_PAGE_FC_PORT_0. 299 * fields to CONFIG_PAGE_FC_PORT_0.
291 * Added AltConnector and NumRequestedAliases fields to 300 * Added AltConnector and NumRequestedAliases fields to
292 * CONFIG_PAGE_FC_PORT_1. 301 * CONFIG_PAGE_FC_PORT_1.
293 * Added new config page: CONFIG_PAGE_FC_PORT_10. 302 * Added new config page: CONFIG_PAGE_FC_PORT_10.
294 * 07-12-02 01.02.08 Added more MPI_MANUFACTPAGE_DEVID_ defines. 303 * 07-12-02 01.02.08 Added more MPI_MANUFACTPAGE_DEVID_ defines.
295 * Added additional MPI_SCSIDEVPAGE0_NP_ defines. 304 * Added additional MPI_SCSIDEVPAGE0_NP_ defines.
296 * Added more MPI_SCSIDEVPAGE1_RP_ defines. 305 * Added more MPI_SCSIDEVPAGE1_RP_ defines.
297 * Added define for 306 * Added define for
298 * MPI_SCSIDEVPAGE1_CONF_EXTENDED_PARAMS_ENABLE. 307 * MPI_SCSIDEVPAGE1_CONF_EXTENDED_PARAMS_ENABLE.
299 * Added new config page: CONFIG_PAGE_SCSI_DEVICE_3. 308 * Added new config page: CONFIG_PAGE_SCSI_DEVICE_3.
300 * Modified MPI_FCPORTPAGE5_FLAGS_ defines. 309 * Modified MPI_FCPORTPAGE5_FLAGS_ defines.
301 * 09-16-02 01.02.09 Added MPI_SCSIDEVPAGE1_CONF_FORCE_PPR_MSG define. 310 * 09-16-02 01.02.09 Added MPI_SCSIDEVPAGE1_CONF_FORCE_PPR_MSG define.
302 * 11-15-02 01.02.10 Added ConnectedID defines for CONFIG_PAGE_SCSI_PORT_0. 311 * 11-15-02 01.02.10 Added ConnectedID defines for CONFIG_PAGE_SCSI_PORT_0.
303 * Added more Flags defines for CONFIG_PAGE_FC_PORT_1. 312 * Added more Flags defines for CONFIG_PAGE_FC_PORT_1.
304 * Added more Flags defines for CONFIG_PAGE_FC_DEVICE_0. 313 * Added more Flags defines for CONFIG_PAGE_FC_DEVICE_0.
305 * 04-01-03 01.02.11 Added RR_TOV field and additional Flags defines for 314 * 04-01-03 01.02.11 Added RR_TOV field and additional Flags defines for
306 * CONFIG_PAGE_FC_PORT_1. 315 * CONFIG_PAGE_FC_PORT_1.
307 * Added define MPI_FCPORTPAGE5_FLAGS_DISABLE to disable 316 * Added define MPI_FCPORTPAGE5_FLAGS_DISABLE to disable
308 * an alias. 317 * an alias.
309 * Added more device id defines. 318 * Added more device id defines.
310 * 06-26-03 01.02.12 Added MPI_IOUNITPAGE1_IR_USE_STATIC_VOLUME_ID define. 319 * 06-26-03 01.02.12 Added MPI_IOUNITPAGE1_IR_USE_STATIC_VOLUME_ID define.
311 * Added TargetConfig and IDConfig fields to 320 * Added TargetConfig and IDConfig fields to
312 * CONFIG_PAGE_SCSI_PORT_1. 321 * CONFIG_PAGE_SCSI_PORT_1.
313 * Added more PortFlags defines for CONFIG_PAGE_SCSI_PORT_2 322 * Added more PortFlags defines for CONFIG_PAGE_SCSI_PORT_2
314 * to control DV. 323 * to control DV.
315 * Added more Flags defines for CONFIG_PAGE_FC_PORT_1. 324 * Added more Flags defines for CONFIG_PAGE_FC_PORT_1.
316 * In CONFIG_PAGE_FC_DEVICE_0, replaced Reserved1 field 325 * In CONFIG_PAGE_FC_DEVICE_0, replaced Reserved1 field
317 * with ADISCHardALPA. 326 * with ADISCHardALPA.
318 * Added MPI_FC_DEVICE_PAGE0_PROT_FCP_RETRY define. 327 * Added MPI_FC_DEVICE_PAGE0_PROT_FCP_RETRY define.
319 * 01-16-04 01.02.13 Added InitiatorDeviceTimeout and InitiatorIoPendTimeout 328 * 01-16-04 01.02.13 Added InitiatorDeviceTimeout and InitiatorIoPendTimeout
320 * fields and related defines to CONFIG_PAGE_FC_PORT_1. 329 * fields and related defines to CONFIG_PAGE_FC_PORT_1.
321 * Added define for 330 * Added define for
322 * MPI_FCPORTPAGE1_FLAGS_SOFT_ALPA_FALLBACK. 331 * MPI_FCPORTPAGE1_FLAGS_SOFT_ALPA_FALLBACK.
323 * Added new fields to the substructures of 332 * Added new fields to the substructures of
324 * CONFIG_PAGE_FC_PORT_10. 333 * CONFIG_PAGE_FC_PORT_10.
325 * 04-29-04 01.02.14 Added define for IDP bit for CONFIG_PAGE_SCSI_PORT_0, 334 * 04-29-04 01.02.14 Added define for IDP bit for CONFIG_PAGE_SCSI_PORT_0,
326 * CONFIG_PAGE_SCSI_DEVICE_0, and 335 * CONFIG_PAGE_SCSI_DEVICE_0, and
327 * CONFIG_PAGE_SCSI_DEVICE_1. Also bumped Page Version for 336 * CONFIG_PAGE_SCSI_DEVICE_1. Also bumped Page Version for
328 * these pages. 337 * these pages.
329 * 05-11-04 01.03.01 Added structure for CONFIG_PAGE_INBAND_0. 338 * 05-11-04 01.03.01 Added structure for CONFIG_PAGE_INBAND_0.
330 * 08-19-04 01.05.01 Modified MSG_CONFIG request to support extended config 339 * 08-19-04 01.05.01 Modified MSG_CONFIG request to support extended config
331 * pages. 340 * pages.
332 * Added a new structure for extended config page header. 341 * Added a new structure for extended config page header.
333 * Added new extended config pages types and structures for 342 * Added new extended config pages types and structures for
334 * SAS IO Unit, SAS Expander, SAS Device, and SAS PHY. 343 * SAS IO Unit, SAS Expander, SAS Device, and SAS PHY.
335 * Replaced a reserved byte in CONFIG_PAGE_MANUFACTURING_4 344 * Replaced a reserved byte in CONFIG_PAGE_MANUFACTURING_4
336 * to add a Flags field. 345 * to add a Flags field.
337 * Two new Manufacturing config pages (5 and 6). 346 * Two new Manufacturing config pages (5 and 6).
338 * Two new bits defined for IO Unit Page 1 Flags field. 347 * Two new bits defined for IO Unit Page 1 Flags field.
339 * Modified CONFIG_PAGE_IO_UNIT_2 to add three new fields 348 * Modified CONFIG_PAGE_IO_UNIT_2 to add three new fields
340 * to specify the BIOS boot device. 349 * to specify the BIOS boot device.
341 * Four new Flags bits defined for IO Unit Page 2. 350 * Four new Flags bits defined for IO Unit Page 2.
342 * Added IO Unit Page 4. 351 * Added IO Unit Page 4.
343 * Added EEDP Flags settings to IOC Page 1. 352 * Added EEDP Flags settings to IOC Page 1.
344 * Added new BIOS Page 1 config page. 353 * Added new BIOS Page 1 config page.
345 * 10-05-04 01.05.02 Added define for 354 * 10-05-04 01.05.02 Added define for
346 * MPI_IOCPAGE1_INITIATOR_CONTEXT_REPLY_DISABLE. 355 * MPI_IOCPAGE1_INITIATOR_CONTEXT_REPLY_DISABLE.
347 * Added new Flags field to CONFIG_PAGE_MANUFACTURING_5 and 356 * Added new Flags field to CONFIG_PAGE_MANUFACTURING_5 and
348 * associated defines. 357 * associated defines.
349 * Added more defines for SAS IO Unit Page 0 358 * Added more defines for SAS IO Unit Page 0
350 * DiscoveryStatus field. 359 * DiscoveryStatus field.
351 * Added define for MPI_SAS_IOUNIT0_DS_SUBTRACTIVE_LINK 360 * Added define for MPI_SAS_IOUNIT0_DS_SUBTRACTIVE_LINK
352 * and MPI_SAS_IOUNIT0_DS_TABLE_LINK. 361 * and MPI_SAS_IOUNIT0_DS_TABLE_LINK.
353 * Added defines for Physical Mapping Modes to SAS IO Unit 362 * Added defines for Physical Mapping Modes to SAS IO Unit
354 * Page 2. 363 * Page 2.
355 * Added define for 364 * Added define for
356 * MPI_SAS_DEVICE0_FLAGS_PORT_SELECTOR_ATTACH. 365 * MPI_SAS_DEVICE0_FLAGS_PORT_SELECTOR_ATTACH.
357 * 10-27-04 01.05.03 Added defines for new SAS PHY page addressing mode. 366 * 10-27-04 01.05.03 Added defines for new SAS PHY page addressing mode.
358 * Added defines for MaxTargetSpinUp to BIOS Page 1. 367 * Added defines for MaxTargetSpinUp to BIOS Page 1.
359 * Added 5 new ControlFlags defines for SAS IO Unit 368 * Added 5 new ControlFlags defines for SAS IO Unit
360 * Page 1. 369 * Page 1.
361 * Added MaxNumPhysicalMappedIDs field to SAS IO Unit 370 * Added MaxNumPhysicalMappedIDs field to SAS IO Unit
362 * Page 2. 371 * Page 2.
363 * Added AccessStatus field to SAS Device Page 0 and added 372 * Added AccessStatus field to SAS Device Page 0 and added
364 * new Flags bits for supported SATA features. 373 * new Flags bits for supported SATA features.
365 * 12-07-04 01.05.04 Added config page structures for BIOS Page 2, RAID 374 * 12-07-04 01.05.04 Added config page structures for BIOS Page 2, RAID
366 * Volume Page 1, and RAID Physical Disk Page 1. 375 * Volume Page 1, and RAID Physical Disk Page 1.
367 * Replaced IO Unit Page 1 BootTargetID,BootBus, and 376 * Replaced IO Unit Page 1 BootTargetID,BootBus, and
368 * BootAdapterNum with reserved field. 377 * BootAdapterNum with reserved field.
369 * Added DataScrubRate and ResyncRate to RAID Volume 378 * Added DataScrubRate and ResyncRate to RAID Volume
370 * Page 0. 379 * Page 0.
371 * Added MPI_SAS_IOUNIT2_FLAGS_RESERVE_ID_0_FOR_BOOT 380 * Added MPI_SAS_IOUNIT2_FLAGS_RESERVE_ID_0_FOR_BOOT
372 * define. 381 * define.
373 * 12-09-04 01.05.05 Added Target Mode Large CDB Enable to FC Port Page 1 382 * 12-09-04 01.05.05 Added Target Mode Large CDB Enable to FC Port Page 1
374 * Flags field. 383 * Flags field.
375 * Added Auto Port Config flag define for SAS IOUNIT 384 * Added Auto Port Config flag define for SAS IOUNIT
376 * Page 1 ControlFlags. 385 * Page 1 ControlFlags.
377 * Added Disabled bad Phy define to Expander Page 1 386 * Added Disabled bad Phy define to Expander Page 1
378 * Discovery Info field. 387 * Discovery Info field.
379 * Added SAS/SATA device support to SAS IOUnit Page 1 388 * Added SAS/SATA device support to SAS IOUnit Page 1
380 * ControlFlags. 389 * ControlFlags.
381 * Added Unsupported device to SAS Dev Page 0 Flags field 390 * Added Unsupported device to SAS Dev Page 0 Flags field
382 * Added disable use SATA Hash Address for SAS IOUNIT 391 * Added disable use SATA Hash Address for SAS IOUNIT
383 * page 1 in ControlFields. 392 * page 1 in ControlFields.
384 * 01-15-05 01.05.06 Added defaults for data scrub rate and resync rate to 393 * 01-15-05 01.05.06 Added defaults for data scrub rate and resync rate to
385 * Manufacturing Page 4. 394 * Manufacturing Page 4.
386 * Added new defines for BIOS Page 1 IOCSettings field. 395 * Added new defines for BIOS Page 1 IOCSettings field.
387 * Added ExtDiskIdentifier field to RAID Physical Disk 396 * Added ExtDiskIdentifier field to RAID Physical Disk
388 * Page 0. 397 * Page 0.
389 * Added new defines for SAS IO Unit Page 1 ControlFlags 398 * Added new defines for SAS IO Unit Page 1 ControlFlags
390 * and to SAS Device Page 0 Flags to control SATA devices. 399 * and to SAS Device Page 0 Flags to control SATA devices.
391 * Added defines and structures for the new Log Page 0, a 400 * Added defines and structures for the new Log Page 0, a
392 * new type of configuration page. 401 * new type of configuration page.
393 * 02-09-05 01.05.07 Added InactiveStatus field to RAID Volume Page 0. 402 * 02-09-05 01.05.07 Added InactiveStatus field to RAID Volume Page 0.
394 * Added WWID field to RAID Volume Page 1. 403 * Added WWID field to RAID Volume Page 1.
395 * Added PhysicalPort field to SAS Expander pages 0 and 1. 404 * Added PhysicalPort field to SAS Expander pages 0 and 1.
396 * 03-11-05 01.05.08 Removed the EEDP flags from IOC Page 1. 405 * 03-11-05 01.05.08 Removed the EEDP flags from IOC Page 1.
397 * Added Enclosure/Slot boot device format to BIOS Page 2. 406 * Added Enclosure/Slot boot device format to BIOS Page 2.
398 * New status value for RAID Volume Page 0 VolumeStatus 407 * New status value for RAID Volume Page 0 VolumeStatus
399 * (VolumeState subfield). 408 * (VolumeState subfield).
400 * New value for RAID Physical Page 0 InactiveStatus. 409 * New value for RAID Physical Page 0 InactiveStatus.
401 * Added Inactive Volume Member flag RAID Physical Disk 410 * Added Inactive Volume Member flag RAID Physical Disk
402 * Page 0 PhysDiskStatus field. 411 * Page 0 PhysDiskStatus field.
403 * New physical mapping mode in SAS IO Unit Page 2. 412 * New physical mapping mode in SAS IO Unit Page 2.
404 * Added CONFIG_PAGE_SAS_ENCLOSURE_0. 413 * Added CONFIG_PAGE_SAS_ENCLOSURE_0.
405 * Added Slot and Enclosure fields to SAS Device Page 0. 414 * Added Slot and Enclosure fields to SAS Device Page 0.
406 * 06-24-05 01.05.09 Added EEDP defines to IOC Page 1. 415 * 06-24-05 01.05.09 Added EEDP defines to IOC Page 1.
407 * Added more RAID type defines to IOC Page 2. 416 * Added more RAID type defines to IOC Page 2.
408 * Added Port Enable Delay settings to BIOS Page 1. 417 * Added Port Enable Delay settings to BIOS Page 1.
409 * Added Bad Block Table Full define to RAID Volume Page 0. 418 * Added Bad Block Table Full define to RAID Volume Page 0.
410 * Added Previous State defines to RAID Physical Disk 419 * Added Previous State defines to RAID Physical Disk
411 * Page 0. 420 * Page 0.
412 * Added Max Sata Targets define for DiscoveryStatus field 421 * Added Max Sata Targets define for DiscoveryStatus field
413 * of SAS IO Unit Page 0. 422 * of SAS IO Unit Page 0.
414 * Added Device Self Test to Control Flags of SAS IO Unit 423 * Added Device Self Test to Control Flags of SAS IO Unit
415 * Page 1. 424 * Page 1.
416 * Added Direct Attach Starting Slot Number define for SAS 425 * Added Direct Attach Starting Slot Number define for SAS
417 * IO Unit Page 2. 426 * IO Unit Page 2.
418 * Added new fields in SAS Device Page 2 for enclosure 427 * Added new fields in SAS Device Page 2 for enclosure
419 * mapping. 428 * mapping.
420 * Added OwnerDevHandle and Flags field to SAS PHY Page 0. 429 * Added OwnerDevHandle and Flags field to SAS PHY Page 0.
421 * Added IOC GPIO Flags define to SAS Enclosure Page 0. 430 * Added IOC GPIO Flags define to SAS Enclosure Page 0.
422 * Fixed the value for MPI_SAS_IOUNIT1_CONTROL_DEV_SATA_SUPPORT. 431 * Fixed the value for MPI_SAS_IOUNIT1_CONTROL_DEV_SATA_SUPPORT.
423 * 08-03-05 01.05.10 Removed ISDataScrubRate and ISResyncRate from 432 * 08-03-05 01.05.10 Removed ISDataScrubRate and ISResyncRate from
424 * Manufacturing Page 4. 433 * Manufacturing Page 4.
425 * Added MPI_IOUNITPAGE1_SATA_WRITE_CACHE_DISABLE bit. 434 * Added MPI_IOUNITPAGE1_SATA_WRITE_CACHE_DISABLE bit.
426 * Added NumDevsPerEnclosure field to SAS IO Unit page 2. 435 * Added NumDevsPerEnclosure field to SAS IO Unit page 2.
427 * Added MPI_SAS_IOUNIT2_FLAGS_HOST_ASSIGNED_PHYS_MAP 436 * Added MPI_SAS_IOUNIT2_FLAGS_HOST_ASSIGNED_PHYS_MAP
428 * define. 437 * define.
429 * Added EnclosureHandle field to SAS Expander page 0. 438 * Added EnclosureHandle field to SAS Expander page 0.
430 * Removed redundant NumTableEntriesProg field from SAS 439 * Removed redundant NumTableEntriesProg field from SAS
431 * Expander Page 1. 440 * Expander Page 1.
432 * 08-30-05 01.05.11 Added DeviceID for FC949E and changed the DeviceID for 441 * 08-30-05 01.05.11 Added DeviceID for FC949E and changed the DeviceID for
433 * SAS1078. 442 * SAS1078.
434 * Added more defines for Manufacturing Page 4 Flags field. 443 * Added more defines for Manufacturing Page 4 Flags field.
435 * Added more defines for IOCSettings and added 444 * Added more defines for IOCSettings and added
436 * ExpanderSpinup field to Bios Page 1. 445 * ExpanderSpinup field to Bios Page 1.
437 * Added postpone SATA Init bit to SAS IO Unit Page 1 446 * Added postpone SATA Init bit to SAS IO Unit Page 1
438 * ControlFlags. 447 * ControlFlags.
439 * Changed LogEntry format for Log Page 0. 448 * Changed LogEntry format for Log Page 0.
440 * 03-27-06 01.05.12 Added two new Flags defines for Manufacturing Page 4. 449 * 03-27-06 01.05.12 Added two new Flags defines for Manufacturing Page 4.
441 * Added Manufacturing Page 7. 450 * Added Manufacturing Page 7.
442 * Added MPI_IOCPAGE2_CAP_FLAGS_RAID_64_BIT_ADDRESSING. 451 * Added MPI_IOCPAGE2_CAP_FLAGS_RAID_64_BIT_ADDRESSING.
443 * Added IOC Page 6. 452 * Added IOC Page 6.
444 * Added PrevBootDeviceForm field to CONFIG_PAGE_BIOS_2. 453 * Added PrevBootDeviceForm field to CONFIG_PAGE_BIOS_2.
445 * Added MaxLBAHigh field to RAID Volume Page 0. 454 * Added MaxLBAHigh field to RAID Volume Page 0.
446 * Added Nvdata version fields to SAS IO Unit Page 0. 455 * Added Nvdata version fields to SAS IO Unit Page 0.
447 * Added AdditionalControlFlags, MaxTargetPortConnectTime, 456 * Added AdditionalControlFlags, MaxTargetPortConnectTime,
448 * ReportDeviceMissingDelay, and IODeviceMissingDelay 457 * ReportDeviceMissingDelay, and IODeviceMissingDelay
449 * fields to SAS IO Unit Page 1. 458 * fields to SAS IO Unit Page 1.
459 * 10-11-06 01.05.13 Added NumForceWWID field and ForceWWID array to
460 * Manufacturing Page 5.
461 * Added Manufacturing pages 8 through 10.
462 * Added defines for supported metadata size bits in
463 * CapabilitiesFlags field of IOC Page 6.
464 * Added defines for metadata size bits in VolumeSettings
465 * field of RAID Volume Page 0.
466 * Added SATA Link Reset settings, Enable SATA Asynchronous
467 * Notification bit, and HideNonZeroAttachedPhyIdentifiers
468 * bit to AdditionalControlFlags field of SAS IO Unit
469 * Page 1.
470 * Added defines for Enclosure Devices Unmapped and
471 * Device Limit Exceeded bits in Status field of SAS IO
472 * Unit Page 2.
473 * Added more AccessStatus values for SAS Device Page 0.
474 * Added bit for SATA Asynchronous Notification Support in
475 * Flags field of SAS Device Page 0.
450 * -------------------------------------------------------------------------- 476 * --------------------------------------------------------------------------
451 477
452 mpi_init.h 478 mpi_init.h
453 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000. 479 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000.
454 * 05-24-00 00.10.02 Added SenseBufferLength to _MSG_SCSI_IO_REPLY. 480 * 05-24-00 00.10.02 Added SenseBufferLength to _MSG_SCSI_IO_REPLY.
455 * 06-06-00 01.00.01 Update version number for 1.0 release. 481 * 06-06-00 01.00.01 Update version number for 1.0 release.
456 * 06-08-00 01.00.02 Added MPI_SCSI_RSP_INFO_ definitions. 482 * 06-08-00 01.00.02 Added MPI_SCSI_RSP_INFO_ definitions.
457 * 11-02-00 01.01.01 Original release for post 1.0 work 483 * 11-02-00 01.01.01 Original release for post 1.0 work
458 * 12-04-00 01.01.02 Added MPI_SCSIIO_CONTROL_NO_DISCONNECT. 484 * 12-04-00 01.01.02 Added MPI_SCSIIO_CONTROL_NO_DISCONNECT.
459 * 02-20-01 01.01.03 Started using MPI_POINTER. 485 * 02-20-01 01.01.03 Started using MPI_POINTER.
460 * 03-27-01 01.01.04 Added structure offset comments. 486 * 03-27-01 01.01.04 Added structure offset comments.
461 * 04-10-01 01.01.05 Added new MsgFlag for MSG_SCSI_TASK_MGMT. 487 * 04-10-01 01.01.05 Added new MsgFlag for MSG_SCSI_TASK_MGMT.
462 * 08-08-01 01.02.01 Original release for v1.2 work. 488 * 08-08-01 01.02.01 Original release for v1.2 work.
463 * 08-29-01 01.02.02 Added MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET. 489 * 08-29-01 01.02.02 Added MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET.
464 * Added MPI_SCSI_STATE_QUEUE_TAG_REJECTED for 490 * Added MPI_SCSI_STATE_QUEUE_TAG_REJECTED for
465 * MSG_SCSI_IO_REPLY. 491 * MSG_SCSI_IO_REPLY.
466 * 09-28-01 01.02.03 Added structures and defines for SCSI Enclosure 492 * 09-28-01 01.02.03 Added structures and defines for SCSI Enclosure
467 * Processor messages. 493 * Processor messages.
468 * 10-04-01 01.02.04 Added defines for SEP request Action field. 494 * 10-04-01 01.02.04 Added defines for SEP request Action field.
469 * 05-31-02 01.02.05 Added MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR define 495 * 05-31-02 01.02.05 Added MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR define
470 * for SCSI IO requests. 496 * for SCSI IO requests.
471 * 11-15-02 01.02.06 Added special extended SCSI Status defines for FCP. 497 * 11-15-02 01.02.06 Added special extended SCSI Status defines for FCP.
472 * 06-26-03 01.02.07 Added MPI_SCSI_STATUS_FCPEXT_UNASSIGNED define. 498 * 06-26-03 01.02.07 Added MPI_SCSI_STATUS_FCPEXT_UNASSIGNED define.
473 * 05-11-04 01.03.01 Original release for MPI v1.3. 499 * 05-11-04 01.03.01 Original release for MPI v1.3.
474 * 08-19-04 01.05.01 Added MsgFlags defines for EEDP to SCSI IO request. 500 * 08-19-04 01.05.01 Added MsgFlags defines for EEDP to SCSI IO request.
475 * Added new word to MSG_SCSI_IO_REPLY to add TaskTag field 501 * Added new word to MSG_SCSI_IO_REPLY to add TaskTag field
476 * and a reserved U16. 502 * and a reserved U16.
477 * Added new MSG_SCSI_IO32_REQUEST structure. 503 * Added new MSG_SCSI_IO32_REQUEST structure.
478 * Added a TaskType of Clear Task Set to SCSI 504 * Added a TaskType of Clear Task Set to SCSI
479 * Task Management request. 505 * Task Management request.
480 * 12-07-04 01.05.02 Added support for Task Management Query Task. 506 * 12-07-04 01.05.02 Added support for Task Management Query Task.
481 * 01-15-05 01.05.03 Modified SCSI Enclosure Processor Request to support 507 * 01-15-05 01.05.03 Modified SCSI Enclosure Processor Request to support
482 * WWID addressing. 508 * WWID addressing.
483 * 03-11-05 01.05.04 Removed EEDP flags from SCSI IO Request. 509 * 03-11-05 01.05.04 Removed EEDP flags from SCSI IO Request.
484 * Removed SCSI IO 32 Request. 510 * Removed SCSI IO 32 Request.
485 * Modified SCSI Enclosure Processor Request and Reply to 511 * Modified SCSI Enclosure Processor Request and Reply to
486 * support Enclosure/Slot addressing rather than WWID 512 * support Enclosure/Slot addressing rather than WWID
487 * addressing. 513 * addressing.
488 * 06-24-05 01.05.05 Added SCSI IO 32 structures and defines. 514 * 06-24-05 01.05.05 Added SCSI IO 32 structures and defines.
489 * Added four new defines for SEP SlotStatus. 515 * Added four new defines for SEP SlotStatus.
490 * 08-03-05 01.05.06 Fixed some MPI_SCSIIO32_MSGFLGS_ defines to make them 516 * 08-03-05 01.05.06 Fixed some MPI_SCSIIO32_MSGFLGS_ defines to make them
491 * unique in the first 32 characters. 517 * unique in the first 32 characters.
492 * 03-27-06 01.05.07 Added Task Management type of Clear ACA. 518 * 03-27-06 01.05.07 Added Task Management type of Clear ACA.
519 * 10-11-06 01.05.08 Shortened define for Task Management type of Clear ACA.
493 * -------------------------------------------------------------------------- 520 * --------------------------------------------------------------------------
494 521
495 mpi_targ.h 522 mpi_targ.h
496 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000. 523 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000.
497 * 06-06-00 01.00.01 Update version number for 1.0 release. 524 * 06-06-00 01.00.01 Update version number for 1.0 release.
498 * 06-22-00 01.00.02 Added _MSG_TARGET_CMD_BUFFER_POST_REPLY structure. 525 * 06-22-00 01.00.02 Added _MSG_TARGET_CMD_BUFFER_POST_REPLY structure.
499 * Corrected DECSRIPTOR typo to DESCRIPTOR. 526 * Corrected DECSRIPTOR typo to DESCRIPTOR.
500 * 11-02-00 01.01.01 Original release for post 1.0 work 527 * 11-02-00 01.01.01 Original release for post 1.0 work
501 * Modified target mode to use IoIndex instead of 528 * Modified target mode to use IoIndex instead of
502 * HostIndex and IocIndex. Added Alias. 529 * HostIndex and IocIndex. Added Alias.
503 * 01-09-01 01.01.02 Added defines for TARGET_ASSIST_FLAGS_REPOST_CMD_BUFFER 530 * 01-09-01 01.01.02 Added defines for TARGET_ASSIST_FLAGS_REPOST_CMD_BUFFER
504 * and TARGET_STATUS_SEND_FLAGS_REPOST_CMD_BUFFER. 531 * and TARGET_STATUS_SEND_FLAGS_REPOST_CMD_BUFFER.
505 * 02-20-01 01.01.03 Started using MPI_POINTER. 532 * 02-20-01 01.01.03 Started using MPI_POINTER.
506 * Added structures for MPI_TARGET_SCSI_SPI_CMD_BUFFER and 533 * Added structures for MPI_TARGET_SCSI_SPI_CMD_BUFFER and
507 * MPI_TARGET_FCP_CMD_BUFFER. 534 * MPI_TARGET_FCP_CMD_BUFFER.
508 * 03-27-01 01.01.04 Added structure offset comments. 535 * 03-27-01 01.01.04 Added structure offset comments.
509 * 08-08-01 01.02.01 Original release for v1.2 work. 536 * 08-08-01 01.02.01 Original release for v1.2 work.
510 * 09-28-01 01.02.02 Added structure for MPI_TARGET_SCSI_SPI_STATUS_IU. 537 * 09-28-01 01.02.02 Added structure for MPI_TARGET_SCSI_SPI_STATUS_IU.
511 * Added PriorityReason field to some replies and 538 * Added PriorityReason field to some replies and
512 * defined more PriorityReason codes. 539 * defined more PriorityReason codes.
513 * Added some defines for to support previous version 540 * Added some defines for to support previous version
514 * of MPI. 541 * of MPI.
515 * 10-04-01 01.02.03 Added PriorityReason to MSG_TARGET_ERROR_REPLY. 542 * 10-04-01 01.02.03 Added PriorityReason to MSG_TARGET_ERROR_REPLY.
516 * 11-01-01 01.02.04 Added define for TARGET_STATUS_SEND_FLAGS_HIGH_PRIORITY. 543 * 11-01-01 01.02.04 Added define for TARGET_STATUS_SEND_FLAGS_HIGH_PRIORITY.
517 * 03-14-02 01.02.05 Modified MPI_TARGET_FCP_RSP_BUFFER to get the proper 544 * 03-14-02 01.02.05 Modified MPI_TARGET_FCP_RSP_BUFFER to get the proper
518 * byte ordering. 545 * byte ordering.
519 * 05-31-02 01.02.06 Modified TARGET_MODE_REPLY_ALIAS_MASK to only include 546 * 05-31-02 01.02.06 Modified TARGET_MODE_REPLY_ALIAS_MASK to only include
520 * one bit. 547 * one bit.
521 * Added AliasIndex field to MPI_TARGET_FCP_CMD_BUFFER. 548 * Added AliasIndex field to MPI_TARGET_FCP_CMD_BUFFER.
522 * 09-16-02 01.02.07 Added flags for confirmed completion. 549 * 09-16-02 01.02.07 Added flags for confirmed completion.
523 * Added PRIORITY_REASON_TARGET_BUSY. 550 * Added PRIORITY_REASON_TARGET_BUSY.
524 * 11-15-02 01.02.08 Added AliasID field to MPI_TARGET_SCSI_SPI_CMD_BUFFER. 551 * 11-15-02 01.02.08 Added AliasID field to MPI_TARGET_SCSI_SPI_CMD_BUFFER.
525 * 04-01-03 01.02.09 Added OptionalOxid field to MPI_TARGET_FCP_CMD_BUFFER. 552 * 04-01-03 01.02.09 Added OptionalOxid field to MPI_TARGET_FCP_CMD_BUFFER.
526 * 05-11-04 01.03.01 Original release for MPI v1.3. 553 * 05-11-04 01.03.01 Original release for MPI v1.3.
527 * 08-19-04 01.05.01 Added new request message structures for 554 * 08-19-04 01.05.01 Added new request message structures for
528 * MSG_TARGET_CMD_BUF_POST_BASE_REQUEST, 555 * MSG_TARGET_CMD_BUF_POST_BASE_REQUEST,
529 * MSG_TARGET_CMD_BUF_POST_LIST_REQUEST, and 556 * MSG_TARGET_CMD_BUF_POST_LIST_REQUEST, and
530 * MSG_TARGET_ASSIST_EXT_REQUEST. 557 * MSG_TARGET_ASSIST_EXT_REQUEST.
531 * Added new structures for SAS SSP Command buffer, SSP 558 * Added new structures for SAS SSP Command buffer, SSP
532 * Task buffer, and SSP Status IU. 559 * Task buffer, and SSP Status IU.
533 * 10-05-04 01.05.02 MSG_TARGET_CMD_BUFFER_POST_BASE_LIST_REPLY added. 560 * 10-05-04 01.05.02 MSG_TARGET_CMD_BUFFER_POST_BASE_LIST_REPLY added.
534 * 02-22-05 01.05.03 Changed a comment. 561 * 02-22-05 01.05.03 Changed a comment.
535 * 03-11-05 01.05.04 Removed TargetAssistExtended Request. 562 * 03-11-05 01.05.04 Removed TargetAssistExtended Request.
536 * 06-24-05 01.05.05 Added TargetAssistExtended structures and defines. 563 * 06-24-05 01.05.05 Added TargetAssistExtended structures and defines.
537 * 03-27-06 01.05.06 Added a comment. 564 * 03-27-06 01.05.06 Added a comment.
538 * -------------------------------------------------------------------------- 565 * --------------------------------------------------------------------------
539 566
540 mpi_fc.h 567 mpi_fc.h
541 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000. 568 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000.
542 * 06-06-00 01.00.01 Update version number for 1.0 release. 569 * 06-06-00 01.00.01 Update version number for 1.0 release.
543 * 06-12-00 01.00.02 Added _MSG_FC_ABORT_REPLY structure. 570 * 06-12-00 01.00.02 Added _MSG_FC_ABORT_REPLY structure.
544 * 11-02-00 01.01.01 Original release for post 1.0 work 571 * 11-02-00 01.01.01 Original release for post 1.0 work
545 * 12-04-00 01.01.02 Added messages for Common Transport Send and 572 * 12-04-00 01.01.02 Added messages for Common Transport Send and
546 * Primitive Send. 573 * Primitive Send.
547 * 01-09-01 01.01.03 Modifed some of the new flags to have an MPI prefix 574 * 01-09-01 01.01.03 Modifed some of the new flags to have an MPI prefix
548 * and modified the FcPrimitiveSend flags. 575 * and modified the FcPrimitiveSend flags.
549 * 01-25-01 01.01.04 Move InitiatorIndex in LinkServiceRsp reply to a larger 576 * 01-25-01 01.01.04 Move InitiatorIndex in LinkServiceRsp reply to a larger
550 * field. 577 * field.
551 * Added FC_ABORT_TYPE_CT_SEND_REQUEST and 578 * Added FC_ABORT_TYPE_CT_SEND_REQUEST and
552 * FC_ABORT_TYPE_EXLINKSEND_REQUEST for FcAbort request. 579 * FC_ABORT_TYPE_EXLINKSEND_REQUEST for FcAbort request.
553 * Added MPI_FC_PRIM_SEND_FLAGS_STOP_SEND. 580 * Added MPI_FC_PRIM_SEND_FLAGS_STOP_SEND.
554 * 02-20-01 01.01.05 Started using MPI_POINTER. 581 * 02-20-01 01.01.05 Started using MPI_POINTER.
555 * 03-27-01 01.01.06 Added Flags field to MSG_LINK_SERVICE_BUFFER_POST_REPLY 582 * 03-27-01 01.01.06 Added Flags field to MSG_LINK_SERVICE_BUFFER_POST_REPLY
556 * and defined MPI_LS_BUF_POST_REPLY_FLAG_NO_RSP_NEEDED. 583 * and defined MPI_LS_BUF_POST_REPLY_FLAG_NO_RSP_NEEDED.
557 * Added MPI_FC_PRIM_SEND_FLAGS_RESET_LINK define. 584 * Added MPI_FC_PRIM_SEND_FLAGS_RESET_LINK define.
558 * Added structure offset comments. 585 * Added structure offset comments.
559 * 04-09-01 01.01.07 Added RspLength field to MSG_LINK_SERVICE_RSP_REQUEST. 586 * 04-09-01 01.01.07 Added RspLength field to MSG_LINK_SERVICE_RSP_REQUEST.
560 * 08-08-01 01.02.01 Original release for v1.2 work. 587 * 08-08-01 01.02.01 Original release for v1.2 work.
561 * 09-28-01 01.02.02 Change name of reserved field in 588 * 09-28-01 01.02.02 Change name of reserved field in
562 * MSG_LINK_SERVICE_RSP_REPLY. 589 * MSG_LINK_SERVICE_RSP_REPLY.
563 * 05-31-02 01.02.03 Adding AliasIndex to FC Direct Access requests. 590 * 05-31-02 01.02.03 Adding AliasIndex to FC Direct Access requests.
564 * 01-16-04 01.02.04 Added define for MPI_FC_PRIM_SEND_FLAGS_ML_RESET_LINK. 591 * 01-16-04 01.02.04 Added define for MPI_FC_PRIM_SEND_FLAGS_ML_RESET_LINK.
565 * 05-11-04 01.03.01 Original release for MPI v1.3. 592 * 05-11-04 01.03.01 Original release for MPI v1.3.
566 * 08-19-04 01.05.01 Original release for MPI v1.5. 593 * 08-19-04 01.05.01 Original release for MPI v1.5.
567 * -------------------------------------------------------------------------- 594 * --------------------------------------------------------------------------
568 595
569 mpi_lan.h 596 mpi_lan.h
570 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000. 597 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000.
571 * 05-24-00 00.10.02 Added LANStatus field to _MSG_LAN_SEND_REPLY. 598 * 05-24-00 00.10.02 Added LANStatus field to _MSG_LAN_SEND_REPLY.
572 * Added LANStatus field to _MSG_LAN_RECEIVE_POST_REPLY. 599 * Added LANStatus field to _MSG_LAN_RECEIVE_POST_REPLY.
573 * Moved ListCount field in _MSG_LAN_RECEIVE_POST_REPLY. 600 * Moved ListCount field in _MSG_LAN_RECEIVE_POST_REPLY.
574 * 06-06-00 01.00.01 Update version number for 1.0 release. 601 * 06-06-00 01.00.01 Update version number for 1.0 release.
575 * 06-12-00 01.00.02 Added MPI_ to BUCKETSTATUS_ definitions. 602 * 06-12-00 01.00.02 Added MPI_ to BUCKETSTATUS_ definitions.
576 * 06-22-00 01.00.03 Major changes to match new LAN definition in 1.0 spec. 603 * 06-22-00 01.00.03 Major changes to match new LAN definition in 1.0 spec.
577 * 06-30-00 01.00.04 Added Context Reply definitions per revised proposal. 604 * 06-30-00 01.00.04 Added Context Reply definitions per revised proposal.
578 * Changed transaction context usage to bucket/buffer. 605 * Changed transaction context usage to bucket/buffer.
579 * 07-05-00 01.00.05 Removed LAN_RECEIVE_POST_BUCKET_CONTEXT_MASK definition 606 * 07-05-00 01.00.05 Removed LAN_RECEIVE_POST_BUCKET_CONTEXT_MASK definition
580 * to lan private header file 607 * to lan private header file
581 * 11-02-00 01.01.01 Original release for post 1.0 work 608 * 11-02-00 01.01.01 Original release for post 1.0 work
582 * 02-20-01 01.01.02 Started using MPI_POINTER. 609 * 02-20-01 01.01.02 Started using MPI_POINTER.
583 * 03-27-01 01.01.03 Added structure offset comments. 610 * 03-27-01 01.01.03 Added structure offset comments.
584 * 08-08-01 01.02.01 Original release for v1.2 work. 611 * 08-08-01 01.02.01 Original release for v1.2 work.
585 * 05-11-04 01.03.01 Original release for MPI v1.3. 612 * 05-11-04 01.03.01 Original release for MPI v1.3.
586 * 08-19-04 01.05.01 Original release for MPI v1.5. 613 * 08-19-04 01.05.01 Original release for MPI v1.5.
587 * -------------------------------------------------------------------------- 614 * --------------------------------------------------------------------------
588 615
589 mpi_raid.h 616 mpi_raid.h
590 * 02-27-01 01.01.01 Original release for this file. 617 * 02-27-01 01.01.01 Original release for this file.
591 * 03-27-01 01.01.02 Added structure offset comments. 618 * 03-27-01 01.01.02 Added structure offset comments.
592 * 08-08-01 01.02.01 Original release for v1.2 work. 619 * 08-08-01 01.02.01 Original release for v1.2 work.
593 * 08-29-01 01.02.02 Added DIAG_DATA_UPLOAD_HEADER and related defines. 620 * 08-29-01 01.02.02 Added DIAG_DATA_UPLOAD_HEADER and related defines.
594 * 09-28-01 01.02.02 Major rework for MPI v1.2 Integrated RAID changes. 621 * 09-28-01 01.02.02 Major rework for MPI v1.2 Integrated RAID changes.
595 * 10-04-01 01.02.03 Added ActionData defines for 622 * 10-04-01 01.02.03 Added ActionData defines for
596 * MPI_RAID_ACTION_DELETE_VOLUME action. 623 * MPI_RAID_ACTION_DELETE_VOLUME action.
597 * 11-01-01 01.02.04 Added define for MPI_RAID_ACTION_ADATA_DO_NOT_SYNC. 624 * 11-01-01 01.02.04 Added define for MPI_RAID_ACTION_ADATA_DO_NOT_SYNC.
598 * 03-14-02 01.02.05 Added define for MPI_RAID_ACTION_ADATA_LOW_LEVEL_INIT. 625 * 03-14-02 01.02.05 Added define for MPI_RAID_ACTION_ADATA_LOW_LEVEL_INIT.
599 * 05-07-02 01.02.06 Added define for MPI_RAID_ACTION_ACTIVATE_VOLUME, 626 * 05-07-02 01.02.06 Added define for MPI_RAID_ACTION_ACTIVATE_VOLUME,
600 * MPI_RAID_ACTION_INACTIVATE_VOLUME, and 627 * MPI_RAID_ACTION_INACTIVATE_VOLUME, and
601 * MPI_RAID_ACTION_ADATA_INACTIVATE_ALL. 628 * MPI_RAID_ACTION_ADATA_INACTIVATE_ALL.
602 * 07-12-02 01.02.07 Added structures for Mailbox request and reply. 629 * 07-12-02 01.02.07 Added structures for Mailbox request and reply.
603 * 11-15-02 01.02.08 Added missing MsgContext field to MSG_MAILBOX_REQUEST. 630 * 11-15-02 01.02.08 Added missing MsgContext field to MSG_MAILBOX_REQUEST.
604 * 04-01-03 01.02.09 New action data option flag for 631 * 04-01-03 01.02.09 New action data option flag for
605 * MPI_RAID_ACTION_DELETE_VOLUME. 632 * MPI_RAID_ACTION_DELETE_VOLUME.
606 * 05-11-04 01.03.01 Original release for MPI v1.3. 633 * 05-11-04 01.03.01 Original release for MPI v1.3.
607 * 08-19-04 01.05.01 Original release for MPI v1.5. 634 * 08-19-04 01.05.01 Original release for MPI v1.5.
608 * 01-15-05 01.05.02 Added defines for the two new RAID Actions for 635 * 01-15-05 01.05.02 Added defines for the two new RAID Actions for
609 * _SET_RESYNC_RATE and _SET_DATA_SCRUB_RATE. 636 * _SET_RESYNC_RATE and _SET_DATA_SCRUB_RATE.
610 * -------------------------------------------------------------------------- 637 * --------------------------------------------------------------------------
611 638
612 mpi_tool.h 639 mpi_tool.h
613 * 08-08-01 01.02.01 Original release. 640 * 08-08-01 01.02.01 Original release.
614 * 08-29-01 01.02.02 Added DIAG_DATA_UPLOAD_HEADER and related defines. 641 * 08-29-01 01.02.02 Added DIAG_DATA_UPLOAD_HEADER and related defines.
615 * 01-16-04 01.02.03 Added defines and structures for new tools 642 * 01-16-04 01.02.03 Added defines and structures for new tools
616 *. MPI_TOOLBOX_ISTWI_READ_WRITE_TOOL and 643 *. MPI_TOOLBOX_ISTWI_READ_WRITE_TOOL and
617 * MPI_TOOLBOX_FC_MANAGEMENT_TOOL. 644 * MPI_TOOLBOX_FC_MANAGEMENT_TOOL.
618 * 04-29-04 01.02.04 Added message structures for Diagnostic Buffer Post and 645 * 04-29-04 01.02.04 Added message structures for Diagnostic Buffer Post and
619 * Diagnostic Release requests and replies. 646 * Diagnostic Release requests and replies.
620 * 05-11-04 01.03.01 Original release for MPI v1.3. 647 * 05-11-04 01.03.01 Original release for MPI v1.3.
621 * 08-19-04 01.05.01 Original release for MPI v1.5. 648 * 08-19-04 01.05.01 Original release for MPI v1.5.
622 * 10-06-04 01.05.02 Added define for MPI_DIAG_BUF_TYPE_COUNT. 649 * 10-06-04 01.05.02 Added define for MPI_DIAG_BUF_TYPE_COUNT.
623 * 02-09-05 01.05.03 Added frame size option to FC management tool. 650 * 02-09-05 01.05.03 Added frame size option to FC management tool.
624 * Added Beacon tool to the Toolbox. 651 * Added Beacon tool to the Toolbox.
625 * -------------------------------------------------------------------------- 652 * --------------------------------------------------------------------------
626 653
627 mpi_inb.h 654 mpi_inb.h
628 * 05-11-04 01.03.01 Original release. 655 * 05-11-04 01.03.01 Original release.
629 * 08-19-04 01.05.01 Original release for MPI v1.5. 656 * 08-19-04 01.05.01 Original release for MPI v1.5.
630 * -------------------------------------------------------------------------- 657 * --------------------------------------------------------------------------
631 658
632 mpi_sas.h 659 mpi_sas.h
633 * 08-19-04 01.05.01 Original release. 660 * 08-19-04 01.05.01 Original release.
634 * 08-30-05 01.05.02 Added DeviceInfo bit for SEP. 661 * 08-30-05 01.05.02 Added DeviceInfo bit for SEP.
635 * Added PrimFlags and Primitive field to SAS IO Unit 662 * Added PrimFlags and Primitive field to SAS IO Unit
636 * Control request, and added a new operation code. 663 * Control request, and added a new operation code.
637 * 03-27-06 01.05.03 Added Force Full Discovery, Transmit Port Select Signal, 664 * 03-27-06 01.05.03 Added Force Full Discovery, Transmit Port Select Signal,
638 * and Remove Device operations to SAS IO Unit Control. 665 * and Remove Device operations to SAS IO Unit Control.
639 * Added DevHandle field to SAS IO Unit Control request and 666 * Added DevHandle field to SAS IO Unit Control request and
640 * reply. 667 * reply.
668 * 10-11-06 01.05.04 Fixed the name of a define for Operation field of SAS IO
669 * Unit Control request.
641 * -------------------------------------------------------------------------- 670 * --------------------------------------------------------------------------
642 671
643 mpi_type.h 672 mpi_type.h
644 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000. 673 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000.
645 * 06-06-00 01.00.01 Update version number for 1.0 release. 674 * 06-06-00 01.00.01 Update version number for 1.0 release.
646 * 11-02-00 01.01.01 Original release for post 1.0 work 675 * 11-02-00 01.01.01 Original release for post 1.0 work
647 * 02-20-01 01.01.02 Added define and ifdef for MPI_POINTER. 676 * 02-20-01 01.01.02 Added define and ifdef for MPI_POINTER.
648 * 08-08-01 01.02.01 Original release for v1.2 work. 677 * 08-08-01 01.02.01 Original release for v1.2 work.
649 * 05-11-04 01.03.01 Original release for MPI v1.3. 678 * 05-11-04 01.03.01 Original release for MPI v1.3.
650 * 08-19-04 01.05.01 Original release for MPI v1.5. 679 * 08-19-04 01.05.01 Original release for MPI v1.5.
651 * 08-30-05 01.05.02 Added PowerPC option to #ifdef's. 680 * 08-30-05 01.05.02 Added PowerPC option to #ifdef's.
652 * -------------------------------------------------------------------------- 681 * --------------------------------------------------------------------------
653 682
654 mpi_history.txt Parts list history 683 mpi_history.txt Parts list history
655 684
656 Filename 01.05.13 01.05.12 01.05.11 01.05.10 01.05.09 685 Filename 01.05.13 01.05.13 01.05.12 01.05.11 01.05.10 01.05.09
657 ---------- -------- -------- -------- -------- -------- 686 ---------- -------- -------- -------- -------- -------- --------
658 mpi.h 01.05.11 01.05.10 01.05.09 01.05.08 01.05.07 687 mpi.h 01.05.12 01.05.11 01.05.10 01.05.09 01.05.08 01.05.07
659 mpi_ioc.h 01.05.11 01.05.10 01.05.09 01.05.09 01.05.08 688 mpi_ioc.h 01.05.12 01.05.11 01.05.10 01.05.09 01.05.09 01.05.08
660 mpi_cnfg.h 01.05.12 01.05.11 01.05.10 01.05.09 01.05.08 689 mpi_cnfg.h 01.05.13 01.05.12 01.05.11 01.05.10 01.05.09 01.05.08
661 mpi_init.h 01.05.07 01.05.06 01.05.06 01.05.05 01.05.04 690 mpi_init.h 01.05.08 01.05.07 01.05.06 01.05.06 01.05.05 01.05.04
662 mpi_targ.h 01.05.06 01.05.05 01.05.05 01.05.05 01.05.04 691 mpi_targ.h 01.05.06 01.05.06 01.05.05 01.05.05 01.05.05 01.05.04
663 mpi_fc.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 692 mpi_fc.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
664 mpi_lan.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 693 mpi_lan.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
665 mpi_raid.h 01.05.02 01.05.02 01.05.02 01.05.02 01.05.02 694 mpi_raid.h 01.05.02 01.05.02 01.05.02 01.05.02 01.05.02 01.05.02
666 mpi_tool.h 01.05.03 01.05.03 01.05.03 01.05.03 01.05.03 695 mpi_tool.h 01.05.03 01.05.03 01.05.03 01.05.03 01.05.03 01.05.03
667 mpi_inb.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 696 mpi_inb.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
668 mpi_sas.h 01.05.03 01.05.02 01.05.01 01.05.01 01.05.01 697 mpi_sas.h 01.05.04 01.05.03 01.05.02 01.05.01 01.05.01 01.05.01
669 mpi_type.h 01.05.02 01.05.02 01.05.01 01.05.01 01.05.01 698 mpi_type.h 01.05.02 01.05.02 01.05.02 01.05.01 01.05.01 01.05.01
670 699
671 Filename 01.05.08 01.05.07 01.05.06 01.05.05 01.05.04 01.05.03 700 Filename 01.05.08 01.05.07 01.05.06 01.05.05 01.05.04 01.05.03
672 ---------- -------- -------- -------- -------- -------- -------- 701 ---------- -------- -------- -------- -------- -------- --------
673 mpi.h 01.05.06 01.05.05 01.05.04 01.05.03 01.05.02 01.05.01 702 mpi.h 01.05.06 01.05.05 01.05.04 01.05.03 01.05.02 01.05.01
674 mpi_ioc.h 01.05.07 01.05.06 01.05.05 01.05.04 01.05.03 01.05.02 703 mpi_ioc.h 01.05.07 01.05.06 01.05.05 01.05.04 01.05.03 01.05.02
675 mpi_cnfg.h 01.05.07 01.05.07 01.05.06 01.05.05 01.05.04 01.05.03 704 mpi_cnfg.h 01.05.07 01.05.07 01.05.06 01.05.05 01.05.04 01.05.03
676 mpi_init.h 01.05.03 01.05.03 01.05.03 01.05.02 01.05.02 01.05.01 705 mpi_init.h 01.05.03 01.05.03 01.05.03 01.05.02 01.05.02 01.05.01
677 mpi_targ.h 01.05.03 01.05.02 01.05.02 01.05.02 01.05.02 01.05.02 706 mpi_targ.h 01.05.03 01.05.02 01.05.02 01.05.02 01.05.02 01.05.02
678 mpi_fc.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 707 mpi_fc.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
679 mpi_lan.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 708 mpi_lan.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
680 mpi_raid.h 01.05.02 01.05.02 01.05.02 01.05.01 01.05.01 01.05.01 709 mpi_raid.h 01.05.02 01.05.02 01.05.02 01.05.01 01.05.01 01.05.01
681 mpi_tool.h 01.05.03 01.05.03 01.05.02 01.05.02 01.05.02 01.05.02 710 mpi_tool.h 01.05.03 01.05.03 01.05.02 01.05.02 01.05.02 01.05.02
682 mpi_inb.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 711 mpi_inb.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
683 mpi_sas.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 712 mpi_sas.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
684 mpi_type.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 713 mpi_type.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
685 714
686 Filename 01.05.02 01.05.01 01.03.01 01.02.14 01.02.13 01.02.12 715 Filename 01.05.02 01.05.01 01.03.01 01.02.14 01.02.13 01.02.12
687 ---------- -------- -------- -------- -------- -------- -------- 716 ---------- -------- -------- -------- -------- -------- --------
688 mpi.h 01.05.01 01.05.01 01.03.01 01.02.12 01.02.11 01.02.10 717 mpi.h 01.05.01 01.05.01 01.03.01 01.02.12 01.02.11 01.02.10
689 mpi_ioc.h 01.05.02 01.05.01 01.03.01 01.02.09 01.02.08 01.02.08 718 mpi_ioc.h 01.05.02 01.05.01 01.03.01 01.02.09 01.02.08 01.02.08
690 mpi_cnfg.h 01.05.02 01.05.01 01.03.01 01.02.14 01.02.13 01.02.12 719 mpi_cnfg.h 01.05.02 01.05.01 01.03.01 01.02.14 01.02.13 01.02.12
691 mpi_init.h 01.05.01 01.05.01 01.03.01 01.02.07 01.02.07 01.02.07 720 mpi_init.h 01.05.01 01.05.01 01.03.01 01.02.07 01.02.07 01.02.07
692 mpi_targ.h 01.05.02 01.05.01 01.03.01 01.02.09 01.02.09 01.02.09 721 mpi_targ.h 01.05.02 01.05.01 01.03.01 01.02.09 01.02.09 01.02.09
693 mpi_fc.h 01.05.01 01.05.01 01.03.01 01.02.04 01.02.04 01.02.03 722 mpi_fc.h 01.05.01 01.05.01 01.03.01 01.02.04 01.02.04 01.02.03
694 mpi_lan.h 01.05.01 01.05.01 01.03.01 01.02.01 01.02.01 01.02.01 723 mpi_lan.h 01.05.01 01.05.01 01.03.01 01.02.01 01.02.01 01.02.01
695 mpi_raid.h 01.05.01 01.05.01 01.03.01 01.02.09 01.02.09 01.02.09 724 mpi_raid.h 01.05.01 01.05.01 01.03.01 01.02.09 01.02.09 01.02.09
696 mpi_tool.h 01.05.02 01.05.01 01.03.01 01.02.01 01.02.01 01.02.01 725 mpi_tool.h 01.05.02 01.05.01 01.03.01 01.02.01 01.02.01 01.02.01
697 mpi_inb.h 01.05.01 01.05.01 01.03.01 726 mpi_inb.h 01.05.01 01.05.01 01.03.01
698 mpi_sas.h 01.05.01 01.05.01 727 mpi_sas.h 01.05.01 01.05.01
699 mpi_type.h 01.05.01 01.05.01 01.03.01 01.02.04 01.02.03 01.02.02 728 mpi_type.h 01.05.01 01.05.01 01.03.01 01.02.04 01.02.03 01.02.02
700 729
701 Filename 01.02.11 01.02.10 01.02.09 01.02.08 01.02.07 01.02.06 730 Filename 01.02.11 01.02.10 01.02.09 01.02.08 01.02.07 01.02.06
702 ---------- -------- -------- -------- -------- -------- -------- 731 ---------- -------- -------- -------- -------- -------- --------
703 mpi.h 01.02.09 01.02.08 01.02.07 01.02.06 01.02.05 01.02.04 732 mpi.h 01.02.09 01.02.08 01.02.07 01.02.06 01.02.05 01.02.04
704 mpi_ioc.h 01.02.07 01.02.06 01.02.06 01.02.06 01.02.06 01.02.05 733 mpi_ioc.h 01.02.07 01.02.06 01.02.06 01.02.06 01.02.06 01.02.05
705 mpi_cnfg.h 01.02.11 01.02.10 01.02.09 01.02.08 01.02.07 01.02.06 734 mpi_cnfg.h 01.02.11 01.02.10 01.02.09 01.02.08 01.02.07 01.02.06
706 mpi_init.h 01.02.06 01.02.06 01.02.05 01.02.05 01.02.05 01.02.04 735 mpi_init.h 01.02.06 01.02.06 01.02.05 01.02.05 01.02.05 01.02.04
707 mpi_targ.h 01.02.09 01.02.08 01.02.07 01.02.06 01.02.06 01.02.05 736 mpi_targ.h 01.02.09 01.02.08 01.02.07 01.02.06 01.02.06 01.02.05
708 mpi_fc.h 01.02.03 01.02.03 01.02.03 01.02.03 01.02.03 01.02.02 737 mpi_fc.h 01.02.03 01.02.03 01.02.03 01.02.03 01.02.03 01.02.02
709 mpi_lan.h 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01 738 mpi_lan.h 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01
710 mpi_raid.h 01.02.09 01.02.08 01.02.07 01.02.07 01.02.06 01.02.05 739 mpi_raid.h 01.02.09 01.02.08 01.02.07 01.02.07 01.02.06 01.02.05
711 mpi_tool.h 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01 740 mpi_tool.h 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01
712 mpi_type.h 01.02.02 01.02.02 01.02.02 01.02.02 01.02.02 01.02.02 741 mpi_type.h 01.02.02 01.02.02 01.02.02 01.02.02 01.02.02 01.02.02
713 742
714 Filename 01.02.05 01.02.04 01.02.03 01.02.02 01.02.01 01.01.10 743 Filename 01.02.05 01.02.04 01.02.03 01.02.02 01.02.01 01.01.10
715 ---------- -------- -------- -------- -------- -------- -------- 744 ---------- -------- -------- -------- -------- -------- --------
716 mpi.h 01.02.03 01.02.02 01.02.02 01.02.01 01.02.01 01.01.07 745 mpi.h 01.02.03 01.02.02 01.02.02 01.02.01 01.02.01 01.01.07
717 mpi_ioc.h 01.02.04 01.02.03 01.02.03 01.02.02 01.02.01 01.01.07 746 mpi_ioc.h 01.02.04 01.02.03 01.02.03 01.02.02 01.02.01 01.01.07
718 mpi_cnfg.h 01.02.05 01.02.04 01.02.03 01.02.02 01.02.01 01.01.11 747 mpi_cnfg.h 01.02.05 01.02.04 01.02.03 01.02.02 01.02.01 01.01.11
719 mpi_init.h 01.02.04 01.02.04 01.02.03 01.02.02 01.02.01 01.01.05 748 mpi_init.h 01.02.04 01.02.04 01.02.03 01.02.02 01.02.01 01.01.05
720 mpi_targ.h 01.02.04 01.02.03 01.02.02 01.02.01 01.02.01 01.01.04 749 mpi_targ.h 01.02.04 01.02.03 01.02.02 01.02.01 01.02.01 01.01.04
721 mpi_fc.h 01.02.02 01.02.02 01.02.02 01.02.01 01.02.01 01.01.07 750 mpi_fc.h 01.02.02 01.02.02 01.02.02 01.02.01 01.02.01 01.01.07
722 mpi_lan.h 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01 01.01.03 751 mpi_lan.h 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01 01.01.03
723 mpi_raid.h 01.02.04 01.02.03 01.02.02 01.02.01 01.02.01 01.01.02 752 mpi_raid.h 01.02.04 01.02.03 01.02.02 01.02.01 01.02.01 01.01.02
724 mpi_tool.h 01.02.02 01.02.02 01.02.02 01.02.02 01.02.01 753 mpi_tool.h 01.02.02 01.02.02 01.02.02 01.02.02 01.02.01
725 mpi_type.h 01.02.02 01.02.02 01.02.02 01.02.02 01.02.01 01.01.02 754 mpi_type.h 01.02.02 01.02.02 01.02.02 01.02.02 01.02.01 01.01.02
726 755
727 Filename 01.01.09 01.01.08 01.01.07 01.01.06 01.01.05 01.01.04 756 Filename 01.01.09 01.01.08 01.01.07 01.01.06 01.01.05 01.01.04
728 ---------- -------- -------- -------- -------- -------- -------- 757 ---------- -------- -------- -------- -------- -------- --------
729 mpi.h 01.01.06 01.01.06 01.01.05 01.01.04 01.01.04 01.01.03 758 mpi.h 01.01.06 01.01.06 01.01.05 01.01.04 01.01.04 01.01.03
730 mpi_ioc.h 01.01.06 01.01.05 01.01.04 01.01.03 01.01.03 01.01.03 759 mpi_ioc.h 01.01.06 01.01.05 01.01.04 01.01.03 01.01.03 01.01.03
731 mpi_cnfg.h 01.01.10 01.01.09 01.01.08 01.01.07 01.01.06 01.01.05 760 mpi_cnfg.h 01.01.10 01.01.09 01.01.08 01.01.07 01.01.06 01.01.05
732 mpi_init.h 01.01.04 01.01.03 01.01.03 01.01.02 01.01.02 01.01.02 761 mpi_init.h 01.01.04 01.01.03 01.01.03 01.01.02 01.01.02 01.01.02
733 mpi_targ.h 01.01.04 01.01.03 01.01.03 01.01.02 01.01.02 01.01.02 762 mpi_targ.h 01.01.04 01.01.03 01.01.03 01.01.02 01.01.02 01.01.02
734 mpi_fc.h 01.01.06 01.01.05 01.01.05 01.01.04 01.01.04 01.01.03 763 mpi_fc.h 01.01.06 01.01.05 01.01.05 01.01.04 01.01.04 01.01.03
735 mpi_lan.h 01.01.03 01.01.02 01.01.02 01.01.01 01.01.01 01.01.01 764 mpi_lan.h 01.01.03 01.01.02 01.01.02 01.01.01 01.01.01 01.01.01
736 mpi_raid.h 01.01.02 01.01.01 765 mpi_raid.h 01.01.02 01.01.01
737 mpi_type.h 01.01.02 01.01.02 01.01.02 01.01.01 01.01.01 01.01.01 766 mpi_type.h 01.01.02 01.01.02 01.01.02 01.01.01 01.01.01 01.01.01
738 767
739 Filename 01.01.03 01.01.02 01.01.01 01.00.07 01.00.06 01.00.05 768 Filename 01.01.03 01.01.02 01.01.01 01.00.07 01.00.06 01.00.05
740 ---------- -------- -------- -------- -------- -------- -------- 769 ---------- -------- -------- -------- -------- -------- --------
741 mpi.h 01.01.02 01.01.02 01.01.01 01.00.04 01.00.04 01.00.03 770 mpi.h 01.01.02 01.01.02 01.01.01 01.00.04 01.00.04 01.00.03
742 mpi_ioc.h 01.01.02 01.01.02 01.01.01 01.00.05 01.00.04 01.00.03 771 mpi_ioc.h 01.01.02 01.01.02 01.01.01 01.00.05 01.00.04 01.00.03
743 mpi_cnfg.h 01.01.04 01.01.03 01.01.01 01.00.05 01.00.05 01.00.04 772 mpi_cnfg.h 01.01.04 01.01.03 01.01.01 01.00.05 01.00.05 01.00.04
744 mpi_init.h 01.01.02 01.01.02 01.01.01 01.00.02 01.00.02 01.00.02 773 mpi_init.h 01.01.02 01.01.02 01.01.01 01.00.02 01.00.02 01.00.02
745 mpi_targ.h 01.01.01 01.01.01 01.01.01 01.00.02 01.00.02 01.00.02 774 mpi_targ.h 01.01.01 01.01.01 01.01.01 01.00.02 01.00.02 01.00.02
746 mpi_fc.h 01.01.02 01.01.02 01.01.01 01.00.02 01.00.02 01.00.02 775 mpi_fc.h 01.01.02 01.01.02 01.01.01 01.00.02 01.00.02 01.00.02
747 mpi_lan.h 01.01.01 01.01.01 01.01.01 01.00.05 01.00.05 01.00.05 776 mpi_lan.h 01.01.01 01.01.01 01.01.01 01.00.05 01.00.05 01.00.05
748 mpi_type.h 01.01.01 01.01.01 01.01.01 01.00.01 01.00.01 01.00.01 777 mpi_type.h 01.01.01 01.01.01 01.01.01 01.00.01 01.00.01 01.00.01
749 778
750 Filename 01.00.04 01.00.03 01.00.02 01.00.01 00.10.02 00.10.01 779 Filename 01.00.04 01.00.03 01.00.02 01.00.01 00.10.02 00.10.01
751 ---------- -------- -------- -------- -------- -------- -------- 780 ---------- -------- -------- -------- -------- -------- --------
752 mpi.h 01.00.02 01.00.01 01.00.01 01.00.01 00.10.02 00.10.01 781 mpi.h 01.00.02 01.00.01 01.00.01 01.00.01 00.10.02 00.10.01
753 mpi_ioc.h 01.00.02 01.00.02 01.00.01 01.00.01 00.10.02 00.10.01 782 mpi_ioc.h 01.00.02 01.00.02 01.00.01 01.00.01 00.10.02 00.10.01
754 mpi_cnfg.h 01.00.03 01.00.02 01.00.02 01.00.01 00.10.01 00.10.01 783 mpi_cnfg.h 01.00.03 01.00.02 01.00.02 01.00.01 00.10.01 00.10.01
755 mpi_init.h 01.00.02 01.00.02 01.00.02 01.00.01 00.10.02 00.10.01 784 mpi_init.h 01.00.02 01.00.02 01.00.02 01.00.01 00.10.02 00.10.01
756 mpi_targ.h 01.00.02 01.00.01 01.00.01 01.00.01 00.10.01 00.10.01 785 mpi_targ.h 01.00.02 01.00.01 01.00.01 01.00.01 00.10.01 00.10.01
757 mpi_fc.h 01.00.02 01.00.02 01.00.01 01.00.01 00.10.01 00.10.01 786 mpi_fc.h 01.00.02 01.00.02 01.00.01 01.00.01 00.10.01 00.10.01
758 mpi_lan.h 01.00.03 01.00.02 01.00.01 01.00.01 00.10.02 00.10.01 787 mpi_lan.h 01.00.03 01.00.02 01.00.01 01.00.01 00.10.02 00.10.01
759 mpi_type.h 01.00.01 01.00.01 01.00.01 01.00.01 00.10.01 00.10.01 788 mpi_type.h 01.00.01 01.00.01 01.00.01 01.00.01 00.10.01 00.10.01
760 789
761 790
762 * -------------------------------------------------------------------------- 791 * --------------------------------------------------------------------------
763 792
764 793
drivers/message/fusion/lsi/mpi_init.h
1 /* 1 /*
2 * Copyright (c) 2000-2005 LSI Logic Corporation. 2 * Copyright (c) 2000-2006 LSI Logic Corporation.
3 * 3 *
4 * 4 *
5 * Name: mpi_init.h 5 * Name: mpi_init.h
6 * Title: MPI initiator mode messages and structures 6 * Title: MPI initiator mode messages and structures
7 * Creation Date: June 8, 2000 7 * Creation Date: June 8, 2000
8 * 8 *
9 * mpi_init.h Version: 01.05.07 9 * mpi_init.h Version: 01.05.08
10 * 10 *
11 * Version History 11 * Version History
12 * --------------- 12 * ---------------
13 * 13 *
14 * Date Version Description 14 * Date Version Description
15 * -------- -------- ------------------------------------------------------ 15 * -------- -------- ------------------------------------------------------
16 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000. 16 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000.
17 * 05-24-00 00.10.02 Added SenseBufferLength to _MSG_SCSI_IO_REPLY. 17 * 05-24-00 00.10.02 Added SenseBufferLength to _MSG_SCSI_IO_REPLY.
18 * 06-06-00 01.00.01 Update version number for 1.0 release. 18 * 06-06-00 01.00.01 Update version number for 1.0 release.
19 * 06-08-00 01.00.02 Added MPI_SCSI_RSP_INFO_ definitions. 19 * 06-08-00 01.00.02 Added MPI_SCSI_RSP_INFO_ definitions.
20 * 11-02-00 01.01.01 Original release for post 1.0 work. 20 * 11-02-00 01.01.01 Original release for post 1.0 work.
21 * 12-04-00 01.01.02 Added MPI_SCSIIO_CONTROL_NO_DISCONNECT. 21 * 12-04-00 01.01.02 Added MPI_SCSIIO_CONTROL_NO_DISCONNECT.
22 * 02-20-01 01.01.03 Started using MPI_POINTER. 22 * 02-20-01 01.01.03 Started using MPI_POINTER.
23 * 03-27-01 01.01.04 Added structure offset comments. 23 * 03-27-01 01.01.04 Added structure offset comments.
24 * 04-10-01 01.01.05 Added new MsgFlag for MSG_SCSI_TASK_MGMT. 24 * 04-10-01 01.01.05 Added new MsgFlag for MSG_SCSI_TASK_MGMT.
25 * 08-08-01 01.02.01 Original release for v1.2 work. 25 * 08-08-01 01.02.01 Original release for v1.2 work.
26 * 08-29-01 01.02.02 Added MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET. 26 * 08-29-01 01.02.02 Added MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET.
27 * Added MPI_SCSI_STATE_QUEUE_TAG_REJECTED for 27 * Added MPI_SCSI_STATE_QUEUE_TAG_REJECTED for
28 * MSG_SCSI_IO_REPLY. 28 * MSG_SCSI_IO_REPLY.
29 * 09-28-01 01.02.03 Added structures and defines for SCSI Enclosure 29 * 09-28-01 01.02.03 Added structures and defines for SCSI Enclosure
30 * Processor messages. 30 * Processor messages.
31 * 10-04-01 01.02.04 Added defines for SEP request Action field. 31 * 10-04-01 01.02.04 Added defines for SEP request Action field.
32 * 05-31-02 01.02.05 Added MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR define 32 * 05-31-02 01.02.05 Added MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR define
33 * for SCSI IO requests. 33 * for SCSI IO requests.
34 * 11-15-02 01.02.06 Added special extended SCSI Status defines for FCP. 34 * 11-15-02 01.02.06 Added special extended SCSI Status defines for FCP.
35 * 06-26-03 01.02.07 Added MPI_SCSI_STATUS_FCPEXT_UNASSIGNED define. 35 * 06-26-03 01.02.07 Added MPI_SCSI_STATUS_FCPEXT_UNASSIGNED define.
36 * 05-11-04 01.03.01 Original release for MPI v1.3. 36 * 05-11-04 01.03.01 Original release for MPI v1.3.
37 * 08-19-04 01.05.01 Added MsgFlags defines for EEDP to SCSI IO request. 37 * 08-19-04 01.05.01 Added MsgFlags defines for EEDP to SCSI IO request.
38 * Added new word to MSG_SCSI_IO_REPLY to add TaskTag field 38 * Added new word to MSG_SCSI_IO_REPLY to add TaskTag field
39 * and a reserved U16. 39 * and a reserved U16.
40 * Added new MSG_SCSI_IO32_REQUEST structure. 40 * Added new MSG_SCSI_IO32_REQUEST structure.
41 * Added a TaskType of Clear Task Set to SCSI 41 * Added a TaskType of Clear Task Set to SCSI
42 * Task Management request. 42 * Task Management request.
43 * 12-07-04 01.05.02 Added support for Task Management Query Task. 43 * 12-07-04 01.05.02 Added support for Task Management Query Task.
44 * 01-15-05 01.05.03 Modified SCSI Enclosure Processor Request to support 44 * 01-15-05 01.05.03 Modified SCSI Enclosure Processor Request to support
45 * WWID addressing. 45 * WWID addressing.
46 * 03-11-05 01.05.04 Removed EEDP flags from SCSI IO Request. 46 * 03-11-05 01.05.04 Removed EEDP flags from SCSI IO Request.
47 * Removed SCSI IO 32 Request. 47 * Removed SCSI IO 32 Request.
48 * Modified SCSI Enclosure Processor Request and Reply to 48 * Modified SCSI Enclosure Processor Request and Reply to
49 * support Enclosure/Slot addressing rather than WWID 49 * support Enclosure/Slot addressing rather than WWID
50 * addressing. 50 * addressing.
51 * 06-24-05 01.05.05 Added SCSI IO 32 structures and defines. 51 * 06-24-05 01.05.05 Added SCSI IO 32 structures and defines.
52 * Added four new defines for SEP SlotStatus. 52 * Added four new defines for SEP SlotStatus.
53 * 08-03-05 01.05.06 Fixed some MPI_SCSIIO32_MSGFLGS_ defines to make them 53 * 08-03-05 01.05.06 Fixed some MPI_SCSIIO32_MSGFLGS_ defines to make them
54 * unique in the first 32 characters. 54 * unique in the first 32 characters.
55 * 03-27-06 01.05.07 Added Task Management type of Clear ACA. 55 * 03-27-06 01.05.07 Added Task Management type of Clear ACA.
56 * 10-11-06 01.05.08 Shortened define for Task Management type of Clear ACA.
56 * -------------------------------------------------------------------------- 57 * --------------------------------------------------------------------------
57 */ 58 */
58 59
59 #ifndef MPI_INIT_H 60 #ifndef MPI_INIT_H
60 #define MPI_INIT_H 61 #define MPI_INIT_H
61 62
62 63
63 /***************************************************************************** 64 /*****************************************************************************
64 * 65 *
65 * S C S I I n i t i a t o r M e s s a g e s 66 * S C S I I n i t i a t o r M e s s a g e s
66 * 67 *
67 *****************************************************************************/ 68 *****************************************************************************/
68 69
69 /****************************************************************************/ 70 /****************************************************************************/
70 /* SCSI IO messages and associated structures */ 71 /* SCSI IO messages and associated structures */
71 /****************************************************************************/ 72 /****************************************************************************/
72 73
73 typedef struct _MSG_SCSI_IO_REQUEST 74 typedef struct _MSG_SCSI_IO_REQUEST
74 { 75 {
75 U8 TargetID; /* 00h */ 76 U8 TargetID; /* 00h */
76 U8 Bus; /* 01h */ 77 U8 Bus; /* 01h */
77 U8 ChainOffset; /* 02h */ 78 U8 ChainOffset; /* 02h */
78 U8 Function; /* 03h */ 79 U8 Function; /* 03h */
79 U8 CDBLength; /* 04h */ 80 U8 CDBLength; /* 04h */
80 U8 SenseBufferLength; /* 05h */ 81 U8 SenseBufferLength; /* 05h */
81 U8 Reserved; /* 06h */ 82 U8 Reserved; /* 06h */
82 U8 MsgFlags; /* 07h */ 83 U8 MsgFlags; /* 07h */
83 U32 MsgContext; /* 08h */ 84 U32 MsgContext; /* 08h */
84 U8 LUN[8]; /* 0Ch */ 85 U8 LUN[8]; /* 0Ch */
85 U32 Control; /* 14h */ 86 U32 Control; /* 14h */
86 U8 CDB[16]; /* 18h */ 87 U8 CDB[16]; /* 18h */
87 U32 DataLength; /* 28h */ 88 U32 DataLength; /* 28h */
88 U32 SenseBufferLowAddr; /* 2Ch */ 89 U32 SenseBufferLowAddr; /* 2Ch */
89 SGE_IO_UNION SGL; /* 30h */ 90 SGE_IO_UNION SGL; /* 30h */
90 } MSG_SCSI_IO_REQUEST, MPI_POINTER PTR_MSG_SCSI_IO_REQUEST, 91 } MSG_SCSI_IO_REQUEST, MPI_POINTER PTR_MSG_SCSI_IO_REQUEST,
91 SCSIIORequest_t, MPI_POINTER pSCSIIORequest_t; 92 SCSIIORequest_t, MPI_POINTER pSCSIIORequest_t;
92 93
93 94
94 /* SCSI IO MsgFlags bits */ 95 /* SCSI IO MsgFlags bits */
95 96
96 #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH (0x01) 97 #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH (0x01)
97 #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH_32 (0x00) 98 #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH_32 (0x00)
98 #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH_64 (0x01) 99 #define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH_64 (0x01)
99 100
100 #define MPI_SCSIIO_MSGFLGS_SENSE_LOCATION (0x02) 101 #define MPI_SCSIIO_MSGFLGS_SENSE_LOCATION (0x02)
101 #define MPI_SCSIIO_MSGFLGS_SENSE_LOC_HOST (0x00) 102 #define MPI_SCSIIO_MSGFLGS_SENSE_LOC_HOST (0x00)
102 #define MPI_SCSIIO_MSGFLGS_SENSE_LOC_IOC (0x02) 103 #define MPI_SCSIIO_MSGFLGS_SENSE_LOC_IOC (0x02)
103 104
104 #define MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR (0x04) 105 #define MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR (0x04)
105 106
106 /* SCSI IO LUN fields */ 107 /* SCSI IO LUN fields */
107 108
108 #define MPI_SCSIIO_LUN_FIRST_LEVEL_ADDRESSING (0x0000FFFF) 109 #define MPI_SCSIIO_LUN_FIRST_LEVEL_ADDRESSING (0x0000FFFF)
109 #define MPI_SCSIIO_LUN_SECOND_LEVEL_ADDRESSING (0xFFFF0000) 110 #define MPI_SCSIIO_LUN_SECOND_LEVEL_ADDRESSING (0xFFFF0000)
110 #define MPI_SCSIIO_LUN_THIRD_LEVEL_ADDRESSING (0x0000FFFF) 111 #define MPI_SCSIIO_LUN_THIRD_LEVEL_ADDRESSING (0x0000FFFF)
111 #define MPI_SCSIIO_LUN_FOURTH_LEVEL_ADDRESSING (0xFFFF0000) 112 #define MPI_SCSIIO_LUN_FOURTH_LEVEL_ADDRESSING (0xFFFF0000)
112 #define MPI_SCSIIO_LUN_LEVEL_1_WORD (0xFF00) 113 #define MPI_SCSIIO_LUN_LEVEL_1_WORD (0xFF00)
113 #define MPI_SCSIIO_LUN_LEVEL_1_DWORD (0x0000FF00) 114 #define MPI_SCSIIO_LUN_LEVEL_1_DWORD (0x0000FF00)
114 115
115 /* SCSI IO Control bits */ 116 /* SCSI IO Control bits */
116 117
117 #define MPI_SCSIIO_CONTROL_DATADIRECTION_MASK (0x03000000) 118 #define MPI_SCSIIO_CONTROL_DATADIRECTION_MASK (0x03000000)
118 #define MPI_SCSIIO_CONTROL_NODATATRANSFER (0x00000000) 119 #define MPI_SCSIIO_CONTROL_NODATATRANSFER (0x00000000)
119 #define MPI_SCSIIO_CONTROL_WRITE (0x01000000) 120 #define MPI_SCSIIO_CONTROL_WRITE (0x01000000)
120 #define MPI_SCSIIO_CONTROL_READ (0x02000000) 121 #define MPI_SCSIIO_CONTROL_READ (0x02000000)
121 122
122 #define MPI_SCSIIO_CONTROL_ADDCDBLEN_MASK (0x3C000000) 123 #define MPI_SCSIIO_CONTROL_ADDCDBLEN_MASK (0x3C000000)
123 #define MPI_SCSIIO_CONTROL_ADDCDBLEN_SHIFT (26) 124 #define MPI_SCSIIO_CONTROL_ADDCDBLEN_SHIFT (26)
124 125
125 #define MPI_SCSIIO_CONTROL_TASKATTRIBUTE_MASK (0x00000700) 126 #define MPI_SCSIIO_CONTROL_TASKATTRIBUTE_MASK (0x00000700)
126 #define MPI_SCSIIO_CONTROL_SIMPLEQ (0x00000000) 127 #define MPI_SCSIIO_CONTROL_SIMPLEQ (0x00000000)
127 #define MPI_SCSIIO_CONTROL_HEADOFQ (0x00000100) 128 #define MPI_SCSIIO_CONTROL_HEADOFQ (0x00000100)
128 #define MPI_SCSIIO_CONTROL_ORDEREDQ (0x00000200) 129 #define MPI_SCSIIO_CONTROL_ORDEREDQ (0x00000200)
129 #define MPI_SCSIIO_CONTROL_ACAQ (0x00000400) 130 #define MPI_SCSIIO_CONTROL_ACAQ (0x00000400)
130 #define MPI_SCSIIO_CONTROL_UNTAGGED (0x00000500) 131 #define MPI_SCSIIO_CONTROL_UNTAGGED (0x00000500)
131 #define MPI_SCSIIO_CONTROL_NO_DISCONNECT (0x00000700) 132 #define MPI_SCSIIO_CONTROL_NO_DISCONNECT (0x00000700)
132 133
133 #define MPI_SCSIIO_CONTROL_TASKMANAGE_MASK (0x00FF0000) 134 #define MPI_SCSIIO_CONTROL_TASKMANAGE_MASK (0x00FF0000)
134 #define MPI_SCSIIO_CONTROL_OBSOLETE (0x00800000) 135 #define MPI_SCSIIO_CONTROL_OBSOLETE (0x00800000)
135 #define MPI_SCSIIO_CONTROL_CLEAR_ACA_RSV (0x00400000) 136 #define MPI_SCSIIO_CONTROL_CLEAR_ACA_RSV (0x00400000)
136 #define MPI_SCSIIO_CONTROL_TARGET_RESET (0x00200000) 137 #define MPI_SCSIIO_CONTROL_TARGET_RESET (0x00200000)
137 #define MPI_SCSIIO_CONTROL_LUN_RESET_RSV (0x00100000) 138 #define MPI_SCSIIO_CONTROL_LUN_RESET_RSV (0x00100000)
138 #define MPI_SCSIIO_CONTROL_RESERVED (0x00080000) 139 #define MPI_SCSIIO_CONTROL_RESERVED (0x00080000)
139 #define MPI_SCSIIO_CONTROL_CLR_TASK_SET_RSV (0x00040000) 140 #define MPI_SCSIIO_CONTROL_CLR_TASK_SET_RSV (0x00040000)
140 #define MPI_SCSIIO_CONTROL_ABORT_TASK_SET (0x00020000) 141 #define MPI_SCSIIO_CONTROL_ABORT_TASK_SET (0x00020000)
141 #define MPI_SCSIIO_CONTROL_RESERVED2 (0x00010000) 142 #define MPI_SCSIIO_CONTROL_RESERVED2 (0x00010000)
142 143
143 144
144 /* SCSI IO reply structure */ 145 /* SCSI IO reply structure */
145 typedef struct _MSG_SCSI_IO_REPLY 146 typedef struct _MSG_SCSI_IO_REPLY
146 { 147 {
147 U8 TargetID; /* 00h */ 148 U8 TargetID; /* 00h */
148 U8 Bus; /* 01h */ 149 U8 Bus; /* 01h */
149 U8 MsgLength; /* 02h */ 150 U8 MsgLength; /* 02h */
150 U8 Function; /* 03h */ 151 U8 Function; /* 03h */
151 U8 CDBLength; /* 04h */ 152 U8 CDBLength; /* 04h */
152 U8 SenseBufferLength; /* 05h */ 153 U8 SenseBufferLength; /* 05h */
153 U8 Reserved; /* 06h */ 154 U8 Reserved; /* 06h */
154 U8 MsgFlags; /* 07h */ 155 U8 MsgFlags; /* 07h */
155 U32 MsgContext; /* 08h */ 156 U32 MsgContext; /* 08h */
156 U8 SCSIStatus; /* 0Ch */ 157 U8 SCSIStatus; /* 0Ch */
157 U8 SCSIState; /* 0Dh */ 158 U8 SCSIState; /* 0Dh */
158 U16 IOCStatus; /* 0Eh */ 159 U16 IOCStatus; /* 0Eh */
159 U32 IOCLogInfo; /* 10h */ 160 U32 IOCLogInfo; /* 10h */
160 U32 TransferCount; /* 14h */ 161 U32 TransferCount; /* 14h */
161 U32 SenseCount; /* 18h */ 162 U32 SenseCount; /* 18h */
162 U32 ResponseInfo; /* 1Ch */ 163 U32 ResponseInfo; /* 1Ch */
163 U16 TaskTag; /* 20h */ 164 U16 TaskTag; /* 20h */
164 U16 Reserved1; /* 22h */ 165 U16 Reserved1; /* 22h */
165 } MSG_SCSI_IO_REPLY, MPI_POINTER PTR_MSG_SCSI_IO_REPLY, 166 } MSG_SCSI_IO_REPLY, MPI_POINTER PTR_MSG_SCSI_IO_REPLY,
166 SCSIIOReply_t, MPI_POINTER pSCSIIOReply_t; 167 SCSIIOReply_t, MPI_POINTER pSCSIIOReply_t;
167 168
168 169
169 /* SCSI IO Reply SCSIStatus values (SAM-2 status codes) */ 170 /* SCSI IO Reply SCSIStatus values (SAM-2 status codes) */
170 171
171 #define MPI_SCSI_STATUS_SUCCESS (0x00) 172 #define MPI_SCSI_STATUS_SUCCESS (0x00)
172 #define MPI_SCSI_STATUS_CHECK_CONDITION (0x02) 173 #define MPI_SCSI_STATUS_CHECK_CONDITION (0x02)
173 #define MPI_SCSI_STATUS_CONDITION_MET (0x04) 174 #define MPI_SCSI_STATUS_CONDITION_MET (0x04)
174 #define MPI_SCSI_STATUS_BUSY (0x08) 175 #define MPI_SCSI_STATUS_BUSY (0x08)
175 #define MPI_SCSI_STATUS_INTERMEDIATE (0x10) 176 #define MPI_SCSI_STATUS_INTERMEDIATE (0x10)
176 #define MPI_SCSI_STATUS_INTERMEDIATE_CONDMET (0x14) 177 #define MPI_SCSI_STATUS_INTERMEDIATE_CONDMET (0x14)
177 #define MPI_SCSI_STATUS_RESERVATION_CONFLICT (0x18) 178 #define MPI_SCSI_STATUS_RESERVATION_CONFLICT (0x18)
178 #define MPI_SCSI_STATUS_COMMAND_TERMINATED (0x22) 179 #define MPI_SCSI_STATUS_COMMAND_TERMINATED (0x22)
179 #define MPI_SCSI_STATUS_TASK_SET_FULL (0x28) 180 #define MPI_SCSI_STATUS_TASK_SET_FULL (0x28)
180 #define MPI_SCSI_STATUS_ACA_ACTIVE (0x30) 181 #define MPI_SCSI_STATUS_ACA_ACTIVE (0x30)
181 182
182 #define MPI_SCSI_STATUS_FCPEXT_DEVICE_LOGGED_OUT (0x80) 183 #define MPI_SCSI_STATUS_FCPEXT_DEVICE_LOGGED_OUT (0x80)
183 #define MPI_SCSI_STATUS_FCPEXT_NO_LINK (0x81) 184 #define MPI_SCSI_STATUS_FCPEXT_NO_LINK (0x81)
184 #define MPI_SCSI_STATUS_FCPEXT_UNASSIGNED (0x82) 185 #define MPI_SCSI_STATUS_FCPEXT_UNASSIGNED (0x82)
185 186
186 187
187 /* SCSI IO Reply SCSIState values */ 188 /* SCSI IO Reply SCSIState values */
188 189
189 #define MPI_SCSI_STATE_AUTOSENSE_VALID (0x01) 190 #define MPI_SCSI_STATE_AUTOSENSE_VALID (0x01)
190 #define MPI_SCSI_STATE_AUTOSENSE_FAILED (0x02) 191 #define MPI_SCSI_STATE_AUTOSENSE_FAILED (0x02)
191 #define MPI_SCSI_STATE_NO_SCSI_STATUS (0x04) 192 #define MPI_SCSI_STATE_NO_SCSI_STATUS (0x04)
192 #define MPI_SCSI_STATE_TERMINATED (0x08) 193 #define MPI_SCSI_STATE_TERMINATED (0x08)
193 #define MPI_SCSI_STATE_RESPONSE_INFO_VALID (0x10) 194 #define MPI_SCSI_STATE_RESPONSE_INFO_VALID (0x10)
194 #define MPI_SCSI_STATE_QUEUE_TAG_REJECTED (0x20) 195 #define MPI_SCSI_STATE_QUEUE_TAG_REJECTED (0x20)
195 196
196 /* SCSI IO Reply ResponseInfo values */ 197 /* SCSI IO Reply ResponseInfo values */
197 /* (FCP-1 RSP_CODE values and SPI-3 Packetized Failure codes) */ 198 /* (FCP-1 RSP_CODE values and SPI-3 Packetized Failure codes) */
198 199
199 #define MPI_SCSI_RSP_INFO_FUNCTION_COMPLETE (0x00000000) 200 #define MPI_SCSI_RSP_INFO_FUNCTION_COMPLETE (0x00000000)
200 #define MPI_SCSI_RSP_INFO_FCP_BURST_LEN_ERROR (0x01000000) 201 #define MPI_SCSI_RSP_INFO_FCP_BURST_LEN_ERROR (0x01000000)
201 #define MPI_SCSI_RSP_INFO_CMND_FIELDS_INVALID (0x02000000) 202 #define MPI_SCSI_RSP_INFO_CMND_FIELDS_INVALID (0x02000000)
202 #define MPI_SCSI_RSP_INFO_FCP_DATA_RO_ERROR (0x03000000) 203 #define MPI_SCSI_RSP_INFO_FCP_DATA_RO_ERROR (0x03000000)
203 #define MPI_SCSI_RSP_INFO_TASK_MGMT_UNSUPPORTED (0x04000000) 204 #define MPI_SCSI_RSP_INFO_TASK_MGMT_UNSUPPORTED (0x04000000)
204 #define MPI_SCSI_RSP_INFO_TASK_MGMT_FAILED (0x05000000) 205 #define MPI_SCSI_RSP_INFO_TASK_MGMT_FAILED (0x05000000)
205 #define MPI_SCSI_RSP_INFO_SPI_LQ_INVALID_TYPE (0x06000000) 206 #define MPI_SCSI_RSP_INFO_SPI_LQ_INVALID_TYPE (0x06000000)
206 207
207 #define MPI_SCSI_TASKTAG_UNKNOWN (0xFFFF) 208 #define MPI_SCSI_TASKTAG_UNKNOWN (0xFFFF)
208 209
209 210
210 /****************************************************************************/ 211 /****************************************************************************/
211 /* SCSI IO 32 messages and associated structures */ 212 /* SCSI IO 32 messages and associated structures */
212 /****************************************************************************/ 213 /****************************************************************************/
213 214
214 typedef struct 215 typedef struct
215 { 216 {
216 U8 CDB[20]; /* 00h */ 217 U8 CDB[20]; /* 00h */
217 U32 PrimaryReferenceTag; /* 14h */ 218 U32 PrimaryReferenceTag; /* 14h */
218 U16 PrimaryApplicationTag; /* 18h */ 219 U16 PrimaryApplicationTag; /* 18h */
219 U16 PrimaryApplicationTagMask; /* 1Ah */ 220 U16 PrimaryApplicationTagMask; /* 1Ah */
220 U32 TransferLength; /* 1Ch */ 221 U32 TransferLength; /* 1Ch */
221 } MPI_SCSI_IO32_CDB_EEDP32, MPI_POINTER PTR_MPI_SCSI_IO32_CDB_EEDP32, 222 } MPI_SCSI_IO32_CDB_EEDP32, MPI_POINTER PTR_MPI_SCSI_IO32_CDB_EEDP32,
222 MpiScsiIo32CdbEedp32_t, MPI_POINTER pMpiScsiIo32CdbEedp32_t; 223 MpiScsiIo32CdbEedp32_t, MPI_POINTER pMpiScsiIo32CdbEedp32_t;
223 224
224 typedef struct 225 typedef struct
225 { 226 {
226 U8 CDB[16]; /* 00h */ 227 U8 CDB[16]; /* 00h */
227 U32 DataLength; /* 10h */ 228 U32 DataLength; /* 10h */
228 U32 PrimaryReferenceTag; /* 14h */ 229 U32 PrimaryReferenceTag; /* 14h */
229 U16 PrimaryApplicationTag; /* 18h */ 230 U16 PrimaryApplicationTag; /* 18h */
230 U16 PrimaryApplicationTagMask; /* 1Ah */ 231 U16 PrimaryApplicationTagMask; /* 1Ah */
231 U32 TransferLength; /* 1Ch */ 232 U32 TransferLength; /* 1Ch */
232 } MPI_SCSI_IO32_CDB_EEDP16, MPI_POINTER PTR_MPI_SCSI_IO32_CDB_EEDP16, 233 } MPI_SCSI_IO32_CDB_EEDP16, MPI_POINTER PTR_MPI_SCSI_IO32_CDB_EEDP16,
233 MpiScsiIo32CdbEedp16_t, MPI_POINTER pMpiScsiIo32CdbEedp16_t; 234 MpiScsiIo32CdbEedp16_t, MPI_POINTER pMpiScsiIo32CdbEedp16_t;
234 235
235 typedef union 236 typedef union
236 { 237 {
237 U8 CDB32[32]; 238 U8 CDB32[32];
238 MPI_SCSI_IO32_CDB_EEDP32 EEDP32; 239 MPI_SCSI_IO32_CDB_EEDP32 EEDP32;
239 MPI_SCSI_IO32_CDB_EEDP16 EEDP16; 240 MPI_SCSI_IO32_CDB_EEDP16 EEDP16;
240 SGE_SIMPLE_UNION SGE; 241 SGE_SIMPLE_UNION SGE;
241 } MPI_SCSI_IO32_CDB_UNION, MPI_POINTER PTR_MPI_SCSI_IO32_CDB_UNION, 242 } MPI_SCSI_IO32_CDB_UNION, MPI_POINTER PTR_MPI_SCSI_IO32_CDB_UNION,
242 MpiScsiIo32Cdb_t, MPI_POINTER pMpiScsiIo32Cdb_t; 243 MpiScsiIo32Cdb_t, MPI_POINTER pMpiScsiIo32Cdb_t;
243 244
244 typedef struct 245 typedef struct
245 { 246 {
246 U8 TargetID; /* 00h */ 247 U8 TargetID; /* 00h */
247 U8 Bus; /* 01h */ 248 U8 Bus; /* 01h */
248 U16 Reserved1; /* 02h */ 249 U16 Reserved1; /* 02h */
249 U32 Reserved2; /* 04h */ 250 U32 Reserved2; /* 04h */
250 } MPI_SCSI_IO32_BUS_TARGET_ID_FORM, MPI_POINTER PTR_MPI_SCSI_IO32_BUS_TARGET_ID_FORM, 251 } MPI_SCSI_IO32_BUS_TARGET_ID_FORM, MPI_POINTER PTR_MPI_SCSI_IO32_BUS_TARGET_ID_FORM,
251 MpiScsiIo32BusTargetIdForm_t, MPI_POINTER pMpiScsiIo32BusTargetIdForm_t; 252 MpiScsiIo32BusTargetIdForm_t, MPI_POINTER pMpiScsiIo32BusTargetIdForm_t;
252 253
253 typedef union 254 typedef union
254 { 255 {
255 MPI_SCSI_IO32_BUS_TARGET_ID_FORM SCSIID; 256 MPI_SCSI_IO32_BUS_TARGET_ID_FORM SCSIID;
256 U64 WWID; 257 U64 WWID;
257 } MPI_SCSI_IO32_ADDRESS, MPI_POINTER PTR_MPI_SCSI_IO32_ADDRESS, 258 } MPI_SCSI_IO32_ADDRESS, MPI_POINTER PTR_MPI_SCSI_IO32_ADDRESS,
258 MpiScsiIo32Address_t, MPI_POINTER pMpiScsiIo32Address_t; 259 MpiScsiIo32Address_t, MPI_POINTER pMpiScsiIo32Address_t;
259 260
260 typedef struct _MSG_SCSI_IO32_REQUEST 261 typedef struct _MSG_SCSI_IO32_REQUEST
261 { 262 {
262 U8 Port; /* 00h */ 263 U8 Port; /* 00h */
263 U8 Reserved1; /* 01h */ 264 U8 Reserved1; /* 01h */
264 U8 ChainOffset; /* 02h */ 265 U8 ChainOffset; /* 02h */
265 U8 Function; /* 03h */ 266 U8 Function; /* 03h */
266 U8 CDBLength; /* 04h */ 267 U8 CDBLength; /* 04h */
267 U8 SenseBufferLength; /* 05h */ 268 U8 SenseBufferLength; /* 05h */
268 U8 Flags; /* 06h */ 269 U8 Flags; /* 06h */
269 U8 MsgFlags; /* 07h */ 270 U8 MsgFlags; /* 07h */
270 U32 MsgContext; /* 08h */ 271 U32 MsgContext; /* 08h */
271 U8 LUN[8]; /* 0Ch */ 272 U8 LUN[8]; /* 0Ch */
272 U32 Control; /* 14h */ 273 U32 Control; /* 14h */
273 MPI_SCSI_IO32_CDB_UNION CDB; /* 18h */ 274 MPI_SCSI_IO32_CDB_UNION CDB; /* 18h */
274 U32 DataLength; /* 38h */ 275 U32 DataLength; /* 38h */
275 U32 BidirectionalDataLength; /* 3Ch */ 276 U32 BidirectionalDataLength; /* 3Ch */
276 U32 SecondaryReferenceTag; /* 40h */ 277 U32 SecondaryReferenceTag; /* 40h */
277 U16 SecondaryApplicationTag; /* 44h */ 278 U16 SecondaryApplicationTag; /* 44h */
278 U16 Reserved2; /* 46h */ 279 U16 Reserved2; /* 46h */
279 U16 EEDPFlags; /* 48h */ 280 U16 EEDPFlags; /* 48h */
280 U16 ApplicationTagTranslationMask; /* 4Ah */ 281 U16 ApplicationTagTranslationMask; /* 4Ah */
281 U32 EEDPBlockSize; /* 4Ch */ 282 U32 EEDPBlockSize; /* 4Ch */
282 MPI_SCSI_IO32_ADDRESS DeviceAddress; /* 50h */ 283 MPI_SCSI_IO32_ADDRESS DeviceAddress; /* 50h */
283 U8 SGLOffset0; /* 58h */ 284 U8 SGLOffset0; /* 58h */
284 U8 SGLOffset1; /* 59h */ 285 U8 SGLOffset1; /* 59h */
285 U8 SGLOffset2; /* 5Ah */ 286 U8 SGLOffset2; /* 5Ah */
286 U8 SGLOffset3; /* 5Bh */ 287 U8 SGLOffset3; /* 5Bh */
287 U32 Reserved3; /* 5Ch */ 288 U32 Reserved3; /* 5Ch */
288 U32 Reserved4; /* 60h */ 289 U32 Reserved4; /* 60h */
289 U32 SenseBufferLowAddr; /* 64h */ 290 U32 SenseBufferLowAddr; /* 64h */
290 SGE_IO_UNION SGL; /* 68h */ 291 SGE_IO_UNION SGL; /* 68h */
291 } MSG_SCSI_IO32_REQUEST, MPI_POINTER PTR_MSG_SCSI_IO32_REQUEST, 292 } MSG_SCSI_IO32_REQUEST, MPI_POINTER PTR_MSG_SCSI_IO32_REQUEST,
292 SCSIIO32Request_t, MPI_POINTER pSCSIIO32Request_t; 293 SCSIIO32Request_t, MPI_POINTER pSCSIIO32Request_t;
293 294
294 /* SCSI IO 32 MsgFlags bits */ 295 /* SCSI IO 32 MsgFlags bits */
295 #define MPI_SCSIIO32_MSGFLGS_SENSE_WIDTH (0x01) 296 #define MPI_SCSIIO32_MSGFLGS_SENSE_WIDTH (0x01)
296 #define MPI_SCSIIO32_MSGFLGS_32_SENSE_WIDTH (0x00) 297 #define MPI_SCSIIO32_MSGFLGS_32_SENSE_WIDTH (0x00)
297 #define MPI_SCSIIO32_MSGFLGS_64_SENSE_WIDTH (0x01) 298 #define MPI_SCSIIO32_MSGFLGS_64_SENSE_WIDTH (0x01)
298 299
299 #define MPI_SCSIIO32_MSGFLGS_SENSE_LOCATION (0x02) 300 #define MPI_SCSIIO32_MSGFLGS_SENSE_LOCATION (0x02)
300 #define MPI_SCSIIO32_MSGFLGS_SENSE_LOC_HOST (0x00) 301 #define MPI_SCSIIO32_MSGFLGS_SENSE_LOC_HOST (0x00)
301 #define MPI_SCSIIO32_MSGFLGS_SENSE_LOC_IOC (0x02) 302 #define MPI_SCSIIO32_MSGFLGS_SENSE_LOC_IOC (0x02)
302 303
303 #define MPI_SCSIIO32_MSGFLGS_CMD_DETERMINES_DATA_DIR (0x04) 304 #define MPI_SCSIIO32_MSGFLGS_CMD_DETERMINES_DATA_DIR (0x04)
304 #define MPI_SCSIIO32_MSGFLGS_SGL_OFFSETS_CHAINS (0x08) 305 #define MPI_SCSIIO32_MSGFLGS_SGL_OFFSETS_CHAINS (0x08)
305 #define MPI_SCSIIO32_MSGFLGS_MULTICAST (0x10) 306 #define MPI_SCSIIO32_MSGFLGS_MULTICAST (0x10)
306 #define MPI_SCSIIO32_MSGFLGS_BIDIRECTIONAL (0x20) 307 #define MPI_SCSIIO32_MSGFLGS_BIDIRECTIONAL (0x20)
307 #define MPI_SCSIIO32_MSGFLGS_LARGE_CDB (0x40) 308 #define MPI_SCSIIO32_MSGFLGS_LARGE_CDB (0x40)
308 309
309 /* SCSI IO 32 Flags bits */ 310 /* SCSI IO 32 Flags bits */
310 #define MPI_SCSIIO32_FLAGS_FORM_MASK (0x03) 311 #define MPI_SCSIIO32_FLAGS_FORM_MASK (0x03)
311 #define MPI_SCSIIO32_FLAGS_FORM_SCSIID (0x00) 312 #define MPI_SCSIIO32_FLAGS_FORM_SCSIID (0x00)
312 #define MPI_SCSIIO32_FLAGS_FORM_WWID (0x01) 313 #define MPI_SCSIIO32_FLAGS_FORM_WWID (0x01)
313 314
314 /* SCSI IO 32 LUN fields */ 315 /* SCSI IO 32 LUN fields */
315 #define MPI_SCSIIO32_LUN_FIRST_LEVEL_ADDRESSING (0x0000FFFF) 316 #define MPI_SCSIIO32_LUN_FIRST_LEVEL_ADDRESSING (0x0000FFFF)
316 #define MPI_SCSIIO32_LUN_SECOND_LEVEL_ADDRESSING (0xFFFF0000) 317 #define MPI_SCSIIO32_LUN_SECOND_LEVEL_ADDRESSING (0xFFFF0000)
317 #define MPI_SCSIIO32_LUN_THIRD_LEVEL_ADDRESSING (0x0000FFFF) 318 #define MPI_SCSIIO32_LUN_THIRD_LEVEL_ADDRESSING (0x0000FFFF)
318 #define MPI_SCSIIO32_LUN_FOURTH_LEVEL_ADDRESSING (0xFFFF0000) 319 #define MPI_SCSIIO32_LUN_FOURTH_LEVEL_ADDRESSING (0xFFFF0000)
319 #define MPI_SCSIIO32_LUN_LEVEL_1_WORD (0xFF00) 320 #define MPI_SCSIIO32_LUN_LEVEL_1_WORD (0xFF00)
320 #define MPI_SCSIIO32_LUN_LEVEL_1_DWORD (0x0000FF00) 321 #define MPI_SCSIIO32_LUN_LEVEL_1_DWORD (0x0000FF00)
321 322
322 /* SCSI IO 32 Control bits */ 323 /* SCSI IO 32 Control bits */
323 #define MPI_SCSIIO32_CONTROL_DATADIRECTION_MASK (0x03000000) 324 #define MPI_SCSIIO32_CONTROL_DATADIRECTION_MASK (0x03000000)
324 #define MPI_SCSIIO32_CONTROL_NODATATRANSFER (0x00000000) 325 #define MPI_SCSIIO32_CONTROL_NODATATRANSFER (0x00000000)
325 #define MPI_SCSIIO32_CONTROL_WRITE (0x01000000) 326 #define MPI_SCSIIO32_CONTROL_WRITE (0x01000000)
326 #define MPI_SCSIIO32_CONTROL_READ (0x02000000) 327 #define MPI_SCSIIO32_CONTROL_READ (0x02000000)
327 #define MPI_SCSIIO32_CONTROL_BIDIRECTIONAL (0x03000000) 328 #define MPI_SCSIIO32_CONTROL_BIDIRECTIONAL (0x03000000)
328 329
329 #define MPI_SCSIIO32_CONTROL_ADDCDBLEN_MASK (0xFC000000) 330 #define MPI_SCSIIO32_CONTROL_ADDCDBLEN_MASK (0xFC000000)
330 #define MPI_SCSIIO32_CONTROL_ADDCDBLEN_SHIFT (26) 331 #define MPI_SCSIIO32_CONTROL_ADDCDBLEN_SHIFT (26)
331 332
332 #define MPI_SCSIIO32_CONTROL_TASKATTRIBUTE_MASK (0x00000700) 333 #define MPI_SCSIIO32_CONTROL_TASKATTRIBUTE_MASK (0x00000700)
333 #define MPI_SCSIIO32_CONTROL_SIMPLEQ (0x00000000) 334 #define MPI_SCSIIO32_CONTROL_SIMPLEQ (0x00000000)
334 #define MPI_SCSIIO32_CONTROL_HEADOFQ (0x00000100) 335 #define MPI_SCSIIO32_CONTROL_HEADOFQ (0x00000100)
335 #define MPI_SCSIIO32_CONTROL_ORDEREDQ (0x00000200) 336 #define MPI_SCSIIO32_CONTROL_ORDEREDQ (0x00000200)
336 #define MPI_SCSIIO32_CONTROL_ACAQ (0x00000400) 337 #define MPI_SCSIIO32_CONTROL_ACAQ (0x00000400)
337 #define MPI_SCSIIO32_CONTROL_UNTAGGED (0x00000500) 338 #define MPI_SCSIIO32_CONTROL_UNTAGGED (0x00000500)
338 #define MPI_SCSIIO32_CONTROL_NO_DISCONNECT (0x00000700) 339 #define MPI_SCSIIO32_CONTROL_NO_DISCONNECT (0x00000700)
339 340
340 #define MPI_SCSIIO32_CONTROL_TASKMANAGE_MASK (0x00FF0000) 341 #define MPI_SCSIIO32_CONTROL_TASKMANAGE_MASK (0x00FF0000)
341 #define MPI_SCSIIO32_CONTROL_OBSOLETE (0x00800000) 342 #define MPI_SCSIIO32_CONTROL_OBSOLETE (0x00800000)
342 #define MPI_SCSIIO32_CONTROL_CLEAR_ACA_RSV (0x00400000) 343 #define MPI_SCSIIO32_CONTROL_CLEAR_ACA_RSV (0x00400000)
343 #define MPI_SCSIIO32_CONTROL_TARGET_RESET (0x00200000) 344 #define MPI_SCSIIO32_CONTROL_TARGET_RESET (0x00200000)
344 #define MPI_SCSIIO32_CONTROL_LUN_RESET_RSV (0x00100000) 345 #define MPI_SCSIIO32_CONTROL_LUN_RESET_RSV (0x00100000)
345 #define MPI_SCSIIO32_CONTROL_RESERVED (0x00080000) 346 #define MPI_SCSIIO32_CONTROL_RESERVED (0x00080000)
346 #define MPI_SCSIIO32_CONTROL_CLR_TASK_SET_RSV (0x00040000) 347 #define MPI_SCSIIO32_CONTROL_CLR_TASK_SET_RSV (0x00040000)
347 #define MPI_SCSIIO32_CONTROL_ABORT_TASK_SET (0x00020000) 348 #define MPI_SCSIIO32_CONTROL_ABORT_TASK_SET (0x00020000)
348 #define MPI_SCSIIO32_CONTROL_RESERVED2 (0x00010000) 349 #define MPI_SCSIIO32_CONTROL_RESERVED2 (0x00010000)
349 350
350 /* SCSI IO 32 EEDPFlags */ 351 /* SCSI IO 32 EEDPFlags */
351 #define MPI_SCSIIO32_EEDPFLAGS_MASK_OP (0x0007) 352 #define MPI_SCSIIO32_EEDPFLAGS_MASK_OP (0x0007)
352 #define MPI_SCSIIO32_EEDPFLAGS_NOOP_OP (0x0000) 353 #define MPI_SCSIIO32_EEDPFLAGS_NOOP_OP (0x0000)
353 #define MPI_SCSIIO32_EEDPFLAGS_CHK_OP (0x0001) 354 #define MPI_SCSIIO32_EEDPFLAGS_CHK_OP (0x0001)
354 #define MPI_SCSIIO32_EEDPFLAGS_STRIP_OP (0x0002) 355 #define MPI_SCSIIO32_EEDPFLAGS_STRIP_OP (0x0002)
355 #define MPI_SCSIIO32_EEDPFLAGS_CHKRM_OP (0x0003) 356 #define MPI_SCSIIO32_EEDPFLAGS_CHKRM_OP (0x0003)
356 #define MPI_SCSIIO32_EEDPFLAGS_INSERT_OP (0x0004) 357 #define MPI_SCSIIO32_EEDPFLAGS_INSERT_OP (0x0004)
357 #define MPI_SCSIIO32_EEDPFLAGS_REPLACE_OP (0x0006) 358 #define MPI_SCSIIO32_EEDPFLAGS_REPLACE_OP (0x0006)
358 #define MPI_SCSIIO32_EEDPFLAGS_CHKREGEN_OP (0x0007) 359 #define MPI_SCSIIO32_EEDPFLAGS_CHKREGEN_OP (0x0007)
359 360
360 #define MPI_SCSIIO32_EEDPFLAGS_PASS_REF_TAG (0x0008) 361 #define MPI_SCSIIO32_EEDPFLAGS_PASS_REF_TAG (0x0008)
361 #define MPI_SCSIIO32_EEDPFLAGS_8_9THS_MODE (0x0010) 362 #define MPI_SCSIIO32_EEDPFLAGS_8_9THS_MODE (0x0010)
362 363
363 #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_MASK (0x0700) 364 #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_MASK (0x0700)
364 #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_GUARD (0x0100) 365 #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_GUARD (0x0100)
365 #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_REFTAG (0x0200) 366 #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_REFTAG (0x0200)
366 #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_LBATAG (0x0400) 367 #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_LBATAG (0x0400)
367 #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_SHIFT (8) 368 #define MPI_SCSIIO32_EEDPFLAGS_T10_CHK_SHIFT (8)
368 369
369 #define MPI_SCSIIO32_EEDPFLAGS_INC_SEC_APPTAG (0x1000) 370 #define MPI_SCSIIO32_EEDPFLAGS_INC_SEC_APPTAG (0x1000)
370 #define MPI_SCSIIO32_EEDPFLAGS_INC_PRI_APPTAG (0x2000) 371 #define MPI_SCSIIO32_EEDPFLAGS_INC_PRI_APPTAG (0x2000)
371 #define MPI_SCSIIO32_EEDPFLAGS_INC_SEC_REFTAG (0x4000) 372 #define MPI_SCSIIO32_EEDPFLAGS_INC_SEC_REFTAG (0x4000)
372 #define MPI_SCSIIO32_EEDPFLAGS_INC_PRI_REFTAG (0x8000) 373 #define MPI_SCSIIO32_EEDPFLAGS_INC_PRI_REFTAG (0x8000)
373 374
374 375
375 /* SCSIIO32 IO reply structure */ 376 /* SCSIIO32 IO reply structure */
376 typedef struct _MSG_SCSIIO32_IO_REPLY 377 typedef struct _MSG_SCSIIO32_IO_REPLY
377 { 378 {
378 U8 Port; /* 00h */ 379 U8 Port; /* 00h */
379 U8 Reserved1; /* 01h */ 380 U8 Reserved1; /* 01h */
380 U8 MsgLength; /* 02h */ 381 U8 MsgLength; /* 02h */
381 U8 Function; /* 03h */ 382 U8 Function; /* 03h */
382 U8 CDBLength; /* 04h */ 383 U8 CDBLength; /* 04h */
383 U8 SenseBufferLength; /* 05h */ 384 U8 SenseBufferLength; /* 05h */
384 U8 Flags; /* 06h */ 385 U8 Flags; /* 06h */
385 U8 MsgFlags; /* 07h */ 386 U8 MsgFlags; /* 07h */
386 U32 MsgContext; /* 08h */ 387 U32 MsgContext; /* 08h */
387 U8 SCSIStatus; /* 0Ch */ 388 U8 SCSIStatus; /* 0Ch */
388 U8 SCSIState; /* 0Dh */ 389 U8 SCSIState; /* 0Dh */
389 U16 IOCStatus; /* 0Eh */ 390 U16 IOCStatus; /* 0Eh */
390 U32 IOCLogInfo; /* 10h */ 391 U32 IOCLogInfo; /* 10h */
391 U32 TransferCount; /* 14h */ 392 U32 TransferCount; /* 14h */
392 U32 SenseCount; /* 18h */ 393 U32 SenseCount; /* 18h */
393 U32 ResponseInfo; /* 1Ch */ 394 U32 ResponseInfo; /* 1Ch */
394 U16 TaskTag; /* 20h */ 395 U16 TaskTag; /* 20h */
395 U16 Reserved2; /* 22h */ 396 U16 Reserved2; /* 22h */
396 U32 BidirectionalTransferCount; /* 24h */ 397 U32 BidirectionalTransferCount; /* 24h */
397 } MSG_SCSIIO32_IO_REPLY, MPI_POINTER PTR_MSG_SCSIIO32_IO_REPLY, 398 } MSG_SCSIIO32_IO_REPLY, MPI_POINTER PTR_MSG_SCSIIO32_IO_REPLY,
398 SCSIIO32Reply_t, MPI_POINTER pSCSIIO32Reply_t; 399 SCSIIO32Reply_t, MPI_POINTER pSCSIIO32Reply_t;
399 400
400 401
401 /****************************************************************************/ 402 /****************************************************************************/
402 /* SCSI Task Management messages */ 403 /* SCSI Task Management messages */
403 /****************************************************************************/ 404 /****************************************************************************/
404 405
405 typedef struct _MSG_SCSI_TASK_MGMT 406 typedef struct _MSG_SCSI_TASK_MGMT
406 { 407 {
407 U8 TargetID; /* 00h */ 408 U8 TargetID; /* 00h */
408 U8 Bus; /* 01h */ 409 U8 Bus; /* 01h */
409 U8 ChainOffset; /* 02h */ 410 U8 ChainOffset; /* 02h */
410 U8 Function; /* 03h */ 411 U8 Function; /* 03h */
411 U8 Reserved; /* 04h */ 412 U8 Reserved; /* 04h */
412 U8 TaskType; /* 05h */ 413 U8 TaskType; /* 05h */
413 U8 Reserved1; /* 06h */ 414 U8 Reserved1; /* 06h */
414 U8 MsgFlags; /* 07h */ 415 U8 MsgFlags; /* 07h */
415 U32 MsgContext; /* 08h */ 416 U32 MsgContext; /* 08h */
416 U8 LUN[8]; /* 0Ch */ 417 U8 LUN[8]; /* 0Ch */
417 U32 Reserved2[7]; /* 14h */ 418 U32 Reserved2[7]; /* 14h */
418 U32 TaskMsgContext; /* 30h */ 419 U32 TaskMsgContext; /* 30h */
419 } MSG_SCSI_TASK_MGMT, MPI_POINTER PTR_SCSI_TASK_MGMT, 420 } MSG_SCSI_TASK_MGMT, MPI_POINTER PTR_SCSI_TASK_MGMT,
420 SCSITaskMgmt_t, MPI_POINTER pSCSITaskMgmt_t; 421 SCSITaskMgmt_t, MPI_POINTER pSCSITaskMgmt_t;
421 422
422 /* TaskType values */ 423 /* TaskType values */
423 424
424 #define MPI_SCSITASKMGMT_TASKTYPE_ABORT_TASK (0x01) 425 #define MPI_SCSITASKMGMT_TASKTYPE_ABORT_TASK (0x01)
425 #define MPI_SCSITASKMGMT_TASKTYPE_ABRT_TASK_SET (0x02) 426 #define MPI_SCSITASKMGMT_TASKTYPE_ABRT_TASK_SET (0x02)
426 #define MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET (0x03) 427 #define MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET (0x03)
427 #define MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS (0x04) 428 #define MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS (0x04)
428 #define MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05) 429 #define MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05)
429 #define MPI_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06) 430 #define MPI_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06)
430 #define MPI_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07) 431 #define MPI_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07)
431 #define MPI_SCSITASKMGMT_TASKTYPE_CLEAR_ACA (0x08) 432 #define MPI_SCSITASKMGMT_TASKTYPE_CLR_ACA (0x08)
432 433
433 /* MsgFlags bits */ 434 /* MsgFlags bits */
434 #define MPI_SCSITASKMGMT_MSGFLAGS_TARGET_RESET_OPTION (0x00) 435 #define MPI_SCSITASKMGMT_MSGFLAGS_TARGET_RESET_OPTION (0x00)
435 #define MPI_SCSITASKMGMT_MSGFLAGS_LIP_RESET_OPTION (0x02) 436 #define MPI_SCSITASKMGMT_MSGFLAGS_LIP_RESET_OPTION (0x02)
436 #define MPI_SCSITASKMGMT_MSGFLAGS_LIPRESET_RESET_OPTION (0x04) 437 #define MPI_SCSITASKMGMT_MSGFLAGS_LIPRESET_RESET_OPTION (0x04)
437 438
438 /* SCSI Task Management Reply */ 439 /* SCSI Task Management Reply */
439 typedef struct _MSG_SCSI_TASK_MGMT_REPLY 440 typedef struct _MSG_SCSI_TASK_MGMT_REPLY
440 { 441 {
441 U8 TargetID; /* 00h */ 442 U8 TargetID; /* 00h */
442 U8 Bus; /* 01h */ 443 U8 Bus; /* 01h */
443 U8 MsgLength; /* 02h */ 444 U8 MsgLength; /* 02h */
444 U8 Function; /* 03h */ 445 U8 Function; /* 03h */
445 U8 ResponseCode; /* 04h */ 446 U8 ResponseCode; /* 04h */
446 U8 TaskType; /* 05h */ 447 U8 TaskType; /* 05h */
447 U8 Reserved1; /* 06h */ 448 U8 Reserved1; /* 06h */
448 U8 MsgFlags; /* 07h */ 449 U8 MsgFlags; /* 07h */
449 U32 MsgContext; /* 08h */ 450 U32 MsgContext; /* 08h */
450 U8 Reserved2[2]; /* 0Ch */ 451 U8 Reserved2[2]; /* 0Ch */
451 U16 IOCStatus; /* 0Eh */ 452 U16 IOCStatus; /* 0Eh */
452 U32 IOCLogInfo; /* 10h */ 453 U32 IOCLogInfo; /* 10h */
453 U32 TerminationCount; /* 14h */ 454 U32 TerminationCount; /* 14h */
454 } MSG_SCSI_TASK_MGMT_REPLY, MPI_POINTER PTR_MSG_SCSI_TASK_MGMT_REPLY, 455 } MSG_SCSI_TASK_MGMT_REPLY, MPI_POINTER PTR_MSG_SCSI_TASK_MGMT_REPLY,
455 SCSITaskMgmtReply_t, MPI_POINTER pSCSITaskMgmtReply_t; 456 SCSITaskMgmtReply_t, MPI_POINTER pSCSITaskMgmtReply_t;
456 457
457 /* ResponseCode values */ 458 /* ResponseCode values */
458 #define MPI_SCSITASKMGMT_RSP_TM_COMPLETE (0x00) 459 #define MPI_SCSITASKMGMT_RSP_TM_COMPLETE (0x00)
459 #define MPI_SCSITASKMGMT_RSP_INVALID_FRAME (0x02) 460 #define MPI_SCSITASKMGMT_RSP_INVALID_FRAME (0x02)
460 #define MPI_SCSITASKMGMT_RSP_TM_NOT_SUPPORTED (0x04) 461 #define MPI_SCSITASKMGMT_RSP_TM_NOT_SUPPORTED (0x04)
461 #define MPI_SCSITASKMGMT_RSP_TM_FAILED (0x05) 462 #define MPI_SCSITASKMGMT_RSP_TM_FAILED (0x05)
462 #define MPI_SCSITASKMGMT_RSP_TM_SUCCEEDED (0x08) 463 #define MPI_SCSITASKMGMT_RSP_TM_SUCCEEDED (0x08)
463 #define MPI_SCSITASKMGMT_RSP_TM_INVALID_LUN (0x09) 464 #define MPI_SCSITASKMGMT_RSP_TM_INVALID_LUN (0x09)
464 #define MPI_SCSITASKMGMT_RSP_IO_QUEUED_ON_IOC (0x80) 465 #define MPI_SCSITASKMGMT_RSP_IO_QUEUED_ON_IOC (0x80)
465 466
466 467
467 /****************************************************************************/ 468 /****************************************************************************/
468 /* SCSI Enclosure Processor messages */ 469 /* SCSI Enclosure Processor messages */
469 /****************************************************************************/ 470 /****************************************************************************/
470 471
471 typedef struct _MSG_SEP_REQUEST 472 typedef struct _MSG_SEP_REQUEST
472 { 473 {
473 U8 TargetID; /* 00h */ 474 U8 TargetID; /* 00h */
474 U8 Bus; /* 01h */ 475 U8 Bus; /* 01h */
475 U8 ChainOffset; /* 02h */ 476 U8 ChainOffset; /* 02h */
476 U8 Function; /* 03h */ 477 U8 Function; /* 03h */
477 U8 Action; /* 04h */ 478 U8 Action; /* 04h */
478 U8 Flags; /* 05h */ 479 U8 Flags; /* 05h */
479 U8 Reserved1; /* 06h */ 480 U8 Reserved1; /* 06h */
480 U8 MsgFlags; /* 07h */ 481 U8 MsgFlags; /* 07h */
481 U32 MsgContext; /* 08h */ 482 U32 MsgContext; /* 08h */
482 U32 SlotStatus; /* 0Ch */ 483 U32 SlotStatus; /* 0Ch */
483 U32 Reserved2; /* 10h */ 484 U32 Reserved2; /* 10h */
484 U32 Reserved3; /* 14h */ 485 U32 Reserved3; /* 14h */
485 U32 Reserved4; /* 18h */ 486 U32 Reserved4; /* 18h */
486 U16 Slot; /* 1Ch */ 487 U16 Slot; /* 1Ch */
487 U16 EnclosureHandle; /* 1Eh */ 488 U16 EnclosureHandle; /* 1Eh */
488 } MSG_SEP_REQUEST, MPI_POINTER PTR_MSG_SEP_REQUEST, 489 } MSG_SEP_REQUEST, MPI_POINTER PTR_MSG_SEP_REQUEST,
489 SEPRequest_t, MPI_POINTER pSEPRequest_t; 490 SEPRequest_t, MPI_POINTER pSEPRequest_t;
490 491
491 /* Action defines */ 492 /* Action defines */
492 #define MPI_SEP_REQ_ACTION_WRITE_STATUS (0x00) 493 #define MPI_SEP_REQ_ACTION_WRITE_STATUS (0x00)
493 #define MPI_SEP_REQ_ACTION_READ_STATUS (0x01) 494 #define MPI_SEP_REQ_ACTION_READ_STATUS (0x01)
494 495
495 /* Flags defines */ 496 /* Flags defines */
496 #define MPI_SEP_REQ_FLAGS_ENCLOSURE_SLOT_ADDRESS (0x01) 497 #define MPI_SEP_REQ_FLAGS_ENCLOSURE_SLOT_ADDRESS (0x01)
497 #define MPI_SEP_REQ_FLAGS_BUS_TARGETID_ADDRESS (0x00) 498 #define MPI_SEP_REQ_FLAGS_BUS_TARGETID_ADDRESS (0x00)
498 499
499 /* SlotStatus bits for MSG_SEP_REQUEST */ 500 /* SlotStatus bits for MSG_SEP_REQUEST */
500 #define MPI_SEP_REQ_SLOTSTATUS_NO_ERROR (0x00000001) 501 #define MPI_SEP_REQ_SLOTSTATUS_NO_ERROR (0x00000001)
501 #define MPI_SEP_REQ_SLOTSTATUS_DEV_FAULTY (0x00000002) 502 #define MPI_SEP_REQ_SLOTSTATUS_DEV_FAULTY (0x00000002)
502 #define MPI_SEP_REQ_SLOTSTATUS_DEV_REBUILDING (0x00000004) 503 #define MPI_SEP_REQ_SLOTSTATUS_DEV_REBUILDING (0x00000004)
503 #define MPI_SEP_REQ_SLOTSTATUS_IN_FAILED_ARRAY (0x00000008) 504 #define MPI_SEP_REQ_SLOTSTATUS_IN_FAILED_ARRAY (0x00000008)
504 #define MPI_SEP_REQ_SLOTSTATUS_IN_CRITICAL_ARRAY (0x00000010) 505 #define MPI_SEP_REQ_SLOTSTATUS_IN_CRITICAL_ARRAY (0x00000010)
505 #define MPI_SEP_REQ_SLOTSTATUS_PARITY_CHECK (0x00000020) 506 #define MPI_SEP_REQ_SLOTSTATUS_PARITY_CHECK (0x00000020)
506 #define MPI_SEP_REQ_SLOTSTATUS_PREDICTED_FAULT (0x00000040) 507 #define MPI_SEP_REQ_SLOTSTATUS_PREDICTED_FAULT (0x00000040)
507 #define MPI_SEP_REQ_SLOTSTATUS_UNCONFIGURED (0x00000080) 508 #define MPI_SEP_REQ_SLOTSTATUS_UNCONFIGURED (0x00000080)
508 #define MPI_SEP_REQ_SLOTSTATUS_HOT_SPARE (0x00000100) 509 #define MPI_SEP_REQ_SLOTSTATUS_HOT_SPARE (0x00000100)
509 #define MPI_SEP_REQ_SLOTSTATUS_REBUILD_STOPPED (0x00000200) 510 #define MPI_SEP_REQ_SLOTSTATUS_REBUILD_STOPPED (0x00000200)
510 #define MPI_SEP_REQ_SLOTSTATUS_REQ_CONSISTENCY_CHECK (0x00001000) 511 #define MPI_SEP_REQ_SLOTSTATUS_REQ_CONSISTENCY_CHECK (0x00001000)
511 #define MPI_SEP_REQ_SLOTSTATUS_DISABLE (0x00002000) 512 #define MPI_SEP_REQ_SLOTSTATUS_DISABLE (0x00002000)
512 #define MPI_SEP_REQ_SLOTSTATUS_REQ_RESERVED_DEVICE (0x00004000) 513 #define MPI_SEP_REQ_SLOTSTATUS_REQ_RESERVED_DEVICE (0x00004000)
513 #define MPI_SEP_REQ_SLOTSTATUS_IDENTIFY_REQUEST (0x00020000) 514 #define MPI_SEP_REQ_SLOTSTATUS_IDENTIFY_REQUEST (0x00020000)
514 #define MPI_SEP_REQ_SLOTSTATUS_REQUEST_REMOVE (0x00040000) 515 #define MPI_SEP_REQ_SLOTSTATUS_REQUEST_REMOVE (0x00040000)
515 #define MPI_SEP_REQ_SLOTSTATUS_REQUEST_INSERT (0x00080000) 516 #define MPI_SEP_REQ_SLOTSTATUS_REQUEST_INSERT (0x00080000)
516 #define MPI_SEP_REQ_SLOTSTATUS_DO_NOT_MOVE (0x00400000) 517 #define MPI_SEP_REQ_SLOTSTATUS_DO_NOT_MOVE (0x00400000)
517 #define MPI_SEP_REQ_SLOTSTATUS_ACTIVE (0x00800000) 518 #define MPI_SEP_REQ_SLOTSTATUS_ACTIVE (0x00800000)
518 #define MPI_SEP_REQ_SLOTSTATUS_B_ENABLE_BYPASS (0x04000000) 519 #define MPI_SEP_REQ_SLOTSTATUS_B_ENABLE_BYPASS (0x04000000)
519 #define MPI_SEP_REQ_SLOTSTATUS_A_ENABLE_BYPASS (0x08000000) 520 #define MPI_SEP_REQ_SLOTSTATUS_A_ENABLE_BYPASS (0x08000000)
520 #define MPI_SEP_REQ_SLOTSTATUS_DEV_OFF (0x10000000) 521 #define MPI_SEP_REQ_SLOTSTATUS_DEV_OFF (0x10000000)
521 #define MPI_SEP_REQ_SLOTSTATUS_SWAP_RESET (0x80000000) 522 #define MPI_SEP_REQ_SLOTSTATUS_SWAP_RESET (0x80000000)
522 523
523 524
524 typedef struct _MSG_SEP_REPLY 525 typedef struct _MSG_SEP_REPLY
525 { 526 {
526 U8 TargetID; /* 00h */ 527 U8 TargetID; /* 00h */
527 U8 Bus; /* 01h */ 528 U8 Bus; /* 01h */
528 U8 MsgLength; /* 02h */ 529 U8 MsgLength; /* 02h */
529 U8 Function; /* 03h */ 530 U8 Function; /* 03h */
530 U8 Action; /* 04h */ 531 U8 Action; /* 04h */
531 U8 Reserved1; /* 05h */ 532 U8 Reserved1; /* 05h */
532 U8 Reserved2; /* 06h */ 533 U8 Reserved2; /* 06h */
533 U8 MsgFlags; /* 07h */ 534 U8 MsgFlags; /* 07h */
534 U32 MsgContext; /* 08h */ 535 U32 MsgContext; /* 08h */
535 U16 Reserved3; /* 0Ch */ 536 U16 Reserved3; /* 0Ch */
536 U16 IOCStatus; /* 0Eh */ 537 U16 IOCStatus; /* 0Eh */
537 U32 IOCLogInfo; /* 10h */ 538 U32 IOCLogInfo; /* 10h */
538 U32 SlotStatus; /* 14h */ 539 U32 SlotStatus; /* 14h */
539 U32 Reserved4; /* 18h */ 540 U32 Reserved4; /* 18h */
540 U16 Slot; /* 1Ch */ 541 U16 Slot; /* 1Ch */
541 U16 EnclosureHandle; /* 1Eh */ 542 U16 EnclosureHandle; /* 1Eh */
542 } MSG_SEP_REPLY, MPI_POINTER PTR_MSG_SEP_REPLY, 543 } MSG_SEP_REPLY, MPI_POINTER PTR_MSG_SEP_REPLY,
543 SEPReply_t, MPI_POINTER pSEPReply_t; 544 SEPReply_t, MPI_POINTER pSEPReply_t;
544 545
545 /* SlotStatus bits for MSG_SEP_REPLY */ 546 /* SlotStatus bits for MSG_SEP_REPLY */
546 #define MPI_SEP_REPLY_SLOTSTATUS_NO_ERROR (0x00000001) 547 #define MPI_SEP_REPLY_SLOTSTATUS_NO_ERROR (0x00000001)
547 #define MPI_SEP_REPLY_SLOTSTATUS_DEV_FAULTY (0x00000002) 548 #define MPI_SEP_REPLY_SLOTSTATUS_DEV_FAULTY (0x00000002)
548 #define MPI_SEP_REPLY_SLOTSTATUS_DEV_REBUILDING (0x00000004) 549 #define MPI_SEP_REPLY_SLOTSTATUS_DEV_REBUILDING (0x00000004)
549 #define MPI_SEP_REPLY_SLOTSTATUS_IN_FAILED_ARRAY (0x00000008) 550 #define MPI_SEP_REPLY_SLOTSTATUS_IN_FAILED_ARRAY (0x00000008)
550 #define MPI_SEP_REPLY_SLOTSTATUS_IN_CRITICAL_ARRAY (0x00000010) 551 #define MPI_SEP_REPLY_SLOTSTATUS_IN_CRITICAL_ARRAY (0x00000010)
551 #define MPI_SEP_REPLY_SLOTSTATUS_PARITY_CHECK (0x00000020) 552 #define MPI_SEP_REPLY_SLOTSTATUS_PARITY_CHECK (0x00000020)
552 #define MPI_SEP_REPLY_SLOTSTATUS_PREDICTED_FAULT (0x00000040) 553 #define MPI_SEP_REPLY_SLOTSTATUS_PREDICTED_FAULT (0x00000040)
553 #define MPI_SEP_REPLY_SLOTSTATUS_UNCONFIGURED (0x00000080) 554 #define MPI_SEP_REPLY_SLOTSTATUS_UNCONFIGURED (0x00000080)
554 #define MPI_SEP_REPLY_SLOTSTATUS_HOT_SPARE (0x00000100) 555 #define MPI_SEP_REPLY_SLOTSTATUS_HOT_SPARE (0x00000100)
555 #define MPI_SEP_REPLY_SLOTSTATUS_REBUILD_STOPPED (0x00000200) 556 #define MPI_SEP_REPLY_SLOTSTATUS_REBUILD_STOPPED (0x00000200)
556 #define MPI_SEP_REPLY_SLOTSTATUS_CONSISTENCY_CHECK (0x00001000) 557 #define MPI_SEP_REPLY_SLOTSTATUS_CONSISTENCY_CHECK (0x00001000)
557 #define MPI_SEP_REPLY_SLOTSTATUS_DISABLE (0x00002000) 558 #define MPI_SEP_REPLY_SLOTSTATUS_DISABLE (0x00002000)
558 #define MPI_SEP_REPLY_SLOTSTATUS_RESERVED_DEVICE (0x00004000) 559 #define MPI_SEP_REPLY_SLOTSTATUS_RESERVED_DEVICE (0x00004000)
559 #define MPI_SEP_REPLY_SLOTSTATUS_REPORT (0x00010000) 560 #define MPI_SEP_REPLY_SLOTSTATUS_REPORT (0x00010000)
560 #define MPI_SEP_REPLY_SLOTSTATUS_IDENTIFY_REQUEST (0x00020000) 561 #define MPI_SEP_REPLY_SLOTSTATUS_IDENTIFY_REQUEST (0x00020000)
561 #define MPI_SEP_REPLY_SLOTSTATUS_REMOVE_READY (0x00040000) 562 #define MPI_SEP_REPLY_SLOTSTATUS_REMOVE_READY (0x00040000)
562 #define MPI_SEP_REPLY_SLOTSTATUS_INSERT_READY (0x00080000) 563 #define MPI_SEP_REPLY_SLOTSTATUS_INSERT_READY (0x00080000)
563 #define MPI_SEP_REPLY_SLOTSTATUS_DO_NOT_REMOVE (0x00400000) 564 #define MPI_SEP_REPLY_SLOTSTATUS_DO_NOT_REMOVE (0x00400000)
564 #define MPI_SEP_REPLY_SLOTSTATUS_ACTIVE (0x00800000) 565 #define MPI_SEP_REPLY_SLOTSTATUS_ACTIVE (0x00800000)
565 #define MPI_SEP_REPLY_SLOTSTATUS_B_BYPASS_ENABLED (0x01000000) 566 #define MPI_SEP_REPLY_SLOTSTATUS_B_BYPASS_ENABLED (0x01000000)
566 #define MPI_SEP_REPLY_SLOTSTATUS_A_BYPASS_ENABLED (0x02000000) 567 #define MPI_SEP_REPLY_SLOTSTATUS_A_BYPASS_ENABLED (0x02000000)
567 #define MPI_SEP_REPLY_SLOTSTATUS_B_ENABLE_BYPASS (0x04000000) 568 #define MPI_SEP_REPLY_SLOTSTATUS_B_ENABLE_BYPASS (0x04000000)
568 #define MPI_SEP_REPLY_SLOTSTATUS_A_ENABLE_BYPASS (0x08000000) 569 #define MPI_SEP_REPLY_SLOTSTATUS_A_ENABLE_BYPASS (0x08000000)
569 #define MPI_SEP_REPLY_SLOTSTATUS_DEV_OFF (0x10000000) 570 #define MPI_SEP_REPLY_SLOTSTATUS_DEV_OFF (0x10000000)
570 #define MPI_SEP_REPLY_SLOTSTATUS_FAULT_SENSED (0x40000000) 571 #define MPI_SEP_REPLY_SLOTSTATUS_FAULT_SENSED (0x40000000)
571 #define MPI_SEP_REPLY_SLOTSTATUS_SWAPPED (0x80000000) 572 #define MPI_SEP_REPLY_SLOTSTATUS_SWAPPED (0x80000000)
572 573
573 #endif 574 #endif
574 575
drivers/message/fusion/lsi/mpi_ioc.h
1 /* 1 /*
2 * Copyright (c) 2000-2005 LSI Logic Corporation. 2 * Copyright (c) 2000-2006 LSI Logic Corporation.
3 * 3 *
4 * 4 *
5 * Name: mpi_ioc.h 5 * Name: mpi_ioc.h
6 * Title: MPI IOC, Port, Event, FW Download, and FW Upload messages 6 * Title: MPI IOC, Port, Event, FW Download, and FW Upload messages
7 * Creation Date: August 11, 2000 7 * Creation Date: August 11, 2000
8 * 8 *
9 * mpi_ioc.h Version: 01.05.11 9 * mpi_ioc.h Version: 01.05.12
10 * 10 *
11 * Version History 11 * Version History
12 * --------------- 12 * ---------------
13 * 13 *
14 * Date Version Description 14 * Date Version Description
15 * -------- -------- ------------------------------------------------------ 15 * -------- -------- ------------------------------------------------------
16 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000. 16 * 05-08-00 00.10.01 Original release for 0.10 spec dated 4/26/2000.
17 * 05-24-00 00.10.02 Added _MSG_IOC_INIT_REPLY structure. 17 * 05-24-00 00.10.02 Added _MSG_IOC_INIT_REPLY structure.
18 * 06-06-00 01.00.01 Added CurReplyFrameSize field to _MSG_IOC_FACTS_REPLY. 18 * 06-06-00 01.00.01 Added CurReplyFrameSize field to _MSG_IOC_FACTS_REPLY.
19 * 06-12-00 01.00.02 Added _MSG_PORT_ENABLE_REPLY structure. 19 * 06-12-00 01.00.02 Added _MSG_PORT_ENABLE_REPLY structure.
20 * Added _MSG_EVENT_ACK_REPLY structure. 20 * Added _MSG_EVENT_ACK_REPLY structure.
21 * Added _MSG_FW_DOWNLOAD_REPLY structure. 21 * Added _MSG_FW_DOWNLOAD_REPLY structure.
22 * Added _MSG_TOOLBOX_REPLY structure. 22 * Added _MSG_TOOLBOX_REPLY structure.
23 * 06-30-00 01.00.03 Added MaxLanBuckets to _PORT_FACT_REPLY structure. 23 * 06-30-00 01.00.03 Added MaxLanBuckets to _PORT_FACT_REPLY structure.
24 * 07-27-00 01.00.04 Added _EVENT_DATA structure definitions for _SCSI, 24 * 07-27-00 01.00.04 Added _EVENT_DATA structure definitions for _SCSI,
25 * _LINK_STATUS, _LOOP_STATE and _LOGOUT. 25 * _LINK_STATUS, _LOOP_STATE and _LOGOUT.
26 * 08-11-00 01.00.05 Switched positions of MsgLength and Function fields in 26 * 08-11-00 01.00.05 Switched positions of MsgLength and Function fields in
27 * _MSG_EVENT_ACK_REPLY structure to match specification. 27 * _MSG_EVENT_ACK_REPLY structure to match specification.
28 * 11-02-00 01.01.01 Original release for post 1.0 work. 28 * 11-02-00 01.01.01 Original release for post 1.0 work.
29 * Added a value for Manufacturer to WhoInit. 29 * Added a value for Manufacturer to WhoInit.
30 * 12-04-00 01.01.02 Modified IOCFacts reply, added FWUpload messages, and 30 * 12-04-00 01.01.02 Modified IOCFacts reply, added FWUpload messages, and
31 * removed toolbox message. 31 * removed toolbox message.
32 * 01-09-01 01.01.03 Added event enabled and disabled defines. 32 * 01-09-01 01.01.03 Added event enabled and disabled defines.
33 * Added structures for FwHeader and DataHeader. 33 * Added structures for FwHeader and DataHeader.
34 * Added ImageType to FwUpload reply. 34 * Added ImageType to FwUpload reply.
35 * 02-20-01 01.01.04 Started using MPI_POINTER. 35 * 02-20-01 01.01.04 Started using MPI_POINTER.
36 * 02-27-01 01.01.05 Added event for RAID status change and its event data. 36 * 02-27-01 01.01.05 Added event for RAID status change and its event data.
37 * Added IocNumber field to MSG_IOC_FACTS_REPLY. 37 * Added IocNumber field to MSG_IOC_FACTS_REPLY.
38 * 03-27-01 01.01.06 Added defines for ProductId field of MPI_FW_HEADER. 38 * 03-27-01 01.01.06 Added defines for ProductId field of MPI_FW_HEADER.
39 * Added structure offset comments. 39 * Added structure offset comments.
40 * 04-09-01 01.01.07 Added structure EVENT_DATA_EVENT_CHANGE. 40 * 04-09-01 01.01.07 Added structure EVENT_DATA_EVENT_CHANGE.
41 * 08-08-01 01.02.01 Original release for v1.2 work. 41 * 08-08-01 01.02.01 Original release for v1.2 work.
42 * New format for FWVersion and ProductId in 42 * New format for FWVersion and ProductId in
43 * MSG_IOC_FACTS_REPLY and MPI_FW_HEADER. 43 * MSG_IOC_FACTS_REPLY and MPI_FW_HEADER.
44 * 08-31-01 01.02.02 Addded event MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE and 44 * 08-31-01 01.02.02 Addded event MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE and
45 * related structure and defines. 45 * related structure and defines.
46 * Added event MPI_EVENT_ON_BUS_TIMER_EXPIRED. 46 * Added event MPI_EVENT_ON_BUS_TIMER_EXPIRED.
47 * Added MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE. 47 * Added MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE.
48 * Replaced a reserved field in MSG_IOC_FACTS_REPLY with 48 * Replaced a reserved field in MSG_IOC_FACTS_REPLY with
49 * IOCExceptions and changed DataImageSize to reserved. 49 * IOCExceptions and changed DataImageSize to reserved.
50 * Added MPI_FW_DOWNLOAD_ITYPE_NVSTORE_DATA and 50 * Added MPI_FW_DOWNLOAD_ITYPE_NVSTORE_DATA and
51 * MPI_FW_UPLOAD_ITYPE_NVDATA. 51 * MPI_FW_UPLOAD_ITYPE_NVDATA.
52 * 09-28-01 01.02.03 Modified Event Data for Integrated RAID. 52 * 09-28-01 01.02.03 Modified Event Data for Integrated RAID.
53 * 11-01-01 01.02.04 Added defines for MPI_EXT_IMAGE_HEADER ImageType field. 53 * 11-01-01 01.02.04 Added defines for MPI_EXT_IMAGE_HEADER ImageType field.
54 * 03-14-02 01.02.05 Added HeaderVersion field to MSG_IOC_FACTS_REPLY. 54 * 03-14-02 01.02.05 Added HeaderVersion field to MSG_IOC_FACTS_REPLY.
55 * 05-31-02 01.02.06 Added define for 55 * 05-31-02 01.02.06 Added define for
56 * MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID. 56 * MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID.
57 * Added AliasIndex to EVENT_DATA_LOGOUT structure. 57 * Added AliasIndex to EVENT_DATA_LOGOUT structure.
58 * 04-01-03 01.02.07 Added defines for MPI_FW_HEADER_SIGNATURE_. 58 * 04-01-03 01.02.07 Added defines for MPI_FW_HEADER_SIGNATURE_.
59 * 06-26-03 01.02.08 Added new values to the product family defines. 59 * 06-26-03 01.02.08 Added new values to the product family defines.
60 * 04-29-04 01.02.09 Added IOCCapabilities field to MSG_IOC_FACTS_REPLY and 60 * 04-29-04 01.02.09 Added IOCCapabilities field to MSG_IOC_FACTS_REPLY and
61 * added related defines. 61 * added related defines.
62 * 05-11-04 01.03.01 Original release for MPI v1.3. 62 * 05-11-04 01.03.01 Original release for MPI v1.3.
63 * 08-19-04 01.05.01 Added four new fields to MSG_IOC_INIT. 63 * 08-19-04 01.05.01 Added four new fields to MSG_IOC_INIT.
64 * Added three new fields to MSG_IOC_FACTS_REPLY. 64 * Added three new fields to MSG_IOC_FACTS_REPLY.
65 * Defined four new bits for the IOCCapabilities field of 65 * Defined four new bits for the IOCCapabilities field of
66 * the IOCFacts reply. 66 * the IOCFacts reply.
67 * Added two new PortTypes for the PortFacts reply. 67 * Added two new PortTypes for the PortFacts reply.
68 * Added six new events along with their EventData 68 * Added six new events along with their EventData
69 * structures. 69 * structures.
70 * Added a new MsgFlag to the FwDownload request to 70 * Added a new MsgFlag to the FwDownload request to
71 * indicate last segment. 71 * indicate last segment.
72 * Defined a new image type of boot loader. 72 * Defined a new image type of boot loader.
73 * Added FW family codes for SAS product families. 73 * Added FW family codes for SAS product families.
74 * 10-05-04 01.05.02 Added ReplyFifoHostSignalingAddr field to 74 * 10-05-04 01.05.02 Added ReplyFifoHostSignalingAddr field to
75 * MSG_IOC_FACTS_REPLY. 75 * MSG_IOC_FACTS_REPLY.
76 * 12-07-04 01.05.03 Added more defines for SAS Discovery Error event. 76 * 12-07-04 01.05.03 Added more defines for SAS Discovery Error event.
77 * 12-09-04 01.05.04 Added Unsupported device to SAS Device event. 77 * 12-09-04 01.05.04 Added Unsupported device to SAS Device event.
78 * 01-15-05 01.05.05 Added event data for SAS SES Event. 78 * 01-15-05 01.05.05 Added event data for SAS SES Event.
79 * 02-09-05 01.05.06 Added MPI_FW_UPLOAD_ITYPE_FW_BACKUP define. 79 * 02-09-05 01.05.06 Added MPI_FW_UPLOAD_ITYPE_FW_BACKUP define.
80 * 02-22-05 01.05.07 Added Host Page Buffer Persistent flag to IOC Facts 80 * 02-22-05 01.05.07 Added Host Page Buffer Persistent flag to IOC Facts
81 * Reply and IOC Init Request. 81 * Reply and IOC Init Request.
82 * 03-11-05 01.05.08 Added family code for 1068E family. 82 * 03-11-05 01.05.08 Added family code for 1068E family.
83 * Removed IOCFacts Reply EEDP Capability bit. 83 * Removed IOCFacts Reply EEDP Capability bit.
84 * 06-24-05 01.05.09 Added 5 new IOCFacts Reply IOCCapabilities bits. 84 * 06-24-05 01.05.09 Added 5 new IOCFacts Reply IOCCapabilities bits.
85 * Added Max SATA Targets to SAS Discovery Error event. 85 * Added Max SATA Targets to SAS Discovery Error event.
86 * 08-30-05 01.05.10 Added 4 new events and their event data structures. 86 * 08-30-05 01.05.10 Added 4 new events and their event data structures.
87 * Added new ReasonCode value for SAS Device Status Change 87 * Added new ReasonCode value for SAS Device Status Change
88 * event. 88 * event.
89 * Added new family code for FC949E. 89 * Added new family code for FC949E.
90 * 03-27-06 01.05.11 Added MPI_IOCFACTS_CAPABILITY_TLR. 90 * 03-27-06 01.05.11 Added MPI_IOCFACTS_CAPABILITY_TLR.
91 * Added additional Reason Codes and more event data fields 91 * Added additional Reason Codes and more event data fields
92 * to EVENT_DATA_SAS_DEVICE_STATUS_CHANGE. 92 * to EVENT_DATA_SAS_DEVICE_STATUS_CHANGE.
93 * Added EVENT_DATA_SAS_BROADCAST_PRIMITIVE structure and 93 * Added EVENT_DATA_SAS_BROADCAST_PRIMITIVE structure and
94 * new event. 94 * new event.
95 * Added MPI_EVENT_SAS_SMP_ERROR and event data structure. 95 * Added MPI_EVENT_SAS_SMP_ERROR and event data structure.
96 * Added MPI_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE and event 96 * Added MPI_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE and event
97 * data structure. 97 * data structure.
98 * Added MPI_EVENT_SAS_INIT_TABLE_OVERFLOW and event 98 * Added MPI_EVENT_SAS_INIT_TABLE_OVERFLOW and event
99 * data structure. 99 * data structure.
100 * Added MPI_EXT_IMAGE_TYPE_INITIALIZATION. 100 * Added MPI_EXT_IMAGE_TYPE_INITIALIZATION.
101 * 10-11-06 01.05.12 Added MPI_IOCFACTS_EXCEPT_METADATA_UNSUPPORTED.
102 * Added MaxInitiators field to PortFacts reply.
103 * Added SAS Device Status Change ReasonCode for
104 * asynchronous notificaiton.
105 * Added MPI_EVENT_SAS_EXPANDER_STATUS_CHANGE and event
106 * data structure.
107 * Added new ImageType values for FWDownload and FWUpload
108 * requests.
101 * -------------------------------------------------------------------------- 109 * --------------------------------------------------------------------------
102 */ 110 */
103 111
104 #ifndef MPI_IOC_H 112 #ifndef MPI_IOC_H
105 #define MPI_IOC_H 113 #define MPI_IOC_H
106 114
107 115
108 /***************************************************************************** 116 /*****************************************************************************
109 * 117 *
110 * I O C M e s s a g e s 118 * I O C M e s s a g e s
111 * 119 *
112 *****************************************************************************/ 120 *****************************************************************************/
113 121
114 /****************************************************************************/ 122 /****************************************************************************/
115 /* IOCInit message */ 123 /* IOCInit message */
116 /****************************************************************************/ 124 /****************************************************************************/
117 125
118 typedef struct _MSG_IOC_INIT 126 typedef struct _MSG_IOC_INIT
119 { 127 {
120 U8 WhoInit; /* 00h */ 128 U8 WhoInit; /* 00h */
121 U8 Reserved; /* 01h */ 129 U8 Reserved; /* 01h */
122 U8 ChainOffset; /* 02h */ 130 U8 ChainOffset; /* 02h */
123 U8 Function; /* 03h */ 131 U8 Function; /* 03h */
124 U8 Flags; /* 04h */ 132 U8 Flags; /* 04h */
125 U8 MaxDevices; /* 05h */ 133 U8 MaxDevices; /* 05h */
126 U8 MaxBuses; /* 06h */ 134 U8 MaxBuses; /* 06h */
127 U8 MsgFlags; /* 07h */ 135 U8 MsgFlags; /* 07h */
128 U32 MsgContext; /* 08h */ 136 U32 MsgContext; /* 08h */
129 U16 ReplyFrameSize; /* 0Ch */ 137 U16 ReplyFrameSize; /* 0Ch */
130 U8 Reserved1[2]; /* 0Eh */ 138 U8 Reserved1[2]; /* 0Eh */
131 U32 HostMfaHighAddr; /* 10h */ 139 U32 HostMfaHighAddr; /* 10h */
132 U32 SenseBufferHighAddr; /* 14h */ 140 U32 SenseBufferHighAddr; /* 14h */
133 U32 ReplyFifoHostSignalingAddr; /* 18h */ 141 U32 ReplyFifoHostSignalingAddr; /* 18h */
134 SGE_SIMPLE_UNION HostPageBufferSGE; /* 1Ch */ 142 SGE_SIMPLE_UNION HostPageBufferSGE; /* 1Ch */
135 U16 MsgVersion; /* 28h */ 143 U16 MsgVersion; /* 28h */
136 U16 HeaderVersion; /* 2Ah */ 144 U16 HeaderVersion; /* 2Ah */
137 } MSG_IOC_INIT, MPI_POINTER PTR_MSG_IOC_INIT, 145 } MSG_IOC_INIT, MPI_POINTER PTR_MSG_IOC_INIT,
138 IOCInit_t, MPI_POINTER pIOCInit_t; 146 IOCInit_t, MPI_POINTER pIOCInit_t;
139 147
140 /* WhoInit values */ 148 /* WhoInit values */
141 #define MPI_WHOINIT_NO_ONE (0x00) 149 #define MPI_WHOINIT_NO_ONE (0x00)
142 #define MPI_WHOINIT_SYSTEM_BIOS (0x01) 150 #define MPI_WHOINIT_SYSTEM_BIOS (0x01)
143 #define MPI_WHOINIT_ROM_BIOS (0x02) 151 #define MPI_WHOINIT_ROM_BIOS (0x02)
144 #define MPI_WHOINIT_PCI_PEER (0x03) 152 #define MPI_WHOINIT_PCI_PEER (0x03)
145 #define MPI_WHOINIT_HOST_DRIVER (0x04) 153 #define MPI_WHOINIT_HOST_DRIVER (0x04)
146 #define MPI_WHOINIT_MANUFACTURER (0x05) 154 #define MPI_WHOINIT_MANUFACTURER (0x05)
147 155
148 /* Flags values */ 156 /* Flags values */
149 #define MPI_IOCINIT_FLAGS_HOST_PAGE_BUFFER_PERSISTENT (0x04) 157 #define MPI_IOCINIT_FLAGS_HOST_PAGE_BUFFER_PERSISTENT (0x04)
150 #define MPI_IOCINIT_FLAGS_REPLY_FIFO_HOST_SIGNAL (0x02) 158 #define MPI_IOCINIT_FLAGS_REPLY_FIFO_HOST_SIGNAL (0x02)
151 #define MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE (0x01) 159 #define MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE (0x01)
152 160
153 /* MsgVersion */ 161 /* MsgVersion */
154 #define MPI_IOCINIT_MSGVERSION_MAJOR_MASK (0xFF00) 162 #define MPI_IOCINIT_MSGVERSION_MAJOR_MASK (0xFF00)
155 #define MPI_IOCINIT_MSGVERSION_MAJOR_SHIFT (8) 163 #define MPI_IOCINIT_MSGVERSION_MAJOR_SHIFT (8)
156 #define MPI_IOCINIT_MSGVERSION_MINOR_MASK (0x00FF) 164 #define MPI_IOCINIT_MSGVERSION_MINOR_MASK (0x00FF)
157 #define MPI_IOCINIT_MSGVERSION_MINOR_SHIFT (0) 165 #define MPI_IOCINIT_MSGVERSION_MINOR_SHIFT (0)
158 166
159 /* HeaderVersion */ 167 /* HeaderVersion */
160 #define MPI_IOCINIT_HEADERVERSION_UNIT_MASK (0xFF00) 168 #define MPI_IOCINIT_HEADERVERSION_UNIT_MASK (0xFF00)
161 #define MPI_IOCINIT_HEADERVERSION_UNIT_SHIFT (8) 169 #define MPI_IOCINIT_HEADERVERSION_UNIT_SHIFT (8)
162 #define MPI_IOCINIT_HEADERVERSION_DEV_MASK (0x00FF) 170 #define MPI_IOCINIT_HEADERVERSION_DEV_MASK (0x00FF)
163 #define MPI_IOCINIT_HEADERVERSION_DEV_SHIFT (0) 171 #define MPI_IOCINIT_HEADERVERSION_DEV_SHIFT (0)
164 172
165 173
166 typedef struct _MSG_IOC_INIT_REPLY 174 typedef struct _MSG_IOC_INIT_REPLY
167 { 175 {
168 U8 WhoInit; /* 00h */ 176 U8 WhoInit; /* 00h */
169 U8 Reserved; /* 01h */ 177 U8 Reserved; /* 01h */
170 U8 MsgLength; /* 02h */ 178 U8 MsgLength; /* 02h */
171 U8 Function; /* 03h */ 179 U8 Function; /* 03h */
172 U8 Flags; /* 04h */ 180 U8 Flags; /* 04h */
173 U8 MaxDevices; /* 05h */ 181 U8 MaxDevices; /* 05h */
174 U8 MaxBuses; /* 06h */ 182 U8 MaxBuses; /* 06h */
175 U8 MsgFlags; /* 07h */ 183 U8 MsgFlags; /* 07h */
176 U32 MsgContext; /* 08h */ 184 U32 MsgContext; /* 08h */
177 U16 Reserved2; /* 0Ch */ 185 U16 Reserved2; /* 0Ch */
178 U16 IOCStatus; /* 0Eh */ 186 U16 IOCStatus; /* 0Eh */
179 U32 IOCLogInfo; /* 10h */ 187 U32 IOCLogInfo; /* 10h */
180 } MSG_IOC_INIT_REPLY, MPI_POINTER PTR_MSG_IOC_INIT_REPLY, 188 } MSG_IOC_INIT_REPLY, MPI_POINTER PTR_MSG_IOC_INIT_REPLY,
181 IOCInitReply_t, MPI_POINTER pIOCInitReply_t; 189 IOCInitReply_t, MPI_POINTER pIOCInitReply_t;
182 190
183 191
184 192
185 /****************************************************************************/ 193 /****************************************************************************/
186 /* IOC Facts message */ 194 /* IOC Facts message */
187 /****************************************************************************/ 195 /****************************************************************************/
188 196
189 typedef struct _MSG_IOC_FACTS 197 typedef struct _MSG_IOC_FACTS
190 { 198 {
191 U8 Reserved[2]; /* 00h */ 199 U8 Reserved[2]; /* 00h */
192 U8 ChainOffset; /* 01h */ 200 U8 ChainOffset; /* 01h */
193 U8 Function; /* 02h */ 201 U8 Function; /* 02h */
194 U8 Reserved1[3]; /* 03h */ 202 U8 Reserved1[3]; /* 03h */
195 U8 MsgFlags; /* 04h */ 203 U8 MsgFlags; /* 04h */
196 U32 MsgContext; /* 08h */ 204 U32 MsgContext; /* 08h */
197 } MSG_IOC_FACTS, MPI_POINTER PTR_IOC_FACTS, 205 } MSG_IOC_FACTS, MPI_POINTER PTR_IOC_FACTS,
198 IOCFacts_t, MPI_POINTER pIOCFacts_t; 206 IOCFacts_t, MPI_POINTER pIOCFacts_t;
199 207
200 typedef struct _MPI_FW_VERSION_STRUCT 208 typedef struct _MPI_FW_VERSION_STRUCT
201 { 209 {
202 U8 Dev; /* 00h */ 210 U8 Dev; /* 00h */
203 U8 Unit; /* 01h */ 211 U8 Unit; /* 01h */
204 U8 Minor; /* 02h */ 212 U8 Minor; /* 02h */
205 U8 Major; /* 03h */ 213 U8 Major; /* 03h */
206 } MPI_FW_VERSION_STRUCT; 214 } MPI_FW_VERSION_STRUCT;
207 215
208 typedef union _MPI_FW_VERSION 216 typedef union _MPI_FW_VERSION
209 { 217 {
210 MPI_FW_VERSION_STRUCT Struct; 218 MPI_FW_VERSION_STRUCT Struct;
211 U32 Word; 219 U32 Word;
212 } MPI_FW_VERSION; 220 } MPI_FW_VERSION;
213 221
214 /* IOC Facts Reply */ 222 /* IOC Facts Reply */
215 typedef struct _MSG_IOC_FACTS_REPLY 223 typedef struct _MSG_IOC_FACTS_REPLY
216 { 224 {
217 U16 MsgVersion; /* 00h */ 225 U16 MsgVersion; /* 00h */
218 U8 MsgLength; /* 02h */ 226 U8 MsgLength; /* 02h */
219 U8 Function; /* 03h */ 227 U8 Function; /* 03h */
220 U16 HeaderVersion; /* 04h */ 228 U16 HeaderVersion; /* 04h */
221 U8 IOCNumber; /* 06h */ 229 U8 IOCNumber; /* 06h */
222 U8 MsgFlags; /* 07h */ 230 U8 MsgFlags; /* 07h */
223 U32 MsgContext; /* 08h */ 231 U32 MsgContext; /* 08h */
224 U16 IOCExceptions; /* 0Ch */ 232 U16 IOCExceptions; /* 0Ch */
225 U16 IOCStatus; /* 0Eh */ 233 U16 IOCStatus; /* 0Eh */
226 U32 IOCLogInfo; /* 10h */ 234 U32 IOCLogInfo; /* 10h */
227 U8 MaxChainDepth; /* 14h */ 235 U8 MaxChainDepth; /* 14h */
228 U8 WhoInit; /* 15h */ 236 U8 WhoInit; /* 15h */
229 U8 BlockSize; /* 16h */ 237 U8 BlockSize; /* 16h */
230 U8 Flags; /* 17h */ 238 U8 Flags; /* 17h */
231 U16 ReplyQueueDepth; /* 18h */ 239 U16 ReplyQueueDepth; /* 18h */
232 U16 RequestFrameSize; /* 1Ah */ 240 U16 RequestFrameSize; /* 1Ah */
233 U16 Reserved_0101_FWVersion; /* 1Ch */ /* obsolete 16-bit FWVersion */ 241 U16 Reserved_0101_FWVersion; /* 1Ch */ /* obsolete 16-bit FWVersion */
234 U16 ProductID; /* 1Eh */ 242 U16 ProductID; /* 1Eh */
235 U32 CurrentHostMfaHighAddr; /* 20h */ 243 U32 CurrentHostMfaHighAddr; /* 20h */
236 U16 GlobalCredits; /* 24h */ 244 U16 GlobalCredits; /* 24h */
237 U8 NumberOfPorts; /* 26h */ 245 U8 NumberOfPorts; /* 26h */
238 U8 EventState; /* 27h */ 246 U8 EventState; /* 27h */
239 U32 CurrentSenseBufferHighAddr; /* 28h */ 247 U32 CurrentSenseBufferHighAddr; /* 28h */
240 U16 CurReplyFrameSize; /* 2Ch */ 248 U16 CurReplyFrameSize; /* 2Ch */
241 U8 MaxDevices; /* 2Eh */ 249 U8 MaxDevices; /* 2Eh */
242 U8 MaxBuses; /* 2Fh */ 250 U8 MaxBuses; /* 2Fh */
243 U32 FWImageSize; /* 30h */ 251 U32 FWImageSize; /* 30h */
244 U32 IOCCapabilities; /* 34h */ 252 U32 IOCCapabilities; /* 34h */
245 MPI_FW_VERSION FWVersion; /* 38h */ 253 MPI_FW_VERSION FWVersion; /* 38h */
246 U16 HighPriorityQueueDepth; /* 3Ch */ 254 U16 HighPriorityQueueDepth; /* 3Ch */
247 U16 Reserved2; /* 3Eh */ 255 U16 Reserved2; /* 3Eh */
248 SGE_SIMPLE_UNION HostPageBufferSGE; /* 40h */ 256 SGE_SIMPLE_UNION HostPageBufferSGE; /* 40h */
249 U32 ReplyFifoHostSignalingAddr; /* 4Ch */ 257 U32 ReplyFifoHostSignalingAddr; /* 4Ch */
250 } MSG_IOC_FACTS_REPLY, MPI_POINTER PTR_MSG_IOC_FACTS_REPLY, 258 } MSG_IOC_FACTS_REPLY, MPI_POINTER PTR_MSG_IOC_FACTS_REPLY,
251 IOCFactsReply_t, MPI_POINTER pIOCFactsReply_t; 259 IOCFactsReply_t, MPI_POINTER pIOCFactsReply_t;
252 260
253 #define MPI_IOCFACTS_MSGVERSION_MAJOR_MASK (0xFF00) 261 #define MPI_IOCFACTS_MSGVERSION_MAJOR_MASK (0xFF00)
254 #define MPI_IOCFACTS_MSGVERSION_MAJOR_SHIFT (8) 262 #define MPI_IOCFACTS_MSGVERSION_MAJOR_SHIFT (8)
255 #define MPI_IOCFACTS_MSGVERSION_MINOR_MASK (0x00FF) 263 #define MPI_IOCFACTS_MSGVERSION_MINOR_MASK (0x00FF)
256 #define MPI_IOCFACTS_MSGVERSION_MINOR_SHIFT (0) 264 #define MPI_IOCFACTS_MSGVERSION_MINOR_SHIFT (0)
257 265
258 #define MPI_IOCFACTS_HDRVERSION_UNIT_MASK (0xFF00) 266 #define MPI_IOCFACTS_HDRVERSION_UNIT_MASK (0xFF00)
259 #define MPI_IOCFACTS_HDRVERSION_UNIT_SHIFT (8) 267 #define MPI_IOCFACTS_HDRVERSION_UNIT_SHIFT (8)
260 #define MPI_IOCFACTS_HDRVERSION_DEV_MASK (0x00FF) 268 #define MPI_IOCFACTS_HDRVERSION_DEV_MASK (0x00FF)
261 #define MPI_IOCFACTS_HDRVERSION_DEV_SHIFT (0) 269 #define MPI_IOCFACTS_HDRVERSION_DEV_SHIFT (0)
262 270
263 #define MPI_IOCFACTS_EXCEPT_CONFIG_CHECKSUM_FAIL (0x0001) 271 #define MPI_IOCFACTS_EXCEPT_CONFIG_CHECKSUM_FAIL (0x0001)
264 #define MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID (0x0002) 272 #define MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID (0x0002)
265 #define MPI_IOCFACTS_EXCEPT_FW_CHECKSUM_FAIL (0x0004) 273 #define MPI_IOCFACTS_EXCEPT_FW_CHECKSUM_FAIL (0x0004)
266 #define MPI_IOCFACTS_EXCEPT_PERSISTENT_TABLE_FULL (0x0008) 274 #define MPI_IOCFACTS_EXCEPT_PERSISTENT_TABLE_FULL (0x0008)
275 #define MPI_IOCFACTS_EXCEPT_METADATA_UNSUPPORTED (0x0010)
267 276
268 #define MPI_IOCFACTS_FLAGS_FW_DOWNLOAD_BOOT (0x01) 277 #define MPI_IOCFACTS_FLAGS_FW_DOWNLOAD_BOOT (0x01)
269 #define MPI_IOCFACTS_FLAGS_REPLY_FIFO_HOST_SIGNAL (0x02) 278 #define MPI_IOCFACTS_FLAGS_REPLY_FIFO_HOST_SIGNAL (0x02)
270 #define MPI_IOCFACTS_FLAGS_HOST_PAGE_BUFFER_PERSISTENT (0x04) 279 #define MPI_IOCFACTS_FLAGS_HOST_PAGE_BUFFER_PERSISTENT (0x04)
271 280
272 #define MPI_IOCFACTS_EVENTSTATE_DISABLED (0x00) 281 #define MPI_IOCFACTS_EVENTSTATE_DISABLED (0x00)
273 #define MPI_IOCFACTS_EVENTSTATE_ENABLED (0x01) 282 #define MPI_IOCFACTS_EVENTSTATE_ENABLED (0x01)
274 283
275 #define MPI_IOCFACTS_CAPABILITY_HIGH_PRI_Q (0x00000001) 284 #define MPI_IOCFACTS_CAPABILITY_HIGH_PRI_Q (0x00000001)
276 #define MPI_IOCFACTS_CAPABILITY_REPLY_HOST_SIGNAL (0x00000002) 285 #define MPI_IOCFACTS_CAPABILITY_REPLY_HOST_SIGNAL (0x00000002)
277 #define MPI_IOCFACTS_CAPABILITY_QUEUE_FULL_HANDLING (0x00000004) 286 #define MPI_IOCFACTS_CAPABILITY_QUEUE_FULL_HANDLING (0x00000004)
278 #define MPI_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER (0x00000008) 287 #define MPI_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER (0x00000008)
279 #define MPI_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER (0x00000010) 288 #define MPI_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER (0x00000010)
280 #define MPI_IOCFACTS_CAPABILITY_EXTENDED_BUFFER (0x00000020) 289 #define MPI_IOCFACTS_CAPABILITY_EXTENDED_BUFFER (0x00000020)
281 #define MPI_IOCFACTS_CAPABILITY_EEDP (0x00000040) 290 #define MPI_IOCFACTS_CAPABILITY_EEDP (0x00000040)
282 #define MPI_IOCFACTS_CAPABILITY_BIDIRECTIONAL (0x00000080) 291 #define MPI_IOCFACTS_CAPABILITY_BIDIRECTIONAL (0x00000080)
283 #define MPI_IOCFACTS_CAPABILITY_MULTICAST (0x00000100) 292 #define MPI_IOCFACTS_CAPABILITY_MULTICAST (0x00000100)
284 #define MPI_IOCFACTS_CAPABILITY_SCSIIO32 (0x00000200) 293 #define MPI_IOCFACTS_CAPABILITY_SCSIIO32 (0x00000200)
285 #define MPI_IOCFACTS_CAPABILITY_NO_SCSIIO16 (0x00000400) 294 #define MPI_IOCFACTS_CAPABILITY_NO_SCSIIO16 (0x00000400)
286 #define MPI_IOCFACTS_CAPABILITY_TLR (0x00000800) 295 #define MPI_IOCFACTS_CAPABILITY_TLR (0x00000800)
287 296
288 297
289 /***************************************************************************** 298 /*****************************************************************************
290 * 299 *
291 * P o r t M e s s a g e s 300 * P o r t M e s s a g e s
292 * 301 *
293 *****************************************************************************/ 302 *****************************************************************************/
294 303
295 /****************************************************************************/ 304 /****************************************************************************/
296 /* Port Facts message and Reply */ 305 /* Port Facts message and Reply */
297 /****************************************************************************/ 306 /****************************************************************************/
298 307
299 typedef struct _MSG_PORT_FACTS 308 typedef struct _MSG_PORT_FACTS
300 { 309 {
301 U8 Reserved[2]; /* 00h */ 310 U8 Reserved[2]; /* 00h */
302 U8 ChainOffset; /* 02h */ 311 U8 ChainOffset; /* 02h */
303 U8 Function; /* 03h */ 312 U8 Function; /* 03h */
304 U8 Reserved1[2]; /* 04h */ 313 U8 Reserved1[2]; /* 04h */
305 U8 PortNumber; /* 06h */ 314 U8 PortNumber; /* 06h */
306 U8 MsgFlags; /* 07h */ 315 U8 MsgFlags; /* 07h */
307 U32 MsgContext; /* 08h */ 316 U32 MsgContext; /* 08h */
308 } MSG_PORT_FACTS, MPI_POINTER PTR_MSG_PORT_FACTS, 317 } MSG_PORT_FACTS, MPI_POINTER PTR_MSG_PORT_FACTS,
309 PortFacts_t, MPI_POINTER pPortFacts_t; 318 PortFacts_t, MPI_POINTER pPortFacts_t;
310 319
311 typedef struct _MSG_PORT_FACTS_REPLY 320 typedef struct _MSG_PORT_FACTS_REPLY
312 { 321 {
313 U16 Reserved; /* 00h */ 322 U16 Reserved; /* 00h */
314 U8 MsgLength; /* 02h */ 323 U8 MsgLength; /* 02h */
315 U8 Function; /* 03h */ 324 U8 Function; /* 03h */
316 U16 Reserved1; /* 04h */ 325 U16 Reserved1; /* 04h */
317 U8 PortNumber; /* 06h */ 326 U8 PortNumber; /* 06h */
318 U8 MsgFlags; /* 07h */ 327 U8 MsgFlags; /* 07h */
319 U32 MsgContext; /* 08h */ 328 U32 MsgContext; /* 08h */
320 U16 Reserved2; /* 0Ch */ 329 U16 Reserved2; /* 0Ch */
321 U16 IOCStatus; /* 0Eh */ 330 U16 IOCStatus; /* 0Eh */
322 U32 IOCLogInfo; /* 10h */ 331 U32 IOCLogInfo; /* 10h */
323 U8 Reserved3; /* 14h */ 332 U8 Reserved3; /* 14h */
324 U8 PortType; /* 15h */ 333 U8 PortType; /* 15h */
325 U16 MaxDevices; /* 16h */ 334 U16 MaxDevices; /* 16h */
326 U16 PortSCSIID; /* 18h */ 335 U16 PortSCSIID; /* 18h */
327 U16 ProtocolFlags; /* 1Ah */ 336 U16 ProtocolFlags; /* 1Ah */
328 U16 MaxPostedCmdBuffers; /* 1Ch */ 337 U16 MaxPostedCmdBuffers; /* 1Ch */
329 U16 MaxPersistentIDs; /* 1Eh */ 338 U16 MaxPersistentIDs; /* 1Eh */
330 U16 MaxLanBuckets; /* 20h */ 339 U16 MaxLanBuckets; /* 20h */
331 U16 Reserved4; /* 22h */ 340 U8 MaxInitiators; /* 22h */
341 U8 Reserved4; /* 23h */
332 U32 Reserved5; /* 24h */ 342 U32 Reserved5; /* 24h */
333 } MSG_PORT_FACTS_REPLY, MPI_POINTER PTR_MSG_PORT_FACTS_REPLY, 343 } MSG_PORT_FACTS_REPLY, MPI_POINTER PTR_MSG_PORT_FACTS_REPLY,
334 PortFactsReply_t, MPI_POINTER pPortFactsReply_t; 344 PortFactsReply_t, MPI_POINTER pPortFactsReply_t;
335 345
336 346
337 /* PortTypes values */ 347 /* PortTypes values */
338 348
339 #define MPI_PORTFACTS_PORTTYPE_INACTIVE (0x00) 349 #define MPI_PORTFACTS_PORTTYPE_INACTIVE (0x00)
340 #define MPI_PORTFACTS_PORTTYPE_SCSI (0x01) 350 #define MPI_PORTFACTS_PORTTYPE_SCSI (0x01)
341 #define MPI_PORTFACTS_PORTTYPE_FC (0x10) 351 #define MPI_PORTFACTS_PORTTYPE_FC (0x10)
342 #define MPI_PORTFACTS_PORTTYPE_ISCSI (0x20) 352 #define MPI_PORTFACTS_PORTTYPE_ISCSI (0x20)
343 #define MPI_PORTFACTS_PORTTYPE_SAS (0x30) 353 #define MPI_PORTFACTS_PORTTYPE_SAS (0x30)
344 354
345 /* ProtocolFlags values */ 355 /* ProtocolFlags values */
346 356
347 #define MPI_PORTFACTS_PROTOCOL_LOGBUSADDR (0x01) 357 #define MPI_PORTFACTS_PROTOCOL_LOGBUSADDR (0x01)
348 #define MPI_PORTFACTS_PROTOCOL_LAN (0x02) 358 #define MPI_PORTFACTS_PROTOCOL_LAN (0x02)
349 #define MPI_PORTFACTS_PROTOCOL_TARGET (0x04) 359 #define MPI_PORTFACTS_PROTOCOL_TARGET (0x04)
350 #define MPI_PORTFACTS_PROTOCOL_INITIATOR (0x08) 360 #define MPI_PORTFACTS_PROTOCOL_INITIATOR (0x08)
351 361
352 362
353 /****************************************************************************/ 363 /****************************************************************************/
354 /* Port Enable Message */ 364 /* Port Enable Message */
355 /****************************************************************************/ 365 /****************************************************************************/
356 366
357 typedef struct _MSG_PORT_ENABLE 367 typedef struct _MSG_PORT_ENABLE
358 { 368 {
359 U8 Reserved[2]; /* 00h */ 369 U8 Reserved[2]; /* 00h */
360 U8 ChainOffset; /* 02h */ 370 U8 ChainOffset; /* 02h */
361 U8 Function; /* 03h */ 371 U8 Function; /* 03h */
362 U8 Reserved1[2]; /* 04h */ 372 U8 Reserved1[2]; /* 04h */
363 U8 PortNumber; /* 06h */ 373 U8 PortNumber; /* 06h */
364 U8 MsgFlags; /* 07h */ 374 U8 MsgFlags; /* 07h */
365 U32 MsgContext; /* 08h */ 375 U32 MsgContext; /* 08h */
366 } MSG_PORT_ENABLE, MPI_POINTER PTR_MSG_PORT_ENABLE, 376 } MSG_PORT_ENABLE, MPI_POINTER PTR_MSG_PORT_ENABLE,
367 PortEnable_t, MPI_POINTER pPortEnable_t; 377 PortEnable_t, MPI_POINTER pPortEnable_t;
368 378
369 typedef struct _MSG_PORT_ENABLE_REPLY 379 typedef struct _MSG_PORT_ENABLE_REPLY
370 { 380 {
371 U8 Reserved[2]; /* 00h */ 381 U8 Reserved[2]; /* 00h */
372 U8 MsgLength; /* 02h */ 382 U8 MsgLength; /* 02h */
373 U8 Function; /* 03h */ 383 U8 Function; /* 03h */
374 U8 Reserved1[2]; /* 04h */ 384 U8 Reserved1[2]; /* 04h */
375 U8 PortNumber; /* 05h */ 385 U8 PortNumber; /* 05h */
376 U8 MsgFlags; /* 07h */ 386 U8 MsgFlags; /* 07h */
377 U32 MsgContext; /* 08h */ 387 U32 MsgContext; /* 08h */
378 U16 Reserved2; /* 0Ch */ 388 U16 Reserved2; /* 0Ch */
379 U16 IOCStatus; /* 0Eh */ 389 U16 IOCStatus; /* 0Eh */
380 U32 IOCLogInfo; /* 10h */ 390 U32 IOCLogInfo; /* 10h */
381 } MSG_PORT_ENABLE_REPLY, MPI_POINTER PTR_MSG_PORT_ENABLE_REPLY, 391 } MSG_PORT_ENABLE_REPLY, MPI_POINTER PTR_MSG_PORT_ENABLE_REPLY,
382 PortEnableReply_t, MPI_POINTER pPortEnableReply_t; 392 PortEnableReply_t, MPI_POINTER pPortEnableReply_t;
383 393
384 394
385 /***************************************************************************** 395 /*****************************************************************************
386 * 396 *
387 * E v e n t M e s s a g e s 397 * E v e n t M e s s a g e s
388 * 398 *
389 *****************************************************************************/ 399 *****************************************************************************/
390 400
391 /****************************************************************************/ 401 /****************************************************************************/
392 /* Event Notification messages */ 402 /* Event Notification messages */
393 /****************************************************************************/ 403 /****************************************************************************/
394 404
395 typedef struct _MSG_EVENT_NOTIFY 405 typedef struct _MSG_EVENT_NOTIFY
396 { 406 {
397 U8 Switch; /* 00h */ 407 U8 Switch; /* 00h */
398 U8 Reserved; /* 01h */ 408 U8 Reserved; /* 01h */
399 U8 ChainOffset; /* 02h */ 409 U8 ChainOffset; /* 02h */
400 U8 Function; /* 03h */ 410 U8 Function; /* 03h */
401 U8 Reserved1[3]; /* 04h */ 411 U8 Reserved1[3]; /* 04h */
402 U8 MsgFlags; /* 07h */ 412 U8 MsgFlags; /* 07h */
403 U32 MsgContext; /* 08h */ 413 U32 MsgContext; /* 08h */
404 } MSG_EVENT_NOTIFY, MPI_POINTER PTR_MSG_EVENT_NOTIFY, 414 } MSG_EVENT_NOTIFY, MPI_POINTER PTR_MSG_EVENT_NOTIFY,
405 EventNotification_t, MPI_POINTER pEventNotification_t; 415 EventNotification_t, MPI_POINTER pEventNotification_t;
406 416
407 /* Event Notification Reply */ 417 /* Event Notification Reply */
408 418
409 typedef struct _MSG_EVENT_NOTIFY_REPLY 419 typedef struct _MSG_EVENT_NOTIFY_REPLY
410 { 420 {
411 U16 EventDataLength; /* 00h */ 421 U16 EventDataLength; /* 00h */
412 U8 MsgLength; /* 02h */ 422 U8 MsgLength; /* 02h */
413 U8 Function; /* 03h */ 423 U8 Function; /* 03h */
414 U8 Reserved1[2]; /* 04h */ 424 U8 Reserved1[2]; /* 04h */
415 U8 AckRequired; /* 06h */ 425 U8 AckRequired; /* 06h */
416 U8 MsgFlags; /* 07h */ 426 U8 MsgFlags; /* 07h */
417 U32 MsgContext; /* 08h */ 427 U32 MsgContext; /* 08h */
418 U8 Reserved2[2]; /* 0Ch */ 428 U8 Reserved2[2]; /* 0Ch */
419 U16 IOCStatus; /* 0Eh */ 429 U16 IOCStatus; /* 0Eh */
420 U32 IOCLogInfo; /* 10h */ 430 U32 IOCLogInfo; /* 10h */
421 U32 Event; /* 14h */ 431 U32 Event; /* 14h */
422 U32 EventContext; /* 18h */ 432 U32 EventContext; /* 18h */
423 U32 Data[1]; /* 1Ch */ 433 U32 Data[1]; /* 1Ch */
424 } MSG_EVENT_NOTIFY_REPLY, MPI_POINTER PTR_MSG_EVENT_NOTIFY_REPLY, 434 } MSG_EVENT_NOTIFY_REPLY, MPI_POINTER PTR_MSG_EVENT_NOTIFY_REPLY,
425 EventNotificationReply_t, MPI_POINTER pEventNotificationReply_t; 435 EventNotificationReply_t, MPI_POINTER pEventNotificationReply_t;
426 436
427 /* Event Acknowledge */ 437 /* Event Acknowledge */
428 438
429 typedef struct _MSG_EVENT_ACK 439 typedef struct _MSG_EVENT_ACK
430 { 440 {
431 U8 Reserved[2]; /* 00h */ 441 U8 Reserved[2]; /* 00h */
432 U8 ChainOffset; /* 02h */ 442 U8 ChainOffset; /* 02h */
433 U8 Function; /* 03h */ 443 U8 Function; /* 03h */
434 U8 Reserved1[3]; /* 04h */ 444 U8 Reserved1[3]; /* 04h */
435 U8 MsgFlags; /* 07h */ 445 U8 MsgFlags; /* 07h */
436 U32 MsgContext; /* 08h */ 446 U32 MsgContext; /* 08h */
437 U32 Event; /* 0Ch */ 447 U32 Event; /* 0Ch */
438 U32 EventContext; /* 10h */ 448 U32 EventContext; /* 10h */
439 } MSG_EVENT_ACK, MPI_POINTER PTR_MSG_EVENT_ACK, 449 } MSG_EVENT_ACK, MPI_POINTER PTR_MSG_EVENT_ACK,
440 EventAck_t, MPI_POINTER pEventAck_t; 450 EventAck_t, MPI_POINTER pEventAck_t;
441 451
442 typedef struct _MSG_EVENT_ACK_REPLY 452 typedef struct _MSG_EVENT_ACK_REPLY
443 { 453 {
444 U8 Reserved[2]; /* 00h */ 454 U8 Reserved[2]; /* 00h */
445 U8 MsgLength; /* 02h */ 455 U8 MsgLength; /* 02h */
446 U8 Function; /* 03h */ 456 U8 Function; /* 03h */
447 U8 Reserved1[3]; /* 04h */ 457 U8 Reserved1[3]; /* 04h */
448 U8 MsgFlags; /* 07h */ 458 U8 MsgFlags; /* 07h */
449 U32 MsgContext; /* 08h */ 459 U32 MsgContext; /* 08h */
450 U16 Reserved2; /* 0Ch */ 460 U16 Reserved2; /* 0Ch */
451 U16 IOCStatus; /* 0Eh */ 461 U16 IOCStatus; /* 0Eh */
452 U32 IOCLogInfo; /* 10h */ 462 U32 IOCLogInfo; /* 10h */
453 } MSG_EVENT_ACK_REPLY, MPI_POINTER PTR_MSG_EVENT_ACK_REPLY, 463 } MSG_EVENT_ACK_REPLY, MPI_POINTER PTR_MSG_EVENT_ACK_REPLY,
454 EventAckReply_t, MPI_POINTER pEventAckReply_t; 464 EventAckReply_t, MPI_POINTER pEventAckReply_t;
455 465
456 /* Switch */ 466 /* Switch */
457 467
458 #define MPI_EVENT_NOTIFICATION_SWITCH_OFF (0x00) 468 #define MPI_EVENT_NOTIFICATION_SWITCH_OFF (0x00)
459 #define MPI_EVENT_NOTIFICATION_SWITCH_ON (0x01) 469 #define MPI_EVENT_NOTIFICATION_SWITCH_ON (0x01)
460 470
461 /* Event */ 471 /* Event */
462 472
463 #define MPI_EVENT_NONE (0x00000000) 473 #define MPI_EVENT_NONE (0x00000000)
464 #define MPI_EVENT_LOG_DATA (0x00000001) 474 #define MPI_EVENT_LOG_DATA (0x00000001)
465 #define MPI_EVENT_STATE_CHANGE (0x00000002) 475 #define MPI_EVENT_STATE_CHANGE (0x00000002)
466 #define MPI_EVENT_UNIT_ATTENTION (0x00000003) 476 #define MPI_EVENT_UNIT_ATTENTION (0x00000003)
467 #define MPI_EVENT_IOC_BUS_RESET (0x00000004) 477 #define MPI_EVENT_IOC_BUS_RESET (0x00000004)
468 #define MPI_EVENT_EXT_BUS_RESET (0x00000005) 478 #define MPI_EVENT_EXT_BUS_RESET (0x00000005)
469 #define MPI_EVENT_RESCAN (0x00000006) 479 #define MPI_EVENT_RESCAN (0x00000006)
470 #define MPI_EVENT_LINK_STATUS_CHANGE (0x00000007) 480 #define MPI_EVENT_LINK_STATUS_CHANGE (0x00000007)
471 #define MPI_EVENT_LOOP_STATE_CHANGE (0x00000008) 481 #define MPI_EVENT_LOOP_STATE_CHANGE (0x00000008)
472 #define MPI_EVENT_LOGOUT (0x00000009) 482 #define MPI_EVENT_LOGOUT (0x00000009)
473 #define MPI_EVENT_EVENT_CHANGE (0x0000000A) 483 #define MPI_EVENT_EVENT_CHANGE (0x0000000A)
474 #define MPI_EVENT_INTEGRATED_RAID (0x0000000B) 484 #define MPI_EVENT_INTEGRATED_RAID (0x0000000B)
475 #define MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE (0x0000000C) 485 #define MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE (0x0000000C)
476 #define MPI_EVENT_ON_BUS_TIMER_EXPIRED (0x0000000D) 486 #define MPI_EVENT_ON_BUS_TIMER_EXPIRED (0x0000000D)
477 #define MPI_EVENT_QUEUE_FULL (0x0000000E) 487 #define MPI_EVENT_QUEUE_FULL (0x0000000E)
478 #define MPI_EVENT_SAS_DEVICE_STATUS_CHANGE (0x0000000F) 488 #define MPI_EVENT_SAS_DEVICE_STATUS_CHANGE (0x0000000F)
479 #define MPI_EVENT_SAS_SES (0x00000010) 489 #define MPI_EVENT_SAS_SES (0x00000010)
480 #define MPI_EVENT_PERSISTENT_TABLE_FULL (0x00000011) 490 #define MPI_EVENT_PERSISTENT_TABLE_FULL (0x00000011)
481 #define MPI_EVENT_SAS_PHY_LINK_STATUS (0x00000012) 491 #define MPI_EVENT_SAS_PHY_LINK_STATUS (0x00000012)
482 #define MPI_EVENT_SAS_DISCOVERY_ERROR (0x00000013) 492 #define MPI_EVENT_SAS_DISCOVERY_ERROR (0x00000013)
483 #define MPI_EVENT_IR_RESYNC_UPDATE (0x00000014) 493 #define MPI_EVENT_IR_RESYNC_UPDATE (0x00000014)
484 #define MPI_EVENT_IR2 (0x00000015) 494 #define MPI_EVENT_IR2 (0x00000015)
485 #define MPI_EVENT_SAS_DISCOVERY (0x00000016) 495 #define MPI_EVENT_SAS_DISCOVERY (0x00000016)
486 #define MPI_EVENT_SAS_BROADCAST_PRIMITIVE (0x00000017) 496 #define MPI_EVENT_SAS_BROADCAST_PRIMITIVE (0x00000017)
487 #define MPI_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE (0x00000018) 497 #define MPI_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE (0x00000018)
488 #define MPI_EVENT_SAS_INIT_TABLE_OVERFLOW (0x00000019) 498 #define MPI_EVENT_SAS_INIT_TABLE_OVERFLOW (0x00000019)
489 #define MPI_EVENT_SAS_SMP_ERROR (0x0000001A) 499 #define MPI_EVENT_SAS_SMP_ERROR (0x0000001A)
500 #define MPI_EVENT_SAS_EXPANDER_STATUS_CHANGE (0x0000001B)
490 #define MPI_EVENT_LOG_ENTRY_ADDED (0x00000021) 501 #define MPI_EVENT_LOG_ENTRY_ADDED (0x00000021)
491 502
492 /* AckRequired field values */ 503 /* AckRequired field values */
493 504
494 #define MPI_EVENT_NOTIFICATION_ACK_NOT_REQUIRED (0x00) 505 #define MPI_EVENT_NOTIFICATION_ACK_NOT_REQUIRED (0x00)
495 #define MPI_EVENT_NOTIFICATION_ACK_REQUIRED (0x01) 506 #define MPI_EVENT_NOTIFICATION_ACK_REQUIRED (0x01)
496 507
497 /* EventChange Event data */ 508 /* EventChange Event data */
498 509
499 typedef struct _EVENT_DATA_EVENT_CHANGE 510 typedef struct _EVENT_DATA_EVENT_CHANGE
500 { 511 {
501 U8 EventState; /* 00h */ 512 U8 EventState; /* 00h */
502 U8 Reserved; /* 01h */ 513 U8 Reserved; /* 01h */
503 U16 Reserved1; /* 02h */ 514 U16 Reserved1; /* 02h */
504 } EVENT_DATA_EVENT_CHANGE, MPI_POINTER PTR_EVENT_DATA_EVENT_CHANGE, 515 } EVENT_DATA_EVENT_CHANGE, MPI_POINTER PTR_EVENT_DATA_EVENT_CHANGE,
505 EventDataEventChange_t, MPI_POINTER pEventDataEventChange_t; 516 EventDataEventChange_t, MPI_POINTER pEventDataEventChange_t;
506 517
507 /* LogEntryAdded Event data */ 518 /* LogEntryAdded Event data */
508 519
509 /* this structure matches MPI_LOG_0_ENTRY in mpi_cnfg.h */ 520 /* this structure matches MPI_LOG_0_ENTRY in mpi_cnfg.h */
510 #define MPI_EVENT_DATA_LOG_ENTRY_DATA_LENGTH (0x1C) 521 #define MPI_EVENT_DATA_LOG_ENTRY_DATA_LENGTH (0x1C)
511 typedef struct _EVENT_DATA_LOG_ENTRY 522 typedef struct _EVENT_DATA_LOG_ENTRY
512 { 523 {
513 U32 TimeStamp; /* 00h */ 524 U32 TimeStamp; /* 00h */
514 U32 Reserved1; /* 04h */ 525 U32 Reserved1; /* 04h */
515 U16 LogSequence; /* 08h */ 526 U16 LogSequence; /* 08h */
516 U16 LogEntryQualifier; /* 0Ah */ 527 U16 LogEntryQualifier; /* 0Ah */
517 U8 LogData[MPI_EVENT_DATA_LOG_ENTRY_DATA_LENGTH]; /* 0Ch */ 528 U8 LogData[MPI_EVENT_DATA_LOG_ENTRY_DATA_LENGTH]; /* 0Ch */
518 } EVENT_DATA_LOG_ENTRY, MPI_POINTER PTR_EVENT_DATA_LOG_ENTRY, 529 } EVENT_DATA_LOG_ENTRY, MPI_POINTER PTR_EVENT_DATA_LOG_ENTRY,
519 MpiEventDataLogEntry_t, MPI_POINTER pMpiEventDataLogEntry_t; 530 MpiEventDataLogEntry_t, MPI_POINTER pMpiEventDataLogEntry_t;
520 531
521 typedef struct _EVENT_DATA_LOG_ENTRY_ADDED 532 typedef struct _EVENT_DATA_LOG_ENTRY_ADDED
522 { 533 {
523 U16 LogSequence; /* 00h */ 534 U16 LogSequence; /* 00h */
524 U16 Reserved1; /* 02h */ 535 U16 Reserved1; /* 02h */
525 U32 Reserved2; /* 04h */ 536 U32 Reserved2; /* 04h */
526 EVENT_DATA_LOG_ENTRY LogEntry; /* 08h */ 537 EVENT_DATA_LOG_ENTRY LogEntry; /* 08h */
527 } EVENT_DATA_LOG_ENTRY_ADDED, MPI_POINTER PTR_EVENT_DATA_LOG_ENTRY_ADDED, 538 } EVENT_DATA_LOG_ENTRY_ADDED, MPI_POINTER PTR_EVENT_DATA_LOG_ENTRY_ADDED,
528 MpiEventDataLogEntryAdded_t, MPI_POINTER pMpiEventDataLogEntryAdded_t; 539 MpiEventDataLogEntryAdded_t, MPI_POINTER pMpiEventDataLogEntryAdded_t;
529 540
530 /* SCSI Event data for Port, Bus and Device forms */ 541 /* SCSI Event data for Port, Bus and Device forms */
531 542
532 typedef struct _EVENT_DATA_SCSI 543 typedef struct _EVENT_DATA_SCSI
533 { 544 {
534 U8 TargetID; /* 00h */ 545 U8 TargetID; /* 00h */
535 U8 BusPort; /* 01h */ 546 U8 BusPort; /* 01h */
536 U16 Reserved; /* 02h */ 547 U16 Reserved; /* 02h */
537 } EVENT_DATA_SCSI, MPI_POINTER PTR_EVENT_DATA_SCSI, 548 } EVENT_DATA_SCSI, MPI_POINTER PTR_EVENT_DATA_SCSI,
538 EventDataScsi_t, MPI_POINTER pEventDataScsi_t; 549 EventDataScsi_t, MPI_POINTER pEventDataScsi_t;
539 550
540 /* SCSI Device Status Change Event data */ 551 /* SCSI Device Status Change Event data */
541 552
542 typedef struct _EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE 553 typedef struct _EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE
543 { 554 {
544 U8 TargetID; /* 00h */ 555 U8 TargetID; /* 00h */
545 U8 Bus; /* 01h */ 556 U8 Bus; /* 01h */
546 U8 ReasonCode; /* 02h */ 557 U8 ReasonCode; /* 02h */
547 U8 LUN; /* 03h */ 558 U8 LUN; /* 03h */
548 U8 ASC; /* 04h */ 559 U8 ASC; /* 04h */
549 U8 ASCQ; /* 05h */ 560 U8 ASCQ; /* 05h */
550 U16 Reserved; /* 06h */ 561 U16 Reserved; /* 06h */
551 } EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE, 562 } EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE,
552 MPI_POINTER PTR_EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE, 563 MPI_POINTER PTR_EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE,
553 MpiEventDataScsiDeviceStatusChange_t, 564 MpiEventDataScsiDeviceStatusChange_t,
554 MPI_POINTER pMpiEventDataScsiDeviceStatusChange_t; 565 MPI_POINTER pMpiEventDataScsiDeviceStatusChange_t;
555 566
556 /* MPI SCSI Device Status Change Event data ReasonCode values */ 567 /* MPI SCSI Device Status Change Event data ReasonCode values */
557 #define MPI_EVENT_SCSI_DEV_STAT_RC_ADDED (0x03) 568 #define MPI_EVENT_SCSI_DEV_STAT_RC_ADDED (0x03)
558 #define MPI_EVENT_SCSI_DEV_STAT_RC_NOT_RESPONDING (0x04) 569 #define MPI_EVENT_SCSI_DEV_STAT_RC_NOT_RESPONDING (0x04)
559 #define MPI_EVENT_SCSI_DEV_STAT_RC_SMART_DATA (0x05) 570 #define MPI_EVENT_SCSI_DEV_STAT_RC_SMART_DATA (0x05)
560 571
561 /* SAS Device Status Change Event data */ 572 /* SAS Device Status Change Event data */
562 573
563 typedef struct _EVENT_DATA_SAS_DEVICE_STATUS_CHANGE 574 typedef struct _EVENT_DATA_SAS_DEVICE_STATUS_CHANGE
564 { 575 {
565 U8 TargetID; /* 00h */ 576 U8 TargetID; /* 00h */
566 U8 Bus; /* 01h */ 577 U8 Bus; /* 01h */
567 U8 ReasonCode; /* 02h */ 578 U8 ReasonCode; /* 02h */
568 U8 Reserved; /* 03h */ 579 U8 Reserved; /* 03h */
569 U8 ASC; /* 04h */ 580 U8 ASC; /* 04h */
570 U8 ASCQ; /* 05h */ 581 U8 ASCQ; /* 05h */
571 U16 DevHandle; /* 06h */ 582 U16 DevHandle; /* 06h */
572 U32 DeviceInfo; /* 08h */ 583 U32 DeviceInfo; /* 08h */
573 U16 ParentDevHandle; /* 0Ch */ 584 U16 ParentDevHandle; /* 0Ch */
574 U8 PhyNum; /* 0Eh */ 585 U8 PhyNum; /* 0Eh */
575 U8 Reserved1; /* 0Fh */ 586 U8 Reserved1; /* 0Fh */
576 U64 SASAddress; /* 10h */ 587 U64 SASAddress; /* 10h */
577 U8 LUN[8]; /* 18h */ 588 U8 LUN[8]; /* 18h */
578 U16 TaskTag; /* 20h */ 589 U16 TaskTag; /* 20h */
579 U16 Reserved2; /* 22h */ 590 U16 Reserved2; /* 22h */
580 } EVENT_DATA_SAS_DEVICE_STATUS_CHANGE, 591 } EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
581 MPI_POINTER PTR_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE, 592 MPI_POINTER PTR_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
582 MpiEventDataSasDeviceStatusChange_t, 593 MpiEventDataSasDeviceStatusChange_t,
583 MPI_POINTER pMpiEventDataSasDeviceStatusChange_t; 594 MPI_POINTER pMpiEventDataSasDeviceStatusChange_t;
584 595
585 /* MPI SAS Device Status Change Event data ReasonCode values */ 596 /* MPI SAS Device Status Change Event data ReasonCode values */
586 #define MPI_EVENT_SAS_DEV_STAT_RC_ADDED (0x03) 597 #define MPI_EVENT_SAS_DEV_STAT_RC_ADDED (0x03)
587 #define MPI_EVENT_SAS_DEV_STAT_RC_NOT_RESPONDING (0x04) 598 #define MPI_EVENT_SAS_DEV_STAT_RC_NOT_RESPONDING (0x04)
588 #define MPI_EVENT_SAS_DEV_STAT_RC_SMART_DATA (0x05) 599 #define MPI_EVENT_SAS_DEV_STAT_RC_SMART_DATA (0x05)
589 #define MPI_EVENT_SAS_DEV_STAT_RC_NO_PERSIST_ADDED (0x06) 600 #define MPI_EVENT_SAS_DEV_STAT_RC_NO_PERSIST_ADDED (0x06)
590 #define MPI_EVENT_SAS_DEV_STAT_RC_UNSUPPORTED (0x07) 601 #define MPI_EVENT_SAS_DEV_STAT_RC_UNSUPPORTED (0x07)
591 #define MPI_EVENT_SAS_DEV_STAT_RC_INTERNAL_DEVICE_RESET (0x08) 602 #define MPI_EVENT_SAS_DEV_STAT_RC_INTERNAL_DEVICE_RESET (0x08)
592 #define MPI_EVENT_SAS_DEV_STAT_RC_TASK_ABORT_INTERNAL (0x09) 603 #define MPI_EVENT_SAS_DEV_STAT_RC_TASK_ABORT_INTERNAL (0x09)
593 #define MPI_EVENT_SAS_DEV_STAT_RC_ABORT_TASK_SET_INTERNAL (0x0A) 604 #define MPI_EVENT_SAS_DEV_STAT_RC_ABORT_TASK_SET_INTERNAL (0x0A)
594 #define MPI_EVENT_SAS_DEV_STAT_RC_CLEAR_TASK_SET_INTERNAL (0x0B) 605 #define MPI_EVENT_SAS_DEV_STAT_RC_CLEAR_TASK_SET_INTERNAL (0x0B)
595 #define MPI_EVENT_SAS_DEV_STAT_RC_QUERY_TASK_INTERNAL (0x0C) 606 #define MPI_EVENT_SAS_DEV_STAT_RC_QUERY_TASK_INTERNAL (0x0C)
607 #define MPI_EVENT_SAS_DEV_STAT_RC_ASYNC_NOTIFICATION (0x0D)
596 608
597 609
598 /* SCSI Event data for Queue Full event */ 610 /* SCSI Event data for Queue Full event */
599 611
600 typedef struct _EVENT_DATA_QUEUE_FULL 612 typedef struct _EVENT_DATA_QUEUE_FULL
601 { 613 {
602 U8 TargetID; /* 00h */ 614 U8 TargetID; /* 00h */
603 U8 Bus; /* 01h */ 615 U8 Bus; /* 01h */
604 U16 CurrentDepth; /* 02h */ 616 U16 CurrentDepth; /* 02h */
605 } EVENT_DATA_QUEUE_FULL, MPI_POINTER PTR_EVENT_DATA_QUEUE_FULL, 617 } EVENT_DATA_QUEUE_FULL, MPI_POINTER PTR_EVENT_DATA_QUEUE_FULL,
606 EventDataQueueFull_t, MPI_POINTER pEventDataQueueFull_t; 618 EventDataQueueFull_t, MPI_POINTER pEventDataQueueFull_t;
607 619
608 /* MPI Integrated RAID Event data */ 620 /* MPI Integrated RAID Event data */
609 621
610 typedef struct _EVENT_DATA_RAID 622 typedef struct _EVENT_DATA_RAID
611 { 623 {
612 U8 VolumeID; /* 00h */ 624 U8 VolumeID; /* 00h */
613 U8 VolumeBus; /* 01h */ 625 U8 VolumeBus; /* 01h */
614 U8 ReasonCode; /* 02h */ 626 U8 ReasonCode; /* 02h */
615 U8 PhysDiskNum; /* 03h */ 627 U8 PhysDiskNum; /* 03h */
616 U8 ASC; /* 04h */ 628 U8 ASC; /* 04h */
617 U8 ASCQ; /* 05h */ 629 U8 ASCQ; /* 05h */
618 U16 Reserved; /* 06h */ 630 U16 Reserved; /* 06h */
619 U32 SettingsStatus; /* 08h */ 631 U32 SettingsStatus; /* 08h */
620 } EVENT_DATA_RAID, MPI_POINTER PTR_EVENT_DATA_RAID, 632 } EVENT_DATA_RAID, MPI_POINTER PTR_EVENT_DATA_RAID,
621 MpiEventDataRaid_t, MPI_POINTER pMpiEventDataRaid_t; 633 MpiEventDataRaid_t, MPI_POINTER pMpiEventDataRaid_t;
622 634
623 /* MPI Integrated RAID Event data ReasonCode values */ 635 /* MPI Integrated RAID Event data ReasonCode values */
624 #define MPI_EVENT_RAID_RC_VOLUME_CREATED (0x00) 636 #define MPI_EVENT_RAID_RC_VOLUME_CREATED (0x00)
625 #define MPI_EVENT_RAID_RC_VOLUME_DELETED (0x01) 637 #define MPI_EVENT_RAID_RC_VOLUME_DELETED (0x01)
626 #define MPI_EVENT_RAID_RC_VOLUME_SETTINGS_CHANGED (0x02) 638 #define MPI_EVENT_RAID_RC_VOLUME_SETTINGS_CHANGED (0x02)
627 #define MPI_EVENT_RAID_RC_VOLUME_STATUS_CHANGED (0x03) 639 #define MPI_EVENT_RAID_RC_VOLUME_STATUS_CHANGED (0x03)
628 #define MPI_EVENT_RAID_RC_VOLUME_PHYSDISK_CHANGED (0x04) 640 #define MPI_EVENT_RAID_RC_VOLUME_PHYSDISK_CHANGED (0x04)
629 #define MPI_EVENT_RAID_RC_PHYSDISK_CREATED (0x05) 641 #define MPI_EVENT_RAID_RC_PHYSDISK_CREATED (0x05)
630 #define MPI_EVENT_RAID_RC_PHYSDISK_DELETED (0x06) 642 #define MPI_EVENT_RAID_RC_PHYSDISK_DELETED (0x06)
631 #define MPI_EVENT_RAID_RC_PHYSDISK_SETTINGS_CHANGED (0x07) 643 #define MPI_EVENT_RAID_RC_PHYSDISK_SETTINGS_CHANGED (0x07)
632 #define MPI_EVENT_RAID_RC_PHYSDISK_STATUS_CHANGED (0x08) 644 #define MPI_EVENT_RAID_RC_PHYSDISK_STATUS_CHANGED (0x08)
633 #define MPI_EVENT_RAID_RC_DOMAIN_VAL_NEEDED (0x09) 645 #define MPI_EVENT_RAID_RC_DOMAIN_VAL_NEEDED (0x09)
634 #define MPI_EVENT_RAID_RC_SMART_DATA (0x0A) 646 #define MPI_EVENT_RAID_RC_SMART_DATA (0x0A)
635 #define MPI_EVENT_RAID_RC_REPLACE_ACTION_STARTED (0x0B) 647 #define MPI_EVENT_RAID_RC_REPLACE_ACTION_STARTED (0x0B)
636 648
637 649
638 /* MPI Integrated RAID Resync Update Event data */ 650 /* MPI Integrated RAID Resync Update Event data */
639 651
640 typedef struct _MPI_EVENT_DATA_IR_RESYNC_UPDATE 652 typedef struct _MPI_EVENT_DATA_IR_RESYNC_UPDATE
641 { 653 {
642 U8 VolumeID; /* 00h */ 654 U8 VolumeID; /* 00h */
643 U8 VolumeBus; /* 01h */ 655 U8 VolumeBus; /* 01h */
644 U8 ResyncComplete; /* 02h */ 656 U8 ResyncComplete; /* 02h */
645 U8 Reserved1; /* 03h */ 657 U8 Reserved1; /* 03h */
646 U32 Reserved2; /* 04h */ 658 U32 Reserved2; /* 04h */
647 } MPI_EVENT_DATA_IR_RESYNC_UPDATE, 659 } MPI_EVENT_DATA_IR_RESYNC_UPDATE,
648 MPI_POINTER PTR_MPI_EVENT_DATA_IR_RESYNC_UPDATE, 660 MPI_POINTER PTR_MPI_EVENT_DATA_IR_RESYNC_UPDATE,
649 MpiEventDataIrResyncUpdate_t, MPI_POINTER pMpiEventDataIrResyncUpdate_t; 661 MpiEventDataIrResyncUpdate_t, MPI_POINTER pMpiEventDataIrResyncUpdate_t;
650 662
651 /* MPI IR2 Event data */ 663 /* MPI IR2 Event data */
652 664
653 /* MPI_LD_STATE or MPI_PD_STATE */ 665 /* MPI_LD_STATE or MPI_PD_STATE */
654 typedef struct _IR2_STATE_CHANGED 666 typedef struct _IR2_STATE_CHANGED
655 { 667 {
656 U16 PreviousState; /* 00h */ 668 U16 PreviousState; /* 00h */
657 U16 NewState; /* 02h */ 669 U16 NewState; /* 02h */
658 } IR2_STATE_CHANGED, MPI_POINTER PTR_IR2_STATE_CHANGED; 670 } IR2_STATE_CHANGED, MPI_POINTER PTR_IR2_STATE_CHANGED;
659 671
660 typedef struct _IR2_PD_INFO 672 typedef struct _IR2_PD_INFO
661 { 673 {
662 U16 DeviceHandle; /* 00h */ 674 U16 DeviceHandle; /* 00h */
663 U8 TruncEnclosureHandle; /* 02h */ 675 U8 TruncEnclosureHandle; /* 02h */
664 U8 TruncatedSlot; /* 03h */ 676 U8 TruncatedSlot; /* 03h */
665 } IR2_PD_INFO, MPI_POINTER PTR_IR2_PD_INFO; 677 } IR2_PD_INFO, MPI_POINTER PTR_IR2_PD_INFO;
666 678
667 typedef union _MPI_IR2_RC_EVENT_DATA 679 typedef union _MPI_IR2_RC_EVENT_DATA
668 { 680 {
669 IR2_STATE_CHANGED StateChanged; 681 IR2_STATE_CHANGED StateChanged;
670 U32 Lba; 682 U32 Lba;
671 IR2_PD_INFO PdInfo; 683 IR2_PD_INFO PdInfo;
672 } MPI_IR2_RC_EVENT_DATA, MPI_POINTER PTR_MPI_IR2_RC_EVENT_DATA; 684 } MPI_IR2_RC_EVENT_DATA, MPI_POINTER PTR_MPI_IR2_RC_EVENT_DATA;
673 685
674 typedef struct _MPI_EVENT_DATA_IR2 686 typedef struct _MPI_EVENT_DATA_IR2
675 { 687 {
676 U8 TargetID; /* 00h */ 688 U8 TargetID; /* 00h */
677 U8 Bus; /* 01h */ 689 U8 Bus; /* 01h */
678 U8 ReasonCode; /* 02h */ 690 U8 ReasonCode; /* 02h */
679 U8 PhysDiskNum; /* 03h */ 691 U8 PhysDiskNum; /* 03h */
680 MPI_IR2_RC_EVENT_DATA IR2EventData; /* 04h */ 692 MPI_IR2_RC_EVENT_DATA IR2EventData; /* 04h */
681 } MPI_EVENT_DATA_IR2, MPI_POINTER PTR_MPI_EVENT_DATA_IR2, 693 } MPI_EVENT_DATA_IR2, MPI_POINTER PTR_MPI_EVENT_DATA_IR2,
682 MpiEventDataIR2_t, MPI_POINTER pMpiEventDataIR2_t; 694 MpiEventDataIR2_t, MPI_POINTER pMpiEventDataIR2_t;
683 695
684 /* MPI IR2 Event data ReasonCode values */ 696 /* MPI IR2 Event data ReasonCode values */
685 #define MPI_EVENT_IR2_RC_LD_STATE_CHANGED (0x01) 697 #define MPI_EVENT_IR2_RC_LD_STATE_CHANGED (0x01)
686 #define MPI_EVENT_IR2_RC_PD_STATE_CHANGED (0x02) 698 #define MPI_EVENT_IR2_RC_PD_STATE_CHANGED (0x02)
687 #define MPI_EVENT_IR2_RC_BAD_BLOCK_TABLE_FULL (0x03) 699 #define MPI_EVENT_IR2_RC_BAD_BLOCK_TABLE_FULL (0x03)
688 #define MPI_EVENT_IR2_RC_PD_INSERTED (0x04) 700 #define MPI_EVENT_IR2_RC_PD_INSERTED (0x04)
689 #define MPI_EVENT_IR2_RC_PD_REMOVED (0x05) 701 #define MPI_EVENT_IR2_RC_PD_REMOVED (0x05)
690 #define MPI_EVENT_IR2_RC_FOREIGN_CFG_DETECTED (0x06) 702 #define MPI_EVENT_IR2_RC_FOREIGN_CFG_DETECTED (0x06)
691 #define MPI_EVENT_IR2_RC_REBUILD_MEDIUM_ERROR (0x07) 703 #define MPI_EVENT_IR2_RC_REBUILD_MEDIUM_ERROR (0x07)
692 704
693 /* defines for logical disk states */ 705 /* defines for logical disk states */
694 #define MPI_LD_STATE_OPTIMAL (0x00) 706 #define MPI_LD_STATE_OPTIMAL (0x00)
695 #define MPI_LD_STATE_DEGRADED (0x01) 707 #define MPI_LD_STATE_DEGRADED (0x01)
696 #define MPI_LD_STATE_FAILED (0x02) 708 #define MPI_LD_STATE_FAILED (0x02)
697 #define MPI_LD_STATE_MISSING (0x03) 709 #define MPI_LD_STATE_MISSING (0x03)
698 #define MPI_LD_STATE_OFFLINE (0x04) 710 #define MPI_LD_STATE_OFFLINE (0x04)
699 711
700 /* defines for physical disk states */ 712 /* defines for physical disk states */
701 #define MPI_PD_STATE_ONLINE (0x00) 713 #define MPI_PD_STATE_ONLINE (0x00)
702 #define MPI_PD_STATE_MISSING (0x01) 714 #define MPI_PD_STATE_MISSING (0x01)
703 #define MPI_PD_STATE_NOT_COMPATIBLE (0x02) 715 #define MPI_PD_STATE_NOT_COMPATIBLE (0x02)
704 #define MPI_PD_STATE_FAILED (0x03) 716 #define MPI_PD_STATE_FAILED (0x03)
705 #define MPI_PD_STATE_INITIALIZING (0x04) 717 #define MPI_PD_STATE_INITIALIZING (0x04)
706 #define MPI_PD_STATE_OFFLINE_AT_HOST_REQUEST (0x05) 718 #define MPI_PD_STATE_OFFLINE_AT_HOST_REQUEST (0x05)
707 #define MPI_PD_STATE_FAILED_AT_HOST_REQUEST (0x06) 719 #define MPI_PD_STATE_FAILED_AT_HOST_REQUEST (0x06)
708 #define MPI_PD_STATE_OFFLINE_FOR_ANOTHER_REASON (0xFF) 720 #define MPI_PD_STATE_OFFLINE_FOR_ANOTHER_REASON (0xFF)
709 721
710 /* MPI Link Status Change Event data */ 722 /* MPI Link Status Change Event data */
711 723
712 typedef struct _EVENT_DATA_LINK_STATUS 724 typedef struct _EVENT_DATA_LINK_STATUS
713 { 725 {
714 U8 State; /* 00h */ 726 U8 State; /* 00h */
715 U8 Reserved; /* 01h */ 727 U8 Reserved; /* 01h */
716 U16 Reserved1; /* 02h */ 728 U16 Reserved1; /* 02h */
717 U8 Reserved2; /* 04h */ 729 U8 Reserved2; /* 04h */
718 U8 Port; /* 05h */ 730 U8 Port; /* 05h */
719 U16 Reserved3; /* 06h */ 731 U16 Reserved3; /* 06h */
720 } EVENT_DATA_LINK_STATUS, MPI_POINTER PTR_EVENT_DATA_LINK_STATUS, 732 } EVENT_DATA_LINK_STATUS, MPI_POINTER PTR_EVENT_DATA_LINK_STATUS,
721 EventDataLinkStatus_t, MPI_POINTER pEventDataLinkStatus_t; 733 EventDataLinkStatus_t, MPI_POINTER pEventDataLinkStatus_t;
722 734
723 #define MPI_EVENT_LINK_STATUS_FAILURE (0x00000000) 735 #define MPI_EVENT_LINK_STATUS_FAILURE (0x00000000)
724 #define MPI_EVENT_LINK_STATUS_ACTIVE (0x00000001) 736 #define MPI_EVENT_LINK_STATUS_ACTIVE (0x00000001)
725 737
726 /* MPI Loop State Change Event data */ 738 /* MPI Loop State Change Event data */
727 739
728 typedef struct _EVENT_DATA_LOOP_STATE 740 typedef struct _EVENT_DATA_LOOP_STATE
729 { 741 {
730 U8 Character4; /* 00h */ 742 U8 Character4; /* 00h */
731 U8 Character3; /* 01h */ 743 U8 Character3; /* 01h */
732 U8 Type; /* 02h */ 744 U8 Type; /* 02h */
733 U8 Reserved; /* 03h */ 745 U8 Reserved; /* 03h */
734 U8 Reserved1; /* 04h */ 746 U8 Reserved1; /* 04h */
735 U8 Port; /* 05h */ 747 U8 Port; /* 05h */
736 U16 Reserved2; /* 06h */ 748 U16 Reserved2; /* 06h */
737 } EVENT_DATA_LOOP_STATE, MPI_POINTER PTR_EVENT_DATA_LOOP_STATE, 749 } EVENT_DATA_LOOP_STATE, MPI_POINTER PTR_EVENT_DATA_LOOP_STATE,
738 EventDataLoopState_t, MPI_POINTER pEventDataLoopState_t; 750 EventDataLoopState_t, MPI_POINTER pEventDataLoopState_t;
739 751
740 #define MPI_EVENT_LOOP_STATE_CHANGE_LIP (0x0001) 752 #define MPI_EVENT_LOOP_STATE_CHANGE_LIP (0x0001)
741 #define MPI_EVENT_LOOP_STATE_CHANGE_LPE (0x0002) 753 #define MPI_EVENT_LOOP_STATE_CHANGE_LPE (0x0002)
742 #define MPI_EVENT_LOOP_STATE_CHANGE_LPB (0x0003) 754 #define MPI_EVENT_LOOP_STATE_CHANGE_LPB (0x0003)
743 755
744 /* MPI LOGOUT Event data */ 756 /* MPI LOGOUT Event data */
745 757
746 typedef struct _EVENT_DATA_LOGOUT 758 typedef struct _EVENT_DATA_LOGOUT
747 { 759 {
748 U32 NPortID; /* 00h */ 760 U32 NPortID; /* 00h */
749 U8 AliasIndex; /* 04h */ 761 U8 AliasIndex; /* 04h */
750 U8 Port; /* 05h */ 762 U8 Port; /* 05h */
751 U16 Reserved1; /* 06h */ 763 U16 Reserved1; /* 06h */
752 } EVENT_DATA_LOGOUT, MPI_POINTER PTR_EVENT_DATA_LOGOUT, 764 } EVENT_DATA_LOGOUT, MPI_POINTER PTR_EVENT_DATA_LOGOUT,
753 EventDataLogout_t, MPI_POINTER pEventDataLogout_t; 765 EventDataLogout_t, MPI_POINTER pEventDataLogout_t;
754 766
755 #define MPI_EVENT_LOGOUT_ALL_ALIASES (0xFF) 767 #define MPI_EVENT_LOGOUT_ALL_ALIASES (0xFF)
756 768
757 /* SAS SES Event data */ 769 /* SAS SES Event data */
758 770
759 typedef struct _EVENT_DATA_SAS_SES 771 typedef struct _EVENT_DATA_SAS_SES
760 { 772 {
761 U8 PhyNum; /* 00h */ 773 U8 PhyNum; /* 00h */
762 U8 Port; /* 01h */ 774 U8 Port; /* 01h */
763 U8 PortWidth; /* 02h */ 775 U8 PortWidth; /* 02h */
764 U8 Reserved1; /* 04h */ 776 U8 Reserved1; /* 04h */
765 } EVENT_DATA_SAS_SES, MPI_POINTER PTR_EVENT_DATA_SAS_SES, 777 } EVENT_DATA_SAS_SES, MPI_POINTER PTR_EVENT_DATA_SAS_SES,
766 MpiEventDataSasSes_t, MPI_POINTER pMpiEventDataSasSes_t; 778 MpiEventDataSasSes_t, MPI_POINTER pMpiEventDataSasSes_t;
767 779
768 /* SAS Broadcast Primitive Event data */ 780 /* SAS Broadcast Primitive Event data */
769 781
770 typedef struct _EVENT_DATA_SAS_BROADCAST_PRIMITIVE 782 typedef struct _EVENT_DATA_SAS_BROADCAST_PRIMITIVE
771 { 783 {
772 U8 PhyNum; /* 00h */ 784 U8 PhyNum; /* 00h */
773 U8 Port; /* 01h */ 785 U8 Port; /* 01h */
774 U8 PortWidth; /* 02h */ 786 U8 PortWidth; /* 02h */
775 U8 Primitive; /* 04h */ 787 U8 Primitive; /* 04h */
776 } EVENT_DATA_SAS_BROADCAST_PRIMITIVE, 788 } EVENT_DATA_SAS_BROADCAST_PRIMITIVE,
777 MPI_POINTER PTR_EVENT_DATA_SAS_BROADCAST_PRIMITIVE, 789 MPI_POINTER PTR_EVENT_DATA_SAS_BROADCAST_PRIMITIVE,
778 MpiEventDataSasBroadcastPrimitive_t, 790 MpiEventDataSasBroadcastPrimitive_t,
779 MPI_POINTER pMpiEventDataSasBroadcastPrimitive_t; 791 MPI_POINTER pMpiEventDataSasBroadcastPrimitive_t;
780 792
781 #define MPI_EVENT_PRIMITIVE_CHANGE (0x01) 793 #define MPI_EVENT_PRIMITIVE_CHANGE (0x01)
782 #define MPI_EVENT_PRIMITIVE_EXPANDER (0x03) 794 #define MPI_EVENT_PRIMITIVE_EXPANDER (0x03)
783 #define MPI_EVENT_PRIMITIVE_RESERVED2 (0x04) 795 #define MPI_EVENT_PRIMITIVE_RESERVED2 (0x04)
784 #define MPI_EVENT_PRIMITIVE_RESERVED3 (0x05) 796 #define MPI_EVENT_PRIMITIVE_RESERVED3 (0x05)
785 #define MPI_EVENT_PRIMITIVE_RESERVED4 (0x06) 797 #define MPI_EVENT_PRIMITIVE_RESERVED4 (0x06)
786 #define MPI_EVENT_PRIMITIVE_CHANGE0_RESERVED (0x07) 798 #define MPI_EVENT_PRIMITIVE_CHANGE0_RESERVED (0x07)
787 #define MPI_EVENT_PRIMITIVE_CHANGE1_RESERVED (0x08) 799 #define MPI_EVENT_PRIMITIVE_CHANGE1_RESERVED (0x08)
788 800
789 /* SAS Phy Link Status Event data */ 801 /* SAS Phy Link Status Event data */
790 802
791 typedef struct _EVENT_DATA_SAS_PHY_LINK_STATUS 803 typedef struct _EVENT_DATA_SAS_PHY_LINK_STATUS
792 { 804 {
793 U8 PhyNum; /* 00h */ 805 U8 PhyNum; /* 00h */
794 U8 LinkRates; /* 01h */ 806 U8 LinkRates; /* 01h */
795 U16 DevHandle; /* 02h */ 807 U16 DevHandle; /* 02h */
796 U64 SASAddress; /* 04h */ 808 U64 SASAddress; /* 04h */
797 } EVENT_DATA_SAS_PHY_LINK_STATUS, MPI_POINTER PTR_EVENT_DATA_SAS_PHY_LINK_STATUS, 809 } EVENT_DATA_SAS_PHY_LINK_STATUS, MPI_POINTER PTR_EVENT_DATA_SAS_PHY_LINK_STATUS,
798 MpiEventDataSasPhyLinkStatus_t, MPI_POINTER pMpiEventDataSasPhyLinkStatus_t; 810 MpiEventDataSasPhyLinkStatus_t, MPI_POINTER pMpiEventDataSasPhyLinkStatus_t;
799 811
800 /* defines for the LinkRates field of the SAS PHY Link Status event */ 812 /* defines for the LinkRates field of the SAS PHY Link Status event */
801 #define MPI_EVENT_SAS_PLS_LR_CURRENT_MASK (0xF0) 813 #define MPI_EVENT_SAS_PLS_LR_CURRENT_MASK (0xF0)
802 #define MPI_EVENT_SAS_PLS_LR_CURRENT_SHIFT (4) 814 #define MPI_EVENT_SAS_PLS_LR_CURRENT_SHIFT (4)
803 #define MPI_EVENT_SAS_PLS_LR_PREVIOUS_MASK (0x0F) 815 #define MPI_EVENT_SAS_PLS_LR_PREVIOUS_MASK (0x0F)
804 #define MPI_EVENT_SAS_PLS_LR_PREVIOUS_SHIFT (0) 816 #define MPI_EVENT_SAS_PLS_LR_PREVIOUS_SHIFT (0)
805 #define MPI_EVENT_SAS_PLS_LR_RATE_UNKNOWN (0x00) 817 #define MPI_EVENT_SAS_PLS_LR_RATE_UNKNOWN (0x00)
806 #define MPI_EVENT_SAS_PLS_LR_RATE_PHY_DISABLED (0x01) 818 #define MPI_EVENT_SAS_PLS_LR_RATE_PHY_DISABLED (0x01)
807 #define MPI_EVENT_SAS_PLS_LR_RATE_FAILED_SPEED_NEGOTIATION (0x02) 819 #define MPI_EVENT_SAS_PLS_LR_RATE_FAILED_SPEED_NEGOTIATION (0x02)
808 #define MPI_EVENT_SAS_PLS_LR_RATE_SATA_OOB_COMPLETE (0x03) 820 #define MPI_EVENT_SAS_PLS_LR_RATE_SATA_OOB_COMPLETE (0x03)
809 #define MPI_EVENT_SAS_PLS_LR_RATE_1_5 (0x08) 821 #define MPI_EVENT_SAS_PLS_LR_RATE_1_5 (0x08)
810 #define MPI_EVENT_SAS_PLS_LR_RATE_3_0 (0x09) 822 #define MPI_EVENT_SAS_PLS_LR_RATE_3_0 (0x09)
811 823
812 /* SAS Discovery Event data */ 824 /* SAS Discovery Event data */
813 825
814 typedef struct _EVENT_DATA_SAS_DISCOVERY 826 typedef struct _EVENT_DATA_SAS_DISCOVERY
815 { 827 {
816 U32 DiscoveryStatus; /* 00h */ 828 U32 DiscoveryStatus; /* 00h */
817 U32 Reserved1; /* 04h */ 829 U32 Reserved1; /* 04h */
818 } EVENT_DATA_SAS_DISCOVERY, MPI_POINTER PTR_EVENT_DATA_SAS_DISCOVERY, 830 } EVENT_DATA_SAS_DISCOVERY, MPI_POINTER PTR_EVENT_DATA_SAS_DISCOVERY,
819 EventDataSasDiscovery_t, MPI_POINTER pEventDataSasDiscovery_t; 831 EventDataSasDiscovery_t, MPI_POINTER pEventDataSasDiscovery_t;
820 832
821 #define MPI_EVENT_SAS_DSCVRY_COMPLETE (0x00000000) 833 #define MPI_EVENT_SAS_DSCVRY_COMPLETE (0x00000000)
822 #define MPI_EVENT_SAS_DSCVRY_IN_PROGRESS (0x00000001) 834 #define MPI_EVENT_SAS_DSCVRY_IN_PROGRESS (0x00000001)
823 #define MPI_EVENT_SAS_DSCVRY_PHY_BITS_MASK (0xFFFF0000) 835 #define MPI_EVENT_SAS_DSCVRY_PHY_BITS_MASK (0xFFFF0000)
824 #define MPI_EVENT_SAS_DSCVRY_PHY_BITS_SHIFT (16) 836 #define MPI_EVENT_SAS_DSCVRY_PHY_BITS_SHIFT (16)
825 837
826 /* SAS Discovery Errror Event data */ 838 /* SAS Discovery Errror Event data */
827 839
828 typedef struct _EVENT_DATA_DISCOVERY_ERROR 840 typedef struct _EVENT_DATA_DISCOVERY_ERROR
829 { 841 {
830 U32 DiscoveryStatus; /* 00h */ 842 U32 DiscoveryStatus; /* 00h */
831 U8 Port; /* 04h */ 843 U8 Port; /* 04h */
832 U8 Reserved1; /* 05h */ 844 U8 Reserved1; /* 05h */
833 U16 Reserved2; /* 06h */ 845 U16 Reserved2; /* 06h */
834 } EVENT_DATA_DISCOVERY_ERROR, MPI_POINTER PTR_EVENT_DATA_DISCOVERY_ERROR, 846 } EVENT_DATA_DISCOVERY_ERROR, MPI_POINTER PTR_EVENT_DATA_DISCOVERY_ERROR,
835 EventDataDiscoveryError_t, MPI_POINTER pEventDataDiscoveryError_t; 847 EventDataDiscoveryError_t, MPI_POINTER pEventDataDiscoveryError_t;
836 848
837 #define MPI_EVENT_DSCVRY_ERR_DS_LOOP_DETECTED (0x00000001) 849 #define MPI_EVENT_DSCVRY_ERR_DS_LOOP_DETECTED (0x00000001)
838 #define MPI_EVENT_DSCVRY_ERR_DS_UNADDRESSABLE_DEVICE (0x00000002) 850 #define MPI_EVENT_DSCVRY_ERR_DS_UNADDRESSABLE_DEVICE (0x00000002)
839 #define MPI_EVENT_DSCVRY_ERR_DS_MULTIPLE_PORTS (0x00000004) 851 #define MPI_EVENT_DSCVRY_ERR_DS_MULTIPLE_PORTS (0x00000004)
840 #define MPI_EVENT_DSCVRY_ERR_DS_EXPANDER_ERR (0x00000008) 852 #define MPI_EVENT_DSCVRY_ERR_DS_EXPANDER_ERR (0x00000008)
841 #define MPI_EVENT_DSCVRY_ERR_DS_SMP_TIMEOUT (0x00000010) 853 #define MPI_EVENT_DSCVRY_ERR_DS_SMP_TIMEOUT (0x00000010)
842 #define MPI_EVENT_DSCVRY_ERR_DS_OUT_ROUTE_ENTRIES (0x00000020) 854 #define MPI_EVENT_DSCVRY_ERR_DS_OUT_ROUTE_ENTRIES (0x00000020)
843 #define MPI_EVENT_DSCVRY_ERR_DS_INDEX_NOT_EXIST (0x00000040) 855 #define MPI_EVENT_DSCVRY_ERR_DS_INDEX_NOT_EXIST (0x00000040)
844 #define MPI_EVENT_DSCVRY_ERR_DS_SMP_FUNCTION_FAILED (0x00000080) 856 #define MPI_EVENT_DSCVRY_ERR_DS_SMP_FUNCTION_FAILED (0x00000080)
845 #define MPI_EVENT_DSCVRY_ERR_DS_SMP_CRC_ERROR (0x00000100) 857 #define MPI_EVENT_DSCVRY_ERR_DS_SMP_CRC_ERROR (0x00000100)
846 #define MPI_EVENT_DSCVRY_ERR_DS_MULTPL_SUBTRACTIVE (0x00000200) 858 #define MPI_EVENT_DSCVRY_ERR_DS_MULTPL_SUBTRACTIVE (0x00000200)
847 #define MPI_EVENT_DSCVRY_ERR_DS_TABLE_TO_TABLE (0x00000400) 859 #define MPI_EVENT_DSCVRY_ERR_DS_TABLE_TO_TABLE (0x00000400)
848 #define MPI_EVENT_DSCVRY_ERR_DS_MULTPL_PATHS (0x00000800) 860 #define MPI_EVENT_DSCVRY_ERR_DS_MULTPL_PATHS (0x00000800)
849 #define MPI_EVENT_DSCVRY_ERR_DS_MAX_SATA_TARGETS (0x00001000) 861 #define MPI_EVENT_DSCVRY_ERR_DS_MAX_SATA_TARGETS (0x00001000)
850 862
851 /* SAS SMP Error Event data */ 863 /* SAS SMP Error Event data */
852 864
853 typedef struct _EVENT_DATA_SAS_SMP_ERROR 865 typedef struct _EVENT_DATA_SAS_SMP_ERROR
854 { 866 {
855 U8 Status; /* 00h */ 867 U8 Status; /* 00h */
856 U8 Port; /* 01h */ 868 U8 Port; /* 01h */
857 U8 SMPFunctionResult; /* 02h */ 869 U8 SMPFunctionResult; /* 02h */
858 U8 Reserved1; /* 03h */ 870 U8 Reserved1; /* 03h */
859 U64 SASAddress; /* 04h */ 871 U64 SASAddress; /* 04h */
860 } EVENT_DATA_SAS_SMP_ERROR, MPI_POINTER PTR_EVENT_DATA_SAS_SMP_ERROR, 872 } EVENT_DATA_SAS_SMP_ERROR, MPI_POINTER PTR_EVENT_DATA_SAS_SMP_ERROR,
861 MpiEventDataSasSmpError_t, MPI_POINTER pMpiEventDataSasSmpError_t; 873 MpiEventDataSasSmpError_t, MPI_POINTER pMpiEventDataSasSmpError_t;
862 874
863 /* defines for the Status field of the SAS SMP Error event */ 875 /* defines for the Status field of the SAS SMP Error event */
864 #define MPI_EVENT_SAS_SMP_FUNCTION_RESULT_VALID (0x00) 876 #define MPI_EVENT_SAS_SMP_FUNCTION_RESULT_VALID (0x00)
865 #define MPI_EVENT_SAS_SMP_CRC_ERROR (0x01) 877 #define MPI_EVENT_SAS_SMP_CRC_ERROR (0x01)
866 #define MPI_EVENT_SAS_SMP_TIMEOUT (0x02) 878 #define MPI_EVENT_SAS_SMP_TIMEOUT (0x02)
867 #define MPI_EVENT_SAS_SMP_NO_DESTINATION (0x03) 879 #define MPI_EVENT_SAS_SMP_NO_DESTINATION (0x03)
868 #define MPI_EVENT_SAS_SMP_BAD_DESTINATION (0x04) 880 #define MPI_EVENT_SAS_SMP_BAD_DESTINATION (0x04)
869 881
870 /* SAS Initiator Device Status Change Event data */ 882 /* SAS Initiator Device Status Change Event data */
871 883
872 typedef struct _EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE 884 typedef struct _EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE
873 { 885 {
874 U8 ReasonCode; /* 00h */ 886 U8 ReasonCode; /* 00h */
875 U8 Port; /* 01h */ 887 U8 Port; /* 01h */
876 U16 DevHandle; /* 02h */ 888 U16 DevHandle; /* 02h */
877 U64 SASAddress; /* 04h */ 889 U64 SASAddress; /* 04h */
878 } EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE, 890 } EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE,
879 MPI_POINTER PTR_EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE, 891 MPI_POINTER PTR_EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE,
880 MpiEventDataSasInitDevStatusChange_t, 892 MpiEventDataSasInitDevStatusChange_t,
881 MPI_POINTER pMpiEventDataSasInitDevStatusChange_t; 893 MPI_POINTER pMpiEventDataSasInitDevStatusChange_t;
882 894
883 /* defines for the ReasonCode field of the SAS Initiator Device Status Change event */ 895 /* defines for the ReasonCode field of the SAS Initiator Device Status Change event */
884 #define MPI_EVENT_SAS_INIT_RC_ADDED (0x01) 896 #define MPI_EVENT_SAS_INIT_RC_ADDED (0x01)
885 897
886 /* SAS Initiator Device Table Overflow Event data */ 898 /* SAS Initiator Device Table Overflow Event data */
887 899
888 typedef struct _EVENT_DATA_SAS_INIT_TABLE_OVERFLOW 900 typedef struct _EVENT_DATA_SAS_INIT_TABLE_OVERFLOW
889 { 901 {
890 U8 MaxInit; /* 00h */ 902 U8 MaxInit; /* 00h */
891 U8 CurrentInit; /* 01h */ 903 U8 CurrentInit; /* 01h */
892 U16 Reserved1; /* 02h */ 904 U16 Reserved1; /* 02h */
893 } EVENT_DATA_SAS_INIT_TABLE_OVERFLOW, 905 } EVENT_DATA_SAS_INIT_TABLE_OVERFLOW,
894 MPI_POINTER PTR_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW, 906 MPI_POINTER PTR_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW,
895 MpiEventDataSasInitTableOverflow_t, 907 MpiEventDataSasInitTableOverflow_t,
896 MPI_POINTER pMpiEventDataSasInitTableOverflow_t; 908 MPI_POINTER pMpiEventDataSasInitTableOverflow_t;
897 909
910 /* SAS Expander Status Change Event data */
898 911
912 typedef struct _EVENT_DATA_SAS_EXPANDER_STATUS_CHANGE
913 {
914 U8 ReasonCode; /* 00h */
915 U8 Reserved1; /* 01h */
916 U16 Reserved2; /* 02h */
917 U8 PhysicalPort; /* 04h */
918 U8 Reserved3; /* 05h */
919 U16 EnclosureHandle; /* 06h */
920 U64 SASAddress; /* 08h */
921 U32 DiscoveryStatus; /* 10h */
922 U16 DevHandle; /* 14h */
923 U16 ParentDevHandle; /* 16h */
924 U16 ExpanderChangeCount; /* 18h */
925 U16 ExpanderRouteIndexes; /* 1Ah */
926 U8 NumPhys; /* 1Ch */
927 U8 SASLevel; /* 1Dh */
928 U8 Flags; /* 1Eh */
929 U8 Reserved4; /* 1Fh */
930 } EVENT_DATA_SAS_EXPANDER_STATUS_CHANGE,
931 MPI_POINTER PTR_EVENT_DATA_SAS_EXPANDER_STATUS_CHANGE,
932 MpiEventDataSasExpanderStatusChange_t,
933 MPI_POINTER pMpiEventDataSasExpanderStatusChange_t;
934
935 /* values for ReasonCode field of SAS Expander Status Change Event data */
936 #define MPI_EVENT_SAS_EXP_RC_ADDED (0x00)
937 #define MPI_EVENT_SAS_EXP_RC_NOT_RESPONDING (0x01)
938
939 /* values for DiscoveryStatus field of SAS Expander Status Change Event data */
940 #define MPI_EVENT_SAS_EXP_DS_LOOP_DETECTED (0x00000001)
941 #define MPI_EVENT_SAS_EXP_DS_UNADDRESSABLE_DEVICE (0x00000002)
942 #define MPI_EVENT_SAS_EXP_DS_MULTIPLE_PORTS (0x00000004)
943 #define MPI_EVENT_SAS_EXP_DS_EXPANDER_ERR (0x00000008)
944 #define MPI_EVENT_SAS_EXP_DS_SMP_TIMEOUT (0x00000010)
945 #define MPI_EVENT_SAS_EXP_DS_OUT_ROUTE_ENTRIES (0x00000020)
946 #define MPI_EVENT_SAS_EXP_DS_INDEX_NOT_EXIST (0x00000040)
947 #define MPI_EVENT_SAS_EXP_DS_SMP_FUNCTION_FAILED (0x00000080)
948 #define MPI_EVENT_SAS_EXP_DS_SMP_CRC_ERROR (0x00000100)
949 #define MPI_EVENT_SAS_EXP_DS_SUBTRACTIVE_LINK (0x00000200)
950 #define MPI_EVENT_SAS_EXP_DS_TABLE_LINK (0x00000400)
951 #define MPI_EVENT_SAS_EXP_DS_UNSUPPORTED_DEVICE (0x00000800)
952
953 /* values for Flags field of SAS Expander Status Change Event data */
954 #define MPI_EVENT_SAS_EXP_FLAGS_ROUTE_TABLE_CONFIG (0x02)
955 #define MPI_EVENT_SAS_EXP_FLAGS_CONFIG_IN_PROGRESS (0x01)
956
957
958
899 /***************************************************************************** 959 /*****************************************************************************
900 * 960 *
901 * F i r m w a r e L o a d M e s s a g e s 961 * F i r m w a r e L o a d M e s s a g e s
902 * 962 *
903 *****************************************************************************/ 963 *****************************************************************************/
904 964
905 /****************************************************************************/ 965 /****************************************************************************/
906 /* Firmware Download message and associated structures */ 966 /* Firmware Download message and associated structures */
907 /****************************************************************************/ 967 /****************************************************************************/
908 968
909 typedef struct _MSG_FW_DOWNLOAD 969 typedef struct _MSG_FW_DOWNLOAD
910 { 970 {
911 U8 ImageType; /* 00h */ 971 U8 ImageType; /* 00h */
912 U8 Reserved; /* 01h */ 972 U8 Reserved; /* 01h */
913 U8 ChainOffset; /* 02h */ 973 U8 ChainOffset; /* 02h */
914 U8 Function; /* 03h */ 974 U8 Function; /* 03h */
915 U8 Reserved1[3]; /* 04h */ 975 U8 Reserved1[3]; /* 04h */
916 U8 MsgFlags; /* 07h */ 976 U8 MsgFlags; /* 07h */
917 U32 MsgContext; /* 08h */ 977 U32 MsgContext; /* 08h */
918 SGE_MPI_UNION SGL; /* 0Ch */ 978 SGE_MPI_UNION SGL; /* 0Ch */
919 } MSG_FW_DOWNLOAD, MPI_POINTER PTR_MSG_FW_DOWNLOAD, 979 } MSG_FW_DOWNLOAD, MPI_POINTER PTR_MSG_FW_DOWNLOAD,
920 FWDownload_t, MPI_POINTER pFWDownload_t; 980 FWDownload_t, MPI_POINTER pFWDownload_t;
921 981
922 #define MPI_FW_DOWNLOAD_MSGFLGS_LAST_SEGMENT (0x01) 982 #define MPI_FW_DOWNLOAD_MSGFLGS_LAST_SEGMENT (0x01)
923 983
924 #define MPI_FW_DOWNLOAD_ITYPE_RESERVED (0x00) 984 #define MPI_FW_DOWNLOAD_ITYPE_RESERVED (0x00)
925 #define MPI_FW_DOWNLOAD_ITYPE_FW (0x01) 985 #define MPI_FW_DOWNLOAD_ITYPE_FW (0x01)
926 #define MPI_FW_DOWNLOAD_ITYPE_BIOS (0x02) 986 #define MPI_FW_DOWNLOAD_ITYPE_BIOS (0x02)
927 #define MPI_FW_DOWNLOAD_ITYPE_NVDATA (0x03) 987 #define MPI_FW_DOWNLOAD_ITYPE_NVDATA (0x03)
928 #define MPI_FW_DOWNLOAD_ITYPE_BOOTLOADER (0x04) 988 #define MPI_FW_DOWNLOAD_ITYPE_BOOTLOADER (0x04)
989 #define MPI_FW_DOWNLOAD_ITYPE_MANUFACTURING (0x06)
990 #define MPI_FW_DOWNLOAD_ITYPE_CONFIG_1 (0x07)
991 #define MPI_FW_DOWNLOAD_ITYPE_CONFIG_2 (0x08)
992 #define MPI_FW_DOWNLOAD_ITYPE_MEGARAID (0x09)
929 993
930 994
931 typedef struct _FWDownloadTCSGE 995 typedef struct _FWDownloadTCSGE
932 { 996 {
933 U8 Reserved; /* 00h */ 997 U8 Reserved; /* 00h */
934 U8 ContextSize; /* 01h */ 998 U8 ContextSize; /* 01h */
935 U8 DetailsLength; /* 02h */ 999 U8 DetailsLength; /* 02h */
936 U8 Flags; /* 03h */ 1000 U8 Flags; /* 03h */
937 U32 Reserved_0100_Checksum; /* 04h */ /* obsolete Checksum */ 1001 U32 Reserved_0100_Checksum; /* 04h */ /* obsolete Checksum */
938 U32 ImageOffset; /* 08h */ 1002 U32 ImageOffset; /* 08h */
939 U32 ImageSize; /* 0Ch */ 1003 U32 ImageSize; /* 0Ch */
940 } FW_DOWNLOAD_TCSGE, MPI_POINTER PTR_FW_DOWNLOAD_TCSGE, 1004 } FW_DOWNLOAD_TCSGE, MPI_POINTER PTR_FW_DOWNLOAD_TCSGE,
941 FWDownloadTCSGE_t, MPI_POINTER pFWDownloadTCSGE_t; 1005 FWDownloadTCSGE_t, MPI_POINTER pFWDownloadTCSGE_t;
942 1006
943 /* Firmware Download reply */ 1007 /* Firmware Download reply */
944 typedef struct _MSG_FW_DOWNLOAD_REPLY 1008 typedef struct _MSG_FW_DOWNLOAD_REPLY
945 { 1009 {
946 U8 ImageType; /* 00h */ 1010 U8 ImageType; /* 00h */
947 U8 Reserved; /* 01h */ 1011 U8 Reserved; /* 01h */
948 U8 MsgLength; /* 02h */ 1012 U8 MsgLength; /* 02h */
949 U8 Function; /* 03h */ 1013 U8 Function; /* 03h */
950 U8 Reserved1[3]; /* 04h */ 1014 U8 Reserved1[3]; /* 04h */
951 U8 MsgFlags; /* 07h */ 1015 U8 MsgFlags; /* 07h */
952 U32 MsgContext; /* 08h */ 1016 U32 MsgContext; /* 08h */
953 U16 Reserved2; /* 0Ch */ 1017 U16 Reserved2; /* 0Ch */
954 U16 IOCStatus; /* 0Eh */ 1018 U16 IOCStatus; /* 0Eh */
955 U32 IOCLogInfo; /* 10h */ 1019 U32 IOCLogInfo; /* 10h */
956 } MSG_FW_DOWNLOAD_REPLY, MPI_POINTER PTR_MSG_FW_DOWNLOAD_REPLY, 1020 } MSG_FW_DOWNLOAD_REPLY, MPI_POINTER PTR_MSG_FW_DOWNLOAD_REPLY,
957 FWDownloadReply_t, MPI_POINTER pFWDownloadReply_t; 1021 FWDownloadReply_t, MPI_POINTER pFWDownloadReply_t;
958 1022
959 1023
960 /****************************************************************************/ 1024 /****************************************************************************/
961 /* Firmware Upload message and associated structures */ 1025 /* Firmware Upload message and associated structures */
962 /****************************************************************************/ 1026 /****************************************************************************/
963 1027
964 typedef struct _MSG_FW_UPLOAD 1028 typedef struct _MSG_FW_UPLOAD
965 { 1029 {
966 U8 ImageType; /* 00h */ 1030 U8 ImageType; /* 00h */
967 U8 Reserved; /* 01h */ 1031 U8 Reserved; /* 01h */
968 U8 ChainOffset; /* 02h */ 1032 U8 ChainOffset; /* 02h */
969 U8 Function; /* 03h */ 1033 U8 Function; /* 03h */
970 U8 Reserved1[3]; /* 04h */ 1034 U8 Reserved1[3]; /* 04h */
971 U8 MsgFlags; /* 07h */ 1035 U8 MsgFlags; /* 07h */
972 U32 MsgContext; /* 08h */ 1036 U32 MsgContext; /* 08h */
973 SGE_MPI_UNION SGL; /* 0Ch */ 1037 SGE_MPI_UNION SGL; /* 0Ch */
974 } MSG_FW_UPLOAD, MPI_POINTER PTR_MSG_FW_UPLOAD, 1038 } MSG_FW_UPLOAD, MPI_POINTER PTR_MSG_FW_UPLOAD,
975 FWUpload_t, MPI_POINTER pFWUpload_t; 1039 FWUpload_t, MPI_POINTER pFWUpload_t;
976 1040
977 #define MPI_FW_UPLOAD_ITYPE_FW_IOC_MEM (0x00) 1041 #define MPI_FW_UPLOAD_ITYPE_FW_IOC_MEM (0x00)
978 #define MPI_FW_UPLOAD_ITYPE_FW_FLASH (0x01) 1042 #define MPI_FW_UPLOAD_ITYPE_FW_FLASH (0x01)
979 #define MPI_FW_UPLOAD_ITYPE_BIOS_FLASH (0x02) 1043 #define MPI_FW_UPLOAD_ITYPE_BIOS_FLASH (0x02)
980 #define MPI_FW_UPLOAD_ITYPE_NVDATA (0x03) 1044 #define MPI_FW_UPLOAD_ITYPE_NVDATA (0x03)
981 #define MPI_FW_UPLOAD_ITYPE_BOOTLOADER (0x04) 1045 #define MPI_FW_UPLOAD_ITYPE_BOOTLOADER (0x04)
982 #define MPI_FW_UPLOAD_ITYPE_FW_BACKUP (0x05) 1046 #define MPI_FW_UPLOAD_ITYPE_FW_BACKUP (0x05)
1047 #define MPI_FW_UPLOAD_ITYPE_MANUFACTURING (0x06)
1048 #define MPI_FW_UPLOAD_ITYPE_CONFIG_1 (0x07)
1049 #define MPI_FW_UPLOAD_ITYPE_CONFIG_2 (0x08)
1050 #define MPI_FW_UPLOAD_ITYPE_MEGARAID (0x09)
1051 #define MPI_FW_UPLOAD_ITYPE_COMPLETE (0x0A)
983 1052
984 typedef struct _FWUploadTCSGE 1053 typedef struct _FWUploadTCSGE
985 { 1054 {
986 U8 Reserved; /* 00h */ 1055 U8 Reserved; /* 00h */
987 U8 ContextSize; /* 01h */ 1056 U8 ContextSize; /* 01h */
988 U8 DetailsLength; /* 02h */ 1057 U8 DetailsLength; /* 02h */
989 U8 Flags; /* 03h */ 1058 U8 Flags; /* 03h */
990 U32 Reserved1; /* 04h */ 1059 U32 Reserved1; /* 04h */
991 U32 ImageOffset; /* 08h */ 1060 U32 ImageOffset; /* 08h */
992 U32 ImageSize; /* 0Ch */ 1061 U32 ImageSize; /* 0Ch */
993 } FW_UPLOAD_TCSGE, MPI_POINTER PTR_FW_UPLOAD_TCSGE, 1062 } FW_UPLOAD_TCSGE, MPI_POINTER PTR_FW_UPLOAD_TCSGE,
994 FWUploadTCSGE_t, MPI_POINTER pFWUploadTCSGE_t; 1063 FWUploadTCSGE_t, MPI_POINTER pFWUploadTCSGE_t;
995 1064
996 /* Firmware Upload reply */ 1065 /* Firmware Upload reply */
997 typedef struct _MSG_FW_UPLOAD_REPLY 1066 typedef struct _MSG_FW_UPLOAD_REPLY
998 { 1067 {
999 U8 ImageType; /* 00h */ 1068 U8 ImageType; /* 00h */
1000 U8 Reserved; /* 01h */ 1069 U8 Reserved; /* 01h */
1001 U8 MsgLength; /* 02h */ 1070 U8 MsgLength; /* 02h */
1002 U8 Function; /* 03h */ 1071 U8 Function; /* 03h */
1003 U8 Reserved1[3]; /* 04h */ 1072 U8 Reserved1[3]; /* 04h */
1004 U8 MsgFlags; /* 07h */ 1073 U8 MsgFlags; /* 07h */
1005 U32 MsgContext; /* 08h */ 1074 U32 MsgContext; /* 08h */
1006 U16 Reserved2; /* 0Ch */ 1075 U16 Reserved2; /* 0Ch */
1007 U16 IOCStatus; /* 0Eh */ 1076 U16 IOCStatus; /* 0Eh */
1008 U32 IOCLogInfo; /* 10h */ 1077 U32 IOCLogInfo; /* 10h */
1009 U32 ActualImageSize; /* 14h */ 1078 U32 ActualImageSize; /* 14h */
1010 } MSG_FW_UPLOAD_REPLY, MPI_POINTER PTR_MSG_FW_UPLOAD_REPLY, 1079 } MSG_FW_UPLOAD_REPLY, MPI_POINTER PTR_MSG_FW_UPLOAD_REPLY,
1011 FWUploadReply_t, MPI_POINTER pFWUploadReply_t; 1080 FWUploadReply_t, MPI_POINTER pFWUploadReply_t;
1012 1081
1013 1082
1014 typedef struct _MPI_FW_HEADER 1083 typedef struct _MPI_FW_HEADER
1015 { 1084 {
1016 U32 ArmBranchInstruction0; /* 00h */ 1085 U32 ArmBranchInstruction0; /* 00h */
1017 U32 Signature0; /* 04h */ 1086 U32 Signature0; /* 04h */
1018 U32 Signature1; /* 08h */ 1087 U32 Signature1; /* 08h */
1019 U32 Signature2; /* 0Ch */ 1088 U32 Signature2; /* 0Ch */
1020 U32 ArmBranchInstruction1; /* 10h */ 1089 U32 ArmBranchInstruction1; /* 10h */
1021 U32 ArmBranchInstruction2; /* 14h */ 1090 U32 ArmBranchInstruction2; /* 14h */
1022 U32 Reserved; /* 18h */ 1091 U32 Reserved; /* 18h */
1023 U32 Checksum; /* 1Ch */ 1092 U32 Checksum; /* 1Ch */
1024 U16 VendorId; /* 20h */ 1093 U16 VendorId; /* 20h */
1025 U16 ProductId; /* 22h */ 1094 U16 ProductId; /* 22h */
1026 MPI_FW_VERSION FWVersion; /* 24h */ 1095 MPI_FW_VERSION FWVersion; /* 24h */
1027 U32 SeqCodeVersion; /* 28h */ 1096 U32 SeqCodeVersion; /* 28h */
1028 U32 ImageSize; /* 2Ch */ 1097 U32 ImageSize; /* 2Ch */
1029 U32 NextImageHeaderOffset; /* 30h */ 1098 U32 NextImageHeaderOffset; /* 30h */
1030 U32 LoadStartAddress; /* 34h */ 1099 U32 LoadStartAddress; /* 34h */
1031 U32 IopResetVectorValue; /* 38h */ 1100 U32 IopResetVectorValue; /* 38h */
1032 U32 IopResetRegAddr; /* 3Ch */ 1101 U32 IopResetRegAddr; /* 3Ch */
1033 U32 VersionNameWhat; /* 40h */ 1102 U32 VersionNameWhat; /* 40h */
1034 U8 VersionName[32]; /* 44h */ 1103 U8 VersionName[32]; /* 44h */
1035 U32 VendorNameWhat; /* 64h */ 1104 U32 VendorNameWhat; /* 64h */
1036 U8 VendorName[32]; /* 68h */ 1105 U8 VendorName[32]; /* 68h */
1037 } MPI_FW_HEADER, MPI_POINTER PTR_MPI_FW_HEADER, 1106 } MPI_FW_HEADER, MPI_POINTER PTR_MPI_FW_HEADER,
1038 MpiFwHeader_t, MPI_POINTER pMpiFwHeader_t; 1107 MpiFwHeader_t, MPI_POINTER pMpiFwHeader_t;
1039 1108
1040 #define MPI_FW_HEADER_WHAT_SIGNATURE (0x29232840) 1109 #define MPI_FW_HEADER_WHAT_SIGNATURE (0x29232840)
1041 1110
1042 /* defines for using the ProductId field */ 1111 /* defines for using the ProductId field */
1043 #define MPI_FW_HEADER_PID_TYPE_MASK (0xF000) 1112 #define MPI_FW_HEADER_PID_TYPE_MASK (0xF000)
1044 #define MPI_FW_HEADER_PID_TYPE_SCSI (0x0000) 1113 #define MPI_FW_HEADER_PID_TYPE_SCSI (0x0000)
1045 #define MPI_FW_HEADER_PID_TYPE_FC (0x1000) 1114 #define MPI_FW_HEADER_PID_TYPE_FC (0x1000)
1046 #define MPI_FW_HEADER_PID_TYPE_SAS (0x2000) 1115 #define MPI_FW_HEADER_PID_TYPE_SAS (0x2000)
1047 1116
1048 #define MPI_FW_HEADER_SIGNATURE_0 (0x5AEAA55A) 1117 #define MPI_FW_HEADER_SIGNATURE_0 (0x5AEAA55A)
1049 #define MPI_FW_HEADER_SIGNATURE_1 (0xA55AEAA5) 1118 #define MPI_FW_HEADER_SIGNATURE_1 (0xA55AEAA5)
1050 #define MPI_FW_HEADER_SIGNATURE_2 (0x5AA55AEA) 1119 #define MPI_FW_HEADER_SIGNATURE_2 (0x5AA55AEA)
1051 1120
1052 #define MPI_FW_HEADER_PID_PROD_MASK (0x0F00) 1121 #define MPI_FW_HEADER_PID_PROD_MASK (0x0F00)
1053 #define MPI_FW_HEADER_PID_PROD_INITIATOR_SCSI (0x0100) 1122 #define MPI_FW_HEADER_PID_PROD_INITIATOR_SCSI (0x0100)
1054 #define MPI_FW_HEADER_PID_PROD_TARGET_INITIATOR_SCSI (0x0200) 1123 #define MPI_FW_HEADER_PID_PROD_TARGET_INITIATOR_SCSI (0x0200)
1055 #define MPI_FW_HEADER_PID_PROD_TARGET_SCSI (0x0300) 1124 #define MPI_FW_HEADER_PID_PROD_TARGET_SCSI (0x0300)
1056 #define MPI_FW_HEADER_PID_PROD_IM_SCSI (0x0400) 1125 #define MPI_FW_HEADER_PID_PROD_IM_SCSI (0x0400)
1057 #define MPI_FW_HEADER_PID_PROD_IS_SCSI (0x0500) 1126 #define MPI_FW_HEADER_PID_PROD_IS_SCSI (0x0500)
1058 #define MPI_FW_HEADER_PID_PROD_CTX_SCSI (0x0600) 1127 #define MPI_FW_HEADER_PID_PROD_CTX_SCSI (0x0600)
1059 #define MPI_FW_HEADER_PID_PROD_IR_SCSI (0x0700) 1128 #define MPI_FW_HEADER_PID_PROD_IR_SCSI (0x0700)
1060 1129
1061 #define MPI_FW_HEADER_PID_FAMILY_MASK (0x00FF) 1130 #define MPI_FW_HEADER_PID_FAMILY_MASK (0x00FF)
1062 /* SCSI */ 1131 /* SCSI */
1063 #define MPI_FW_HEADER_PID_FAMILY_1030A0_SCSI (0x0001) 1132 #define MPI_FW_HEADER_PID_FAMILY_1030A0_SCSI (0x0001)
1064 #define MPI_FW_HEADER_PID_FAMILY_1030B0_SCSI (0x0002) 1133 #define MPI_FW_HEADER_PID_FAMILY_1030B0_SCSI (0x0002)
1065 #define MPI_FW_HEADER_PID_FAMILY_1030B1_SCSI (0x0003) 1134 #define MPI_FW_HEADER_PID_FAMILY_1030B1_SCSI (0x0003)
1066 #define MPI_FW_HEADER_PID_FAMILY_1030C0_SCSI (0x0004) 1135 #define MPI_FW_HEADER_PID_FAMILY_1030C0_SCSI (0x0004)
1067 #define MPI_FW_HEADER_PID_FAMILY_1020A0_SCSI (0x0005) 1136 #define MPI_FW_HEADER_PID_FAMILY_1020A0_SCSI (0x0005)
1068 #define MPI_FW_HEADER_PID_FAMILY_1020B0_SCSI (0x0006) 1137 #define MPI_FW_HEADER_PID_FAMILY_1020B0_SCSI (0x0006)
1069 #define MPI_FW_HEADER_PID_FAMILY_1020B1_SCSI (0x0007) 1138 #define MPI_FW_HEADER_PID_FAMILY_1020B1_SCSI (0x0007)
1070 #define MPI_FW_HEADER_PID_FAMILY_1020C0_SCSI (0x0008) 1139 #define MPI_FW_HEADER_PID_FAMILY_1020C0_SCSI (0x0008)
1071 #define MPI_FW_HEADER_PID_FAMILY_1035A0_SCSI (0x0009) 1140 #define MPI_FW_HEADER_PID_FAMILY_1035A0_SCSI (0x0009)
1072 #define MPI_FW_HEADER_PID_FAMILY_1035B0_SCSI (0x000A) 1141 #define MPI_FW_HEADER_PID_FAMILY_1035B0_SCSI (0x000A)
1073 #define MPI_FW_HEADER_PID_FAMILY_1030TA0_SCSI (0x000B) 1142 #define MPI_FW_HEADER_PID_FAMILY_1030TA0_SCSI (0x000B)
1074 #define MPI_FW_HEADER_PID_FAMILY_1020TA0_SCSI (0x000C) 1143 #define MPI_FW_HEADER_PID_FAMILY_1020TA0_SCSI (0x000C)
1075 /* Fibre Channel */ 1144 /* Fibre Channel */
1076 #define MPI_FW_HEADER_PID_FAMILY_909_FC (0x0000) 1145 #define MPI_FW_HEADER_PID_FAMILY_909_FC (0x0000)
1077 #define MPI_FW_HEADER_PID_FAMILY_919_FC (0x0001) /* 919 and 929 */ 1146 #define MPI_FW_HEADER_PID_FAMILY_919_FC (0x0001) /* 919 and 929 */
1078 #define MPI_FW_HEADER_PID_FAMILY_919X_FC (0x0002) /* 919X and 929X */ 1147 #define MPI_FW_HEADER_PID_FAMILY_919X_FC (0x0002) /* 919X and 929X */
1079 #define MPI_FW_HEADER_PID_FAMILY_919XL_FC (0x0003) /* 919XL and 929XL */ 1148 #define MPI_FW_HEADER_PID_FAMILY_919XL_FC (0x0003) /* 919XL and 929XL */
1080 #define MPI_FW_HEADER_PID_FAMILY_939X_FC (0x0004) /* 939X and 949X */ 1149 #define MPI_FW_HEADER_PID_FAMILY_939X_FC (0x0004) /* 939X and 949X */
1081 #define MPI_FW_HEADER_PID_FAMILY_959_FC (0x0005) 1150 #define MPI_FW_HEADER_PID_FAMILY_959_FC (0x0005)
1082 #define MPI_FW_HEADER_PID_FAMILY_949E_FC (0x0006) 1151 #define MPI_FW_HEADER_PID_FAMILY_949E_FC (0x0006)
1083 /* SAS */ 1152 /* SAS */
1084 #define MPI_FW_HEADER_PID_FAMILY_1064_SAS (0x0001) 1153 #define MPI_FW_HEADER_PID_FAMILY_1064_SAS (0x0001)
1085 #define MPI_FW_HEADER_PID_FAMILY_1068_SAS (0x0002) 1154 #define MPI_FW_HEADER_PID_FAMILY_1068_SAS (0x0002)
1086 #define MPI_FW_HEADER_PID_FAMILY_1078_SAS (0x0003) 1155 #define MPI_FW_HEADER_PID_FAMILY_1078_SAS (0x0003)
1087 #define MPI_FW_HEADER_PID_FAMILY_106xE_SAS (0x0004) /* 1068E, 1066E, and 1064E */ 1156 #define MPI_FW_HEADER_PID_FAMILY_106xE_SAS (0x0004) /* 1068E, 1066E, and 1064E */
1088 1157
1089 typedef struct _MPI_EXT_IMAGE_HEADER 1158 typedef struct _MPI_EXT_IMAGE_HEADER
1090 { 1159 {
1091 U8 ImageType; /* 00h */ 1160 U8 ImageType; /* 00h */
1092 U8 Reserved; /* 01h */ 1161 U8 Reserved; /* 01h */
1093 U16 Reserved1; /* 02h */ 1162 U16 Reserved1; /* 02h */
1094 U32 Checksum; /* 04h */ 1163 U32 Checksum; /* 04h */
1095 U32 ImageSize; /* 08h */ 1164 U32 ImageSize; /* 08h */
1096 U32 NextImageHeaderOffset; /* 0Ch */ 1165 U32 NextImageHeaderOffset; /* 0Ch */
1097 U32 LoadStartAddress; /* 10h */ 1166 U32 LoadStartAddress; /* 10h */
1098 U32 Reserved2; /* 14h */ 1167 U32 Reserved2; /* 14h */
1099 } MPI_EXT_IMAGE_HEADER, MPI_POINTER PTR_MPI_EXT_IMAGE_HEADER, 1168 } MPI_EXT_IMAGE_HEADER, MPI_POINTER PTR_MPI_EXT_IMAGE_HEADER,
1100 MpiExtImageHeader_t, MPI_POINTER pMpiExtImageHeader_t; 1169 MpiExtImageHeader_t, MPI_POINTER pMpiExtImageHeader_t;
1101 1170
1102 /* defines for the ImageType field */ 1171 /* defines for the ImageType field */
1103 #define MPI_EXT_IMAGE_TYPE_UNSPECIFIED (0x00) 1172 #define MPI_EXT_IMAGE_TYPE_UNSPECIFIED (0x00)
1104 #define MPI_EXT_IMAGE_TYPE_FW (0x01) 1173 #define MPI_EXT_IMAGE_TYPE_FW (0x01)
1105 #define MPI_EXT_IMAGE_TYPE_NVDATA (0x03) 1174 #define MPI_EXT_IMAGE_TYPE_NVDATA (0x03)
1106 #define MPI_EXT_IMAGE_TYPE_BOOTLOADER (0x04) 1175 #define MPI_EXT_IMAGE_TYPE_BOOTLOADER (0x04)
1107 #define MPI_EXT_IMAGE_TYPE_INITIALIZATION (0x05) 1176 #define MPI_EXT_IMAGE_TYPE_INITIALIZATION (0x05)
1108 1177
1109 #endif 1178 #endif
1110 1179
drivers/message/fusion/lsi/mpi_log_sas.h
1
2 /*************************************************************************** 1 /***************************************************************************
3 * * 2 * *
4 * Copyright 2003 LSI Logic Corporation. All rights reserved. * 3 * Copyright 2003 LSI Logic Corporation. All rights reserved. *
5 * * 4 * *
6 * Description * 5 * Description *
7 * ------------ * 6 * ------------ *
8 * This include file contains SAS firmware interface IOC Log Info codes * 7 * This include file contains SAS firmware interface IOC Log Info codes *
9 * * 8 * *
10 *-------------------------------------------------------------------------* 9 *-------------------------------------------------------------------------*
11 */ 10 */
12 11
13 #ifndef IOPI_IOCLOGINFO_H_INCLUDED 12 #ifndef IOPI_IOCLOGINFO_H_INCLUDED
14 #define IOPI_IOCLOGINFO_H_INCLUDED 13 #define IOPI_IOCLOGINFO_H_INCLUDED
15 14
16 #define SAS_LOGINFO_NEXUS_LOSS 0x31170000 15 #define SAS_LOGINFO_NEXUS_LOSS 0x31170000
17 #define SAS_LOGINFO_MASK 0xFFFF0000 16 #define SAS_LOGINFO_MASK 0xFFFF0000
18 17
19 /****************************************************************************/ 18 /****************************************************************************/
20 /* IOC LOGINFO defines, 0x00000000 - 0x0FFFFFFF */ 19 /* IOC LOGINFO defines, 0x00000000 - 0x0FFFFFFF */
21 /* Format: */ 20 /* Format: */
22 /* Bits 31-28: MPI_IOCLOGINFO_TYPE_SAS (3) */ 21 /* Bits 31-28: MPI_IOCLOGINFO_TYPE_SAS (3) */
23 /* Bits 27-24: IOC_LOGINFO_ORIGINATOR: 0=IOP, 1=PL, 2=IR */ 22 /* Bits 27-24: IOC_LOGINFO_ORIGINATOR: 0=IOP, 1=PL, 2=IR */
24 /* Bits 23-16: LOGINFO_CODE */ 23 /* Bits 23-16: LOGINFO_CODE */
25 /* Bits 15-0: LOGINFO_CODE Specific */ 24 /* Bits 15-0: LOGINFO_CODE Specific */
26 /****************************************************************************/ 25 /****************************************************************************/
27 26
28 /****************************************************************************/ 27 /****************************************************************************/
29 /* IOC_LOGINFO_ORIGINATOR defines */ 28 /* IOC_LOGINFO_ORIGINATOR defines */
30 /****************************************************************************/ 29 /****************************************************************************/
31 #define IOC_LOGINFO_ORIGINATOR_IOP (0x00000000) 30 #define IOC_LOGINFO_ORIGINATOR_IOP (0x00000000)
32 #define IOC_LOGINFO_ORIGINATOR_PL (0x01000000) 31 #define IOC_LOGINFO_ORIGINATOR_PL (0x01000000)
33 #define IOC_LOGINFO_ORIGINATOR_IR (0x02000000) 32 #define IOC_LOGINFO_ORIGINATOR_IR (0x02000000)
34 33
35 #define IOC_LOGINFO_ORIGINATOR_MASK (0x0F000000) 34 #define IOC_LOGINFO_ORIGINATOR_MASK (0x0F000000)
36 35
37 /****************************************************************************/ 36 /****************************************************************************/
38 /* LOGINFO_CODE defines */ 37 /* LOGINFO_CODE defines */
39 /****************************************************************************/ 38 /****************************************************************************/
40 #define IOC_LOGINFO_CODE_MASK (0x00FF0000) 39 #define IOC_LOGINFO_CODE_MASK (0x00FF0000)
41 #define IOC_LOGINFO_CODE_SHIFT (16) 40 #define IOC_LOGINFO_CODE_SHIFT (16)
42 41
43 /****************************************************************************/ 42 /****************************************************************************/
44 /* IOP LOGINFO_CODE defines, valid if IOC_LOGINFO_ORIGINATOR = IOP */ 43 /* IOP LOGINFO_CODE defines, valid if IOC_LOGINFO_ORIGINATOR = IOP */
45 /****************************************************************************/ 44 /****************************************************************************/
46 #define IOP_LOGINFO_CODE_INVALID_SAS_ADDRESS (0x00010000) 45 #define IOP_LOGINFO_CODE_INVALID_SAS_ADDRESS (0x00010000)
47 #define IOP_LOGINFO_CODE_UNUSED2 (0x00020000) 46 #define IOP_LOGINFO_CODE_UNUSED2 (0x00020000)
48 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE (0x00030000) 47 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE (0x00030000)
49 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_RT (0x00030100) /* Route Table Entry not found */ 48 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_RT (0x00030100) /* Route Table Entry not found */
50 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_PN (0x00030200) /* Invalid Page Number */ 49 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_PN (0x00030200) /* Invalid Page Number */
51 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_FORM (0x00030300) /* Invalid FORM */ 50 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_FORM (0x00030300) /* Invalid FORM */
52 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_PT (0x00030400) /* Invalid Page Type */ 51 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_PT (0x00030400) /* Invalid Page Type */
53 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_DNM (0x00030500) /* Device Not Mapped */ 52 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_DNM (0x00030500) /* Device Not Mapped */
54 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_PERSIST (0x00030600) /* Persistent Page not found */ 53 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_PERSIST (0x00030600) /* Persistent Page not found */
55 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_DEFAULT (0x00030700) /* Default Page not found */ 54 #define IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_DEFAULT (0x00030700) /* Default Page not found */
56 55
57 #define IOP_LOGINFO_CODE_DIAG_MSG_ERROR (0x00040000) /* Error handling diag msg - or'd with diag status */ 56 #define IOP_LOGINFO_CODE_FWUPLOAD_NO_FLASH_AVAILABLE (0x0003E000) /* Tried to upload from flash, but there is none */
57 #define IOP_LOGINFO_CODE_FWUPLOAD_UNKNOWN_IMAGE_TYPE (0x0003E001) /* ImageType field contents were invalid */
58 #define IOP_LOGINFO_CODE_FWUPLOAD_WRONG_IMAGE_SIZE (0x0003E002) /* ImageSize field in TCSGE was bad/offset in MfgPg 4 was wrong */
59 #define IOP_LOGINFO_CODE_FWUPLOAD_ENTIRE_FLASH_UPLOAD_FAILED (0x0003E003) /* Error occured while attempting to upload the entire flash */
60 #define IOP_LOGINFO_CODE_FWUPLOAD_REGION_UPLOAD_FAILED (0x0003E004) /* Error occured while attempting to upload single flash region */
61 #define IOP_LOGINFO_CODE_FWUPLOAD_DMA_FAILURE (0x0003E005) /* Problem occured while DMAing FW to host memory */
58 62
59 #define IOP_LOGINFO_CODE_TASK_TERMINATED (0x00050000) 63 #define IOP_LOGINFO_CODE_DIAG_MSG_ERROR (0x00040000) /* Error handling diag msg - or'd with diag status */
60 64
61 #define IOP_LOGINFO_CODE_ENCL_MGMT_READ_ACTION_ERR0R (0x00060001) /* Read Action not supported for SEP msg */ 65 #define IOP_LOGINFO_CODE_TASK_TERMINATED (0x00050000)
62 #define IOP_LOGINFO_CODE_ENCL_MGMT_INVALID_BUS_ID_ERR0R (0x00060002) /* Invalid Bus/ID in SEP msg */
63 66
64 #define IOP_LOGINFO_CODE_TARGET_ASSIST_TERMINATED (0x00070001) 67 #define IOP_LOGINFO_CODE_ENCL_MGMT_READ_ACTION_ERR0R (0x00060001) /* Read Action not supported for SEP msg */
65 #define IOP_LOGINFO_CODE_TARGET_STATUS_SEND_TERMINATED (0x00070002) 68 #define IOP_LOGINFO_CODE_ENCL_MGMT_INVALID_BUS_ID_ERR0R (0x00060002) /* Invalid Bus/ID in SEP msg */
66 #define IOP_LOGINFO_CODE_TARGET_MODE_ABORT_ALL_IO (0x00070003)
67 #define IOP_LOGINFO_CODE_TARGET_MODE_ABORT_EXACT_IO (0x00070004)
68 #define IOP_LOGINFO_CODE_TARGET_MODE_ABORT_EXACT_IO_REQ (0x00070005)
69 69
70 #define IOP_LOGINFO_CODE_TARGET_ASSIST_TERMINATED (0x00070001)
71 #define IOP_LOGINFO_CODE_TARGET_STATUS_SEND_TERMINATED (0x00070002)
72 #define IOP_LOGINFO_CODE_TARGET_MODE_ABORT_ALL_IO (0x00070003)
73 #define IOP_LOGINFO_CODE_TARGET_MODE_ABORT_EXACT_IO (0x00070004)
74 #define IOP_LOGINFO_CODE_TARGET_MODE_ABORT_EXACT_IO_REQ (0x00070005)
75
70 /****************************************************************************/ 76 /****************************************************************************/
71 /* PL LOGINFO_CODE defines, valid if IOC_LOGINFO_ORIGINATOR = PL */ 77 /* PL LOGINFO_CODE defines, valid if IOC_LOGINFO_ORIGINATOR = PL */
72 /****************************************************************************/ 78 /****************************************************************************/
73 #define PL_LOGINFO_CODE_OPEN_FAILURE (0x00010000) 79 #define PL_LOGINFO_CODE_OPEN_FAILURE (0x00010000) /* see SUB_CODE_OPEN_FAIL_ below */
74 #define PL_LOG_INFO_CODE_OPEN_FAILURE_NO_DEST_TIME_OUT (0x00010001)
75 #define PL_LOGINFO_CODE_OPEN_FAILURE_BAD_DESTINATION (0x00010011)
76 #define PL_LOGINFO_CODE_OPEN_FAILURE_PROTOCOL_NOT_SUPPORTED (0x00010013)
77 #define PL_LOGINFO_CODE_OPEN_FAILURE_STP_RESOURCES_BSY (0x00010018)
78 #define PL_LOGINFO_CODE_OPEN_FAILURE_WRONG_DESTINATION (0x00010019)
79 #define PL_LOGINFO_CODE_OPEN_FAILURE_ORR_TIMEOUT (0X0001001A)
80 #define PL_LOGINFO_CODE_OPEN_FAILURE_PATHWAY_BLOCKED (0x0001001B)
81 #define PL_LOGINFO_CODE_OPEN_FAILURE_AWT_MAXED (0x0001001C)
82 #define PL_LOGINFO_CODE_INVALID_SGL (0x00020000)
83 #define PL_LOGINFO_CODE_WRONG_REL_OFF_OR_FRAME_LENGTH (0x00030000)
84 #define PL_LOGINFO_CODE_FRAME_XFER_ERROR (0x00040000)
85 #define PL_LOGINFO_CODE_TX_FM_CONNECTED_LOW (0x00050000)
86 #define PL_LOGINFO_CODE_SATA_NON_NCQ_RW_ERR_BIT_SET (0x00060000)
87 #define PL_LOGINFO_CODE_SATA_READ_LOG_RECEIVE_DATA_ERR (0x00070000)
88 #define PL_LOGINFO_CODE_SATA_NCQ_FAIL_ALL_CMDS_AFTR_ERR (0x00080000)
89 #define PL_LOGINFO_CODE_SATA_ERR_IN_RCV_SET_DEV_BIT_FIS (0x00090000)
90 #define PL_LOGINFO_CODE_RX_FM_INVALID_MESSAGE (0x000A0000)
91 #define PL_LOGINFO_CODE_RX_CTX_MESSAGE_VALID_ERROR (0x000B0000)
92 #define PL_LOGINFO_CODE_RX_FM_CURRENT_FRAME_ERROR (0x000C0000)
93 #define PL_LOGINFO_CODE_SATA_LINK_DOWN (0x000D0000)
94 #define PL_LOGINFO_CODE_DISCOVERY_SATA_INIT_W_IOS (0x000E0000)
95 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE (0x000F0000)
96 #define PL_LOGINFO_CODE_CONFIG_PL_NOT_INITIALIZED (0x000F0001) /* PL not yet initialized, can't do config page req. */
97 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_PT (0x000F0100) /* Invalid Page Type */
98 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_NUM_PHYS (0x000F0200) /* Invalid Number of Phys */
99 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_NOT_IMP (0x000F0300) /* Case Not Handled */
100 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_NO_DEV (0x000F0400) /* No Device Found */
101 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_FORM (0x000F0500) /* Invalid FORM */
102 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_PHY (0x000F0600) /* Invalid Phy */
103 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_NO_OWNER (0x000F0700) /* No Owner Found */
104 #define PL_LOGINFO_CODE_DSCVRY_SATA_INIT_TIMEOUT (0x00100000)
105 #define PL_LOGINFO_CODE_RESET (0x00110000) /* See Sub-Codes below */
106 #define PL_LOGINFO_CODE_ABORT (0x00120000) /* See Sub-Codes below */
107 #define PL_LOGINFO_CODE_IO_NOT_YET_EXECUTED (0x00130000)
108 #define PL_LOGINFO_CODE_IO_EXECUTED (0x00140000)
109 #define PL_LOGINFO_CODE_PERS_RESV_OUT_NOT_AFFIL_OWNER (0x00150000)
110 #define PL_LOGINFO_CODE_OPEN_TXDMA_ABORT (0x00160000)
111 #define PL_LOGINFO_CODE_IO_DEVICE_MISSING_DELAY_RETRY (0x00170000)
112 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE (0x00000100)
113 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_NO_DEST_TIMEOUT (0x00000101)
114 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ORR_TIMEOUT (0x0000011A) /* Open Reject (Retry) Timeout */
115 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_PATHWAY_BLOCKED (0x0000011B)
116 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_AWT_MAXED (0x0000011C) /* Arbitration Wait Timer Maxed */
117 80
118 #define PL_LOGINFO_SUB_CODE_TARGET_BUS_RESET (0x00000120) 81 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_NO_DEST_TIME_OUT (0x00000001)
119 #define PL_LOGINFO_SUB_CODE_TRANSPORT_LAYER (0x00000130) /* Leave lower nibble (1-f) reserved. */ 82 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_PATHWAY_BLOCKED (0x00000002)
120 #define PL_LOGINFO_SUB_CODE_PORT_LAYER (0x00000140) /* Leave lower nibble (1-f) reserved. */ 83 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RES_CONTINUE0 (0x00000003)
84 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RES_CONTINUE1 (0x00000004)
85 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RES_INITIALIZE0 (0x00000005)
86 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RES_INITIALIZE1 (0x00000006)
87 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RES_STOP0 (0x00000007)
88 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RES_STOP1 (0x00000008)
89 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RETRY (0x00000009)
90 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_BREAK (0x0000000A)
91 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_UNUSED_0B (0x0000000B)
92 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_OPEN_TIMEOUT_EXP (0x0000000C)
93 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_UNUSED_0D (0x0000000D)
94 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_DVTBLE_ACCSS_FAIL (0x0000000E)
95 #define PL_LOGINFO_SUB CODE_OPEN_FAIL_BAD_DEST (0x00000011)
96 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RATE_NOT_SUPP (0x00000012)
97 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_PROT_NOT_SUPP (0x00000013)
98 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RESERVED_ABANDON0 (0x00000014)
99 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RESERVED_ABANDON1 (0x00000015)
100 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RESERVED_ABANDON2 (0x00000016)
101 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_RESERVED_ABANDON3 (0x00000017)
102 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_STP_RESOURCES_BSY (0x00000018)
103 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_WRONG_DESTINATION (0x00000019)
121 104
105 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_PATH_BLOCKED (0x0000001B) /* Retry Timeout */
106 #define PL_LOGINFO_SUB_CODE_OPEN_FAIL_AWT_MAXED (0x0000001C) /* Retry Timeout */
122 107
123 #define PL_LOGINFO_SUB_CODE_INVALID_SGL (0x00000200)
124 #define PL_LOGINFO_SUB_CODE_WRONG_REL_OFF_OR_FRAME_LENGTH (0x00000300)
125 #define PL_LOGINFO_SUB_CODE_FRAME_XFER_ERROR (0x00000400)
126 #define PL_LOGINFO_SUB_CODE_TX_FM_CONNECTED_LOW (0x00000500)
127 #define PL_LOGINFO_SUB_CODE_SATA_NON_NCQ_RW_ERR_BIT_SET (0x00000600)
128 #define PL_LOGINFO_SUB_CODE_SATA_READ_LOG_RECEIVE_DATA_ERR (0x00000700)
129 #define PL_LOGINFO_SUB_CODE_SATA_NCQ_FAIL_ALL_CMDS_AFTR_ERR (0x00000800)
130 #define PL_LOGINFO_SUB_CODE_SATA_ERR_IN_RCV_SET_DEV_BIT_FIS (0x00000900)
131 #define PL_LOGINFO_SUB_CODE_RX_FM_INVALID_MESSAGE (0x00000A00)
132 #define PL_LOGINFO_SUB_CODE_RX_CTX_MESSAGE_VALID_ERROR (0x00000B00)
133 #define PL_LOGINFO_SUB_CODE_RX_FM_CURRENT_FRAME_ERROR (0x00000C00)
134 #define PL_LOGINFO_SUB_CODE_SATA_LINK_DOWN (0x00000D00)
135 #define PL_LOGINFO_SUB_CODE_DISCOVERY_SATA_INIT_W_IOS (0x00000E00)
136 #define PL_LOGINFO_SUB_CODE_DISCOVERY_REMOTE_SEP_RESET (0x00000E01)
137 #define PL_LOGINFO_SUB_CODE_SECOND_OPEN (0x00000F00)
138 #define PL_LOGINFO_SUB_CODE_DSCVRY_SATA_INIT_TIMEOUT (0x00001000)
139 108
140 109
141 #define PL_LOGINFO_CODE_ENCL_MGMT_SMP_FRAME_FAILURE (0x00200000) /* Can't get SMP Frame */ 110 #define PL_LOGINFO_CODE_INVALID_SGL (0x00020000)
142 #define PL_LOGINFO_CODE_ENCL_MGMT_SMP_READ_ERROR (0x00200010) /* Error occured on SMP Read */ 111 #define PL_LOGINFO_CODE_WRONG_REL_OFF_OR_FRAME_LENGTH (0x00030000)
143 #define PL_LOGINFO_CODE_ENCL_MGMT_SMP_WRITE_ERROR (0x00200020) /* Error occured on SMP Write */ 112 #define PL_LOGINFO_CODE_FRAME_XFER_ERROR (0x00040000)
144 #define PL_LOGINFO_CODE_ENCL_MGMT_NOT_SUPPORTED_ON_ENCL (0x00200040) /* Encl Mgmt services not available for this WWID */ 113 #define PL_LOGINFO_CODE_TX_FM_CONNECTED_LOW (0x00050000)
145 #define PL_LOGINFO_CODE_ENCL_MGMT_ADDR_MODE_NOT_SUPPORTED (0x00200050) /* Address Mode not suppored */ 114 #define PL_LOGINFO_CODE_SATA_NON_NCQ_RW_ERR_BIT_SET (0x00060000)
146 #define PL_LOGINFO_CODE_ENCL_MGMT_BAD_SLOT_NUM (0x00200060) /* Invalid Slot Number in SEP Msg */ 115 #define PL_LOGINFO_CODE_SATA_READ_LOG_RECEIVE_DATA_ERR (0x00070000)
147 #define PL_LOGINFO_CODE_ENCL_MGMT_SGPIO_NOT_PRESENT (0x00200070) /* SGPIO not present/enabled */ 116 #define PL_LOGINFO_CODE_SATA_NCQ_FAIL_ALL_CMDS_AFTR_ERR (0x00080000)
148 #define PL_LOGINFO_CODE_ENCL_MGMT_GPIO_NOT_CONFIGURED (0x00200080) /* GPIO not configured */ 117 #define PL_LOGINFO_CODE_SATA_ERR_IN_RCV_SET_DEV_BIT_FIS (0x00090000)
149 #define PL_LOGINFO_CODE_ENCL_MGMT_GPIO_FRAME_ERROR (0x00200090) /* GPIO can't allocate a frame */ 118 #define PL_LOGINFO_CODE_RX_FM_INVALID_MESSAGE (0x000A0000)
150 #define PL_LOGINFO_CODE_ENCL_MGMT_GPIO_CONFIG_PAGE_ERROR (0x002000A0) /* GPIO failed config page request */ 119 #define PL_LOGINFO_CODE_RX_CTX_MESSAGE_VALID_ERROR (0x000B0000)
151 #define PL_LOGINFO_CODE_ENCL_MGMT_SES_FRAME_ALLOC_ERROR (0x002000B0) /* Can't get frame for SES command */ 120 #define PL_LOGINFO_CODE_RX_FM_CURRENT_FRAME_ERROR (0x000C0000)
152 #define PL_LOGINFO_CODE_ENCL_MGMT_SES_IO_ERROR (0x002000C0) /* I/O execution error */ 121 #define PL_LOGINFO_CODE_SATA_LINK_DOWN (0x000D0000)
153 #define PL_LOGINFO_CODE_ENCL_MGMT_SES_RETRIES_EXHAUSTED (0x002000D0) /* SEP I/O retries exhausted */ 122 #define PL_LOGINFO_CODE_DISCOVERY_SATA_INIT_W_IOS (0x000E0000)
154 #define PL_LOGINFO_CODE_ENCL_MGMT_SMP_FRAME_ALLOC_ERROR (0x002000E0) /* Can't get frame for SMP command */ 123 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE (0x000F0000)
124 #define PL_LOGINFO_CODE_CONFIG_PL_NOT_INITIALIZED (0x000F0001) /* PL not yet initialized, can't do config page req. */
125 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_PT (0x000F0100) /* Invalid Page Type */
126 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_NUM_PHYS (0x000F0200) /* Invalid Number of Phys */
127 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_NOT_IMP (0x000F0300) /* Case Not Handled */
128 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_NO_DEV (0x000F0400) /* No Device Found */
129 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_FORM (0x000F0500) /* Invalid FORM */
130 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_PHY (0x000F0600) /* Invalid Phy */
131 #define PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_NO_OWNER (0x000F0700) /* No Owner Found */
132 #define PL_LOGINFO_CODE_DSCVRY_SATA_INIT_TIMEOUT (0x00100000)
133 #define PL_LOGINFO_CODE_RESET (0x00110000) /* See Sub-Codes below (PL_LOGINFO_SUB_CODE) */
134 #define PL_LOGINFO_CODE_ABORT (0x00120000) /* See Sub-Codes below (PL_LOGINFO_SUB_CODE)*/
135 #define PL_LOGINFO_CODE_IO_NOT_YET_EXECUTED (0x00130000)
136 #define PL_LOGINFO_CODE_IO_EXECUTED (0x00140000)
137 #define PL_LOGINFO_CODE_PERS_RESV_OUT_NOT_AFFIL_OWNER (0x00150000)
138 #define PL_LOGINFO_CODE_OPEN_TXDMA_ABORT (0x00160000)
139 #define PL_LOGINFO_CODE_IO_DEVICE_MISSING_DELAY_RETRY (0x00170000)
140 #define PL_LOGINFO_CODE_IO_CANCELLED_DUE_TO_R_ERR (0x00180000)
141 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE (0x00000100)
142 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_NO_DEST_TIMEOUT (0x00000101)
143 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_SATA_NEG_RATE_2HI (0x00000102)
144 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_RATE_NOT_SUPPORTED (0x00000103)
145 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_BREAK (0x00000104)
146 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ZONE_VIOLATION (0x00000114)
147 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ABANDON0 (0x00000114) /* Open Reject (Zone Violation) - available on SAS-2 devices */
148 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ABANDON1 (0x00000115)
149 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ABANDON2 (0x00000116)
150 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ABANDON3 (0x00000117)
151 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ORR_TIMEOUT (0x0000011A) /* Open Reject (Retry) Timeout */
152 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_PATH_BLOCKED (0x0000011B)
153 #define PL_LOGINFO_SUB_CODE_OPEN_FAILURE_AWT_MAXED (0x0000011C) /* Arbitration Wait Timer Maxed */
155 154
156 #define PL_LOGINFO_DA_SEP_NOT_PRESENT (0x00200100) /* SEP not present when msg received */ 155 #define PL_LOGINFO_SUB_CODE_TARGET_BUS_RESET (0x00000120)
157 #define PL_LOGINFO_DA_SEP_SINGLE_THREAD_ERROR (0x00200101) /* Can only accept 1 msg at a time */ 156 #define PL_LOGINFO_SUB_CODE_TRANSPORT_LAYER (0x00000130) /* Leave lower nibble (1-f) reserved. */
158 #define PL_LOGINFO_DA_SEP_ISTWI_INTR_IN_IDLE_STATE (0x00200102) /* ISTWI interrupt recvd. while IDLE */ 157 #define PL_LOGINFO_SUB_CODE_PORT_LAYER (0x00000140) /* Leave lower nibble (1-f) reserved. */
159 #define PL_LOGINFO_DA_SEP_RECEIVED_NACK_FROM_SLAVE (0x00200103) /* SEP NACK'd, it is busy */ 158
160 #define PL_LOGINFO_DA_SEP_DID_NOT_RECEIVE_ACK (0x00200104) /* SEP didn't rcv. ACK (Last Rcvd Bit = 1) */ 159
161 #define PL_LOGINFO_DA_SEP_BAD_STATUS_HDR_CHKSUM (0x00200105) /* SEP stopped or sent bad chksum in Hdr */ 160 #define PL_LOGINFO_SUB_CODE_INVALID_SGL (0x00000200)
162 #define PL_LOGINFO_DA_SEP_STOP_ON_DATA (0x00200106) /* SEP stopped while transfering data */ 161 #define PL_LOGINFO_SUB_CODE_WRONG_REL_OFF_OR_FRAME_LENGTH (0x00000300)
163 #define PL_LOGINFO_DA_SEP_STOP_ON_SENSE_DATA (0x00200107) /* SEP stopped while transfering sense data */ 162 #define PL_LOGINFO_SUB_CODE_FRAME_XFER_ERROR (0x00000400) /* Bits 0-3 encode Transport Status Register (offset 0x08) */
164 #define PL_LOGINFO_DA_SEP_UNSUPPORTED_SCSI_STATUS_1 (0x00200108) /* SEP returned unknown scsi status */ 163 /* Bit 0 is Status Bit 0: FrameXferErr */
165 #define PL_LOGINFO_DA_SEP_UNSUPPORTED_SCSI_STATUS_2 (0x00200109) /* SEP returned unknown scsi status */ 164 /* Bit 1 & 2 are Status Bits 16 and 17: FrameXmitErrStatus */
166 #define PL_LOGINFO_DA_SEP_CHKSUM_ERROR_AFTER_STOP (0x0020010A) /* SEP returned bad chksum after STOP */ 165 /* Bit 3 is Status Bit 18 WriteDataLenghtGTDataLengthErr */
167 #define PL_LOGINFO_DA_SEP_CHKSUM_ERROR_AFTER_STOP_GETDATA (0x0020010B) /* SEP returned bad chksum after STOP while gettin data*/ 166
168 #define PL_LOGINFO_DA_SEP_UNSUPPORTED_COMMAND (0x0020010C) /* SEP doesn't support CDB opcode */ 167 #define PL_LOGINFO_SUB_CODE_TX_FM_CONNECTED_LOW (0x00000500)
168 #define PL_LOGINFO_SUB_CODE_SATA_NON_NCQ_RW_ERR_BIT_SET (0x00000600)
169 #define PL_LOGINFO_SUB_CODE_SATA_READ_LOG_RECEIVE_DATA_ERR (0x00000700)
170 #define PL_LOGINFO_SUB_CODE_SATA_NCQ_FAIL_ALL_CMDS_AFTR_ERR (0x00000800)
171 #define PL_LOGINFO_SUB_CODE_SATA_ERR_IN_RCV_SET_DEV_BIT_FIS (0x00000900)
172 #define PL_LOGINFO_SUB_CODE_RX_FM_INVALID_MESSAGE (0x00000A00)
173 #define PL_LOGINFO_SUB_CODE_RX_CTX_MESSAGE_VALID_ERROR (0x00000B00)
174 #define PL_LOGINFO_SUB_CODE_RX_FM_CURRENT_FRAME_ERROR (0x00000C00)
175 #define PL_LOGINFO_SUB_CODE_SATA_LINK_DOWN (0x00000D00)
176 #define PL_LOGINFO_SUB_CODE_DISCOVERY_SATA_INIT_W_IOS (0x00000E00)
177 #define PL_LOGINFO_SUB_CODE_DISCOVERY_REMOTE_SEP_RESET (0x00000E01)
178 #define PL_LOGINFO_SUB_CODE_SECOND_OPEN (0x00000F00)
179 #define PL_LOGINFO_SUB_CODE_DSCVRY_SATA_INIT_TIMEOUT (0x00001000)
180
181 #define PL_LOGINFO_CODE_ENCL_MGMT_SMP_FRAME_FAILURE (0x00200000) /* Can't get SMP Frame */
182 #define PL_LOGINFO_CODE_ENCL_MGMT_SMP_READ_ERROR (0x00200010) /* Error occured on SMP Read */
183 #define PL_LOGINFO_CODE_ENCL_MGMT_SMP_WRITE_ERROR (0x00200020) /* Error occured on SMP Write */
184 #define PL_LOGINFO_CODE_ENCL_MGMT_NOT_SUPPORTED_ON_ENCL (0x00200040) /* Encl Mgmt services not available for this WWID */
185 #define PL_LOGINFO_CODE_ENCL_MGMT_ADDR_MODE_NOT_SUPPORTED (0x00200050) /* Address Mode not suppored */
186 #define PL_LOGINFO_CODE_ENCL_MGMT_BAD_SLOT_NUM (0x00200060) /* Invalid Slot Number in SEP Msg */
187 #define PL_LOGINFO_CODE_ENCL_MGMT_SGPIO_NOT_PRESENT (0x00200070) /* SGPIO not present/enabled */
188 #define PL_LOGINFO_CODE_ENCL_MGMT_GPIO_NOT_CONFIGURED (0x00200080) /* GPIO not configured */
189 #define PL_LOGINFO_CODE_ENCL_MGMT_GPIO_FRAME_ERROR (0x00200090) /* GPIO can't allocate a frame */
190 #define PL_LOGINFO_CODE_ENCL_MGMT_GPIO_CONFIG_PAGE_ERROR (0x002000A0) /* GPIO failed config page request */
191 #define PL_LOGINFO_CODE_ENCL_MGMT_SES_FRAME_ALLOC_ERROR (0x002000B0) /* Can't get frame for SES command */
192 #define PL_LOGINFO_CODE_ENCL_MGMT_SES_IO_ERROR (0x002000C0) /* I/O execution error */
193 #define PL_LOGINFO_CODE_ENCL_MGMT_SES_RETRIES_EXHAUSTED (0x002000D0) /* SEP I/O retries exhausted */
194 #define PL_LOGINFO_CODE_ENCL_MGMT_SMP_FRAME_ALLOC_ERROR (0x002000E0) /* Can't get frame for SMP command */
195
196 #define PL_LOGINFO_DA_SEP_NOT_PRESENT (0x00200100) /* SEP not present when msg received */
197 #define PL_LOGINFO_DA_SEP_SINGLE_THREAD_ERROR (0x00200101) /* Can only accept 1 msg at a time */
198 #define PL_LOGINFO_DA_SEP_ISTWI_INTR_IN_IDLE_STATE (0x00200102) /* ISTWI interrupt recvd. while IDLE */
199 #define PL_LOGINFO_DA_SEP_RECEIVED_NACK_FROM_SLAVE (0x00200103) /* SEP NACK'd, it is busy */
200 #define PL_LOGINFO_DA_SEP_DID_NOT_RECEIVE_ACK (0x00200104) /* SEP didn't rcv. ACK (Last Rcvd Bit = 1) */
201 #define PL_LOGINFO_DA_SEP_BAD_STATUS_HDR_CHKSUM (0x00200105) /* SEP stopped or sent bad chksum in Hdr */
202 #define PL_LOGINFO_DA_SEP_STOP_ON_DATA (0x00200106) /* SEP stopped while transfering data */
203 #define PL_LOGINFO_DA_SEP_STOP_ON_SENSE_DATA (0x00200107) /* SEP stopped while transfering sense data */
204 #define PL_LOGINFO_DA_SEP_UNSUPPORTED_SCSI_STATUS_1 (0x00200108) /* SEP returned unknown scsi status */
205 #define PL_LOGINFO_DA_SEP_UNSUPPORTED_SCSI_STATUS_2 (0x00200109) /* SEP returned unknown scsi status */
206 #define PL_LOGINFO_DA_SEP_CHKSUM_ERROR_AFTER_STOP (0x0020010A) /* SEP returned bad chksum after STOP */
207 #define PL_LOGINFO_DA_SEP_CHKSUM_ERROR_AFTER_STOP_GETDATA (0x0020010B) /* SEP returned bad chksum after STOP while gettin data*/
208 #define PL_LOGINFO_DA_SEP_UNSUPPORTED_COMMAND (0x0020010C) /* SEP doesn't support CDB opcode f/w location 1 */
209 #define PL_LOGINFO_DA_SEP_UNSUPPORTED_COMMAND_2 (0x0020010D) /* SEP doesn't support CDB opcode f/w location 2 */
210 #define PL_LOGINFO_DA_SEP_UNSUPPORTED_COMMAND_3 (0x0020010E) /* SEP doesn't support CDB opcode f/w location 3 */
169 211
170 212
171 /****************************************************************************/ 213 /****************************************************************************/
172 /* IR LOGINFO_CODE defines, valid if IOC_LOGINFO_ORIGINATOR = IR */ 214 /* IR LOGINFO_CODE defines, valid if IOC_LOGINFO_ORIGINATOR = IR */
173 /****************************************************************************/ 215 /****************************************************************************/
174 #define IR_LOGINFO_RAID_ACTION_ERROR (0x00010000) 216 #define IR_LOGINFO_RAID_ACTION_ERROR (0x00010000)
175 #define IR_LOGINFO_CODE_UNUSED2 (0x00020000) 217 #define IR_LOGINFO_CODE_UNUSED2 (0x00020000)
176 218
177 /* Amount of information passed down for Create Volume is too large */ 219 /* Amount of information passed down for Create Volume is too large */
178 #define IR_LOGINFO_VOLUME_CREATE_INVALID_LENGTH (0x00010001) 220 #define IR_LOGINFO_VOLUME_CREATE_INVALID_LENGTH (0x00010001)
179 /* Creation of duplicate volume attempted (Bus/Target ID checked) */ 221 /* Creation of duplicate volume attempted (Bus/Target ID checked) */
180 #define IR_LOGINFO_VOLUME_CREATE_DUPLICATE (0x00010002) 222 #define IR_LOGINFO_VOLUME_CREATE_DUPLICATE (0x00010002)
181 /* Creation failed due to maximum number of supported volumes exceeded */ 223 /* Creation failed due to maximum number of supported volumes exceeded */
182 #define IR_LOGINFO_VOLUME_CREATE_NO_SLOTS (0x00010003) 224 #define IR_LOGINFO_VOLUME_CREATE_NO_SLOTS (0x00010003)
183 /* Creation failed due to DMA error in trying to read from host */ 225 /* Creation failed due to DMA error in trying to read from host */
184 #define IR_LOGINFO_VOLUME_CREATE_DMA_ERROR (0x00010004) 226 #define IR_LOGINFO_VOLUME_CREATE_DMA_ERROR (0x00010004)
185 /* Creation failed due to invalid volume type passed down */ 227 /* Creation failed due to invalid volume type passed down */
186 #define IR_LOGINFO_VOLUME_CREATE_INVALID_VOLUME_TYPE (0x00010005) 228 #define IR_LOGINFO_VOLUME_CREATE_INVALID_VOLUME_TYPE (0x00010005)
187 /* Creation failed due to error reading MFG Page 4 */ 229 /* Creation failed due to error reading MFG Page 4 */
188 #define IR_LOGINFO_VOLUME_MFG_PAGE4_ERROR (0x00010006) 230 #define IR_LOGINFO_VOLUME_MFG_PAGE4_ERROR (0x00010006)
189 /* Creation failed when trying to create internal structures */ 231 /* Creation failed when trying to create internal structures */
190 #define IR_LOGINFO_VOLUME_INTERNAL_CONFIG_STRUCTURE_ERROR (0x00010007) 232 #define IR_LOGINFO_VOLUME_INTERNAL_CONFIG_STRUCTURE_ERROR (0x00010007)
191 233
192 /* Activation failed due to trying to activate an already active volume */ 234 /* Activation failed due to trying to activate an already active volume */
drivers/message/fusion/lsi/mpi_sas.h
1 /* 1 /*
2 * Copyright (c) 2004 LSI Logic Corporation. 2 * Copyright (c) 2004-2006 LSI Logic Corporation.
3 * 3 *
4 * 4 *
5 * Name: mpi_sas.h 5 * Name: mpi_sas.h
6 * Title: MPI Serial Attached SCSI structures and definitions 6 * Title: MPI Serial Attached SCSI structures and definitions
7 * Creation Date: August 19, 2004 7 * Creation Date: August 19, 2004
8 * 8 *
9 * mpi_sas.h Version: 01.05.03 9 * mpi_sas.h Version: 01.05.04
10 * 10 *
11 * Version History 11 * Version History
12 * --------------- 12 * ---------------
13 * 13 *
14 * Date Version Description 14 * Date Version Description
15 * -------- -------- ------------------------------------------------------ 15 * -------- -------- ------------------------------------------------------
16 * 08-19-04 01.05.01 Original release. 16 * 08-19-04 01.05.01 Original release.
17 * 08-30-05 01.05.02 Added DeviceInfo bit for SEP. 17 * 08-30-05 01.05.02 Added DeviceInfo bit for SEP.
18 * Added PrimFlags and Primitive field to SAS IO Unit 18 * Added PrimFlags and Primitive field to SAS IO Unit
19 * Control request, and added a new operation code. 19 * Control request, and added a new operation code.
20 * 03-27-06 01.05.03 Added Force Full Discovery, Transmit Port Select Signal, 20 * 03-27-06 01.05.03 Added Force Full Discovery, Transmit Port Select Signal,
21 * and Remove Device operations to SAS IO Unit Control. 21 * and Remove Device operations to SAS IO Unit Control.
22 * Added DevHandle field to SAS IO Unit Control request and 22 * Added DevHandle field to SAS IO Unit Control request and
23 * reply. 23 * reply.
24 * 10-11-06 01.05.04 Fixed the name of a define for Operation field of SAS IO
25 * Unit Control request.
24 * -------------------------------------------------------------------------- 26 * --------------------------------------------------------------------------
25 */ 27 */
26 28
27 #ifndef MPI_SAS_H 29 #ifndef MPI_SAS_H
28 #define MPI_SAS_H 30 #define MPI_SAS_H
29 31
30 32
31 /* 33 /*
32 * Values for SASStatus. 34 * Values for SASStatus.
33 */ 35 */
34 #define MPI_SASSTATUS_SUCCESS (0x00) 36 #define MPI_SASSTATUS_SUCCESS (0x00)
35 #define MPI_SASSTATUS_UNKNOWN_ERROR (0x01) 37 #define MPI_SASSTATUS_UNKNOWN_ERROR (0x01)
36 #define MPI_SASSTATUS_INVALID_FRAME (0x02) 38 #define MPI_SASSTATUS_INVALID_FRAME (0x02)
37 #define MPI_SASSTATUS_UTC_BAD_DEST (0x03) 39 #define MPI_SASSTATUS_UTC_BAD_DEST (0x03)
38 #define MPI_SASSTATUS_UTC_BREAK_RECEIVED (0x04) 40 #define MPI_SASSTATUS_UTC_BREAK_RECEIVED (0x04)
39 #define MPI_SASSTATUS_UTC_CONNECT_RATE_NOT_SUPPORTED (0x05) 41 #define MPI_SASSTATUS_UTC_CONNECT_RATE_NOT_SUPPORTED (0x05)
40 #define MPI_SASSTATUS_UTC_PORT_LAYER_REQUEST (0x06) 42 #define MPI_SASSTATUS_UTC_PORT_LAYER_REQUEST (0x06)
41 #define MPI_SASSTATUS_UTC_PROTOCOL_NOT_SUPPORTED (0x07) 43 #define MPI_SASSTATUS_UTC_PROTOCOL_NOT_SUPPORTED (0x07)
42 #define MPI_SASSTATUS_UTC_STP_RESOURCES_BUSY (0x08) 44 #define MPI_SASSTATUS_UTC_STP_RESOURCES_BUSY (0x08)
43 #define MPI_SASSTATUS_UTC_WRONG_DESTINATION (0x09) 45 #define MPI_SASSTATUS_UTC_WRONG_DESTINATION (0x09)
44 #define MPI_SASSTATUS_SHORT_INFORMATION_UNIT (0x0A) 46 #define MPI_SASSTATUS_SHORT_INFORMATION_UNIT (0x0A)
45 #define MPI_SASSTATUS_LONG_INFORMATION_UNIT (0x0B) 47 #define MPI_SASSTATUS_LONG_INFORMATION_UNIT (0x0B)
46 #define MPI_SASSTATUS_XFER_RDY_INCORRECT_WRITE_DATA (0x0C) 48 #define MPI_SASSTATUS_XFER_RDY_INCORRECT_WRITE_DATA (0x0C)
47 #define MPI_SASSTATUS_XFER_RDY_REQUEST_OFFSET_ERROR (0x0D) 49 #define MPI_SASSTATUS_XFER_RDY_REQUEST_OFFSET_ERROR (0x0D)
48 #define MPI_SASSTATUS_XFER_RDY_NOT_EXPECTED (0x0E) 50 #define MPI_SASSTATUS_XFER_RDY_NOT_EXPECTED (0x0E)
49 #define MPI_SASSTATUS_DATA_INCORRECT_DATA_LENGTH (0x0F) 51 #define MPI_SASSTATUS_DATA_INCORRECT_DATA_LENGTH (0x0F)
50 #define MPI_SASSTATUS_DATA_TOO_MUCH_READ_DATA (0x10) 52 #define MPI_SASSTATUS_DATA_TOO_MUCH_READ_DATA (0x10)
51 #define MPI_SASSTATUS_DATA_OFFSET_ERROR (0x11) 53 #define MPI_SASSTATUS_DATA_OFFSET_ERROR (0x11)
52 #define MPI_SASSTATUS_SDSF_NAK_RECEIVED (0x12) 54 #define MPI_SASSTATUS_SDSF_NAK_RECEIVED (0x12)
53 #define MPI_SASSTATUS_SDSF_CONNECTION_FAILED (0x13) 55 #define MPI_SASSTATUS_SDSF_CONNECTION_FAILED (0x13)
54 #define MPI_SASSTATUS_INITIATOR_RESPONSE_TIMEOUT (0x14) 56 #define MPI_SASSTATUS_INITIATOR_RESPONSE_TIMEOUT (0x14)
55 57
56 58
57 /* 59 /*
58 * Values for the SAS DeviceInfo field used in SAS Device Status Change Event 60 * Values for the SAS DeviceInfo field used in SAS Device Status Change Event
59 * data and SAS IO Unit Configuration pages. 61 * data and SAS IO Unit Configuration pages.
60 */ 62 */
61 #define MPI_SAS_DEVICE_INFO_SEP (0x00004000) 63 #define MPI_SAS_DEVICE_INFO_SEP (0x00004000)
62 #define MPI_SAS_DEVICE_INFO_ATAPI_DEVICE (0x00002000) 64 #define MPI_SAS_DEVICE_INFO_ATAPI_DEVICE (0x00002000)
63 #define MPI_SAS_DEVICE_INFO_LSI_DEVICE (0x00001000) 65 #define MPI_SAS_DEVICE_INFO_LSI_DEVICE (0x00001000)
64 #define MPI_SAS_DEVICE_INFO_DIRECT_ATTACH (0x00000800) 66 #define MPI_SAS_DEVICE_INFO_DIRECT_ATTACH (0x00000800)
65 #define MPI_SAS_DEVICE_INFO_SSP_TARGET (0x00000400) 67 #define MPI_SAS_DEVICE_INFO_SSP_TARGET (0x00000400)
66 #define MPI_SAS_DEVICE_INFO_STP_TARGET (0x00000200) 68 #define MPI_SAS_DEVICE_INFO_STP_TARGET (0x00000200)
67 #define MPI_SAS_DEVICE_INFO_SMP_TARGET (0x00000100) 69 #define MPI_SAS_DEVICE_INFO_SMP_TARGET (0x00000100)
68 #define MPI_SAS_DEVICE_INFO_SATA_DEVICE (0x00000080) 70 #define MPI_SAS_DEVICE_INFO_SATA_DEVICE (0x00000080)
69 #define MPI_SAS_DEVICE_INFO_SSP_INITIATOR (0x00000040) 71 #define MPI_SAS_DEVICE_INFO_SSP_INITIATOR (0x00000040)
70 #define MPI_SAS_DEVICE_INFO_STP_INITIATOR (0x00000020) 72 #define MPI_SAS_DEVICE_INFO_STP_INITIATOR (0x00000020)
71 #define MPI_SAS_DEVICE_INFO_SMP_INITIATOR (0x00000010) 73 #define MPI_SAS_DEVICE_INFO_SMP_INITIATOR (0x00000010)
72 #define MPI_SAS_DEVICE_INFO_SATA_HOST (0x00000008) 74 #define MPI_SAS_DEVICE_INFO_SATA_HOST (0x00000008)
73 75
74 #define MPI_SAS_DEVICE_INFO_MASK_DEVICE_TYPE (0x00000007) 76 #define MPI_SAS_DEVICE_INFO_MASK_DEVICE_TYPE (0x00000007)
75 #define MPI_SAS_DEVICE_INFO_NO_DEVICE (0x00000000) 77 #define MPI_SAS_DEVICE_INFO_NO_DEVICE (0x00000000)
76 #define MPI_SAS_DEVICE_INFO_END_DEVICE (0x00000001) 78 #define MPI_SAS_DEVICE_INFO_END_DEVICE (0x00000001)
77 #define MPI_SAS_DEVICE_INFO_EDGE_EXPANDER (0x00000002) 79 #define MPI_SAS_DEVICE_INFO_EDGE_EXPANDER (0x00000002)
78 #define MPI_SAS_DEVICE_INFO_FANOUT_EXPANDER (0x00000003) 80 #define MPI_SAS_DEVICE_INFO_FANOUT_EXPANDER (0x00000003)
79 81
80 82
81 83
82 /***************************************************************************** 84 /*****************************************************************************
83 * 85 *
84 * S e r i a l A t t a c h e d S C S I M e s s a g e s 86 * S e r i a l A t t a c h e d S C S I M e s s a g e s
85 * 87 *
86 *****************************************************************************/ 88 *****************************************************************************/
87 89
88 /****************************************************************************/ 90 /****************************************************************************/
89 /* Serial Management Protocol Passthrough Request */ 91 /* Serial Management Protocol Passthrough Request */
90 /****************************************************************************/ 92 /****************************************************************************/
91 93
92 typedef struct _MSG_SMP_PASSTHROUGH_REQUEST 94 typedef struct _MSG_SMP_PASSTHROUGH_REQUEST
93 { 95 {
94 U8 PassthroughFlags; /* 00h */ 96 U8 PassthroughFlags; /* 00h */
95 U8 PhysicalPort; /* 01h */ 97 U8 PhysicalPort; /* 01h */
96 U8 ChainOffset; /* 02h */ 98 U8 ChainOffset; /* 02h */
97 U8 Function; /* 03h */ 99 U8 Function; /* 03h */
98 U16 RequestDataLength; /* 04h */ 100 U16 RequestDataLength; /* 04h */
99 U8 ConnectionRate; /* 06h */ 101 U8 ConnectionRate; /* 06h */
100 U8 MsgFlags; /* 07h */ 102 U8 MsgFlags; /* 07h */
101 U32 MsgContext; /* 08h */ 103 U32 MsgContext; /* 08h */
102 U32 Reserved1; /* 0Ch */ 104 U32 Reserved1; /* 0Ch */
103 U64 SASAddress; /* 10h */ 105 U64 SASAddress; /* 10h */
104 U32 Reserved2; /* 18h */ 106 U32 Reserved2; /* 18h */
105 U32 Reserved3; /* 1Ch */ 107 U32 Reserved3; /* 1Ch */
106 SGE_SIMPLE_UNION SGL; /* 20h */ 108 SGE_SIMPLE_UNION SGL; /* 20h */
107 } MSG_SMP_PASSTHROUGH_REQUEST, MPI_POINTER PTR_MSG_SMP_PASSTHROUGH_REQUEST, 109 } MSG_SMP_PASSTHROUGH_REQUEST, MPI_POINTER PTR_MSG_SMP_PASSTHROUGH_REQUEST,
108 SmpPassthroughRequest_t, MPI_POINTER pSmpPassthroughRequest_t; 110 SmpPassthroughRequest_t, MPI_POINTER pSmpPassthroughRequest_t;
109 111
110 /* values for PassthroughFlags field */ 112 /* values for PassthroughFlags field */
111 #define MPI_SMP_PT_REQ_PT_FLAGS_IMMEDIATE (0x80) 113 #define MPI_SMP_PT_REQ_PT_FLAGS_IMMEDIATE (0x80)
112 114
113 /* values for ConnectionRate field */ 115 /* values for ConnectionRate field */
114 #define MPI_SMP_PT_REQ_CONNECT_RATE_NEGOTIATED (0x00) 116 #define MPI_SMP_PT_REQ_CONNECT_RATE_NEGOTIATED (0x00)
115 #define MPI_SMP_PT_REQ_CONNECT_RATE_1_5 (0x08) 117 #define MPI_SMP_PT_REQ_CONNECT_RATE_1_5 (0x08)
116 #define MPI_SMP_PT_REQ_CONNECT_RATE_3_0 (0x09) 118 #define MPI_SMP_PT_REQ_CONNECT_RATE_3_0 (0x09)
117 119
118 120
119 /* Serial Management Protocol Passthrough Reply */ 121 /* Serial Management Protocol Passthrough Reply */
120 typedef struct _MSG_SMP_PASSTHROUGH_REPLY 122 typedef struct _MSG_SMP_PASSTHROUGH_REPLY
121 { 123 {
122 U8 PassthroughFlags; /* 00h */ 124 U8 PassthroughFlags; /* 00h */
123 U8 PhysicalPort; /* 01h */ 125 U8 PhysicalPort; /* 01h */
124 U8 MsgLength; /* 02h */ 126 U8 MsgLength; /* 02h */
125 U8 Function; /* 03h */ 127 U8 Function; /* 03h */
126 U16 ResponseDataLength; /* 04h */ 128 U16 ResponseDataLength; /* 04h */
127 U8 Reserved1; /* 06h */ 129 U8 Reserved1; /* 06h */
128 U8 MsgFlags; /* 07h */ 130 U8 MsgFlags; /* 07h */
129 U32 MsgContext; /* 08h */ 131 U32 MsgContext; /* 08h */
130 U8 Reserved2; /* 0Ch */ 132 U8 Reserved2; /* 0Ch */
131 U8 SASStatus; /* 0Dh */ 133 U8 SASStatus; /* 0Dh */
132 U16 IOCStatus; /* 0Eh */ 134 U16 IOCStatus; /* 0Eh */
133 U32 IOCLogInfo; /* 10h */ 135 U32 IOCLogInfo; /* 10h */
134 U32 Reserved3; /* 14h */ 136 U32 Reserved3; /* 14h */
135 U8 ResponseData[4]; /* 18h */ 137 U8 ResponseData[4]; /* 18h */
136 } MSG_SMP_PASSTHROUGH_REPLY, MPI_POINTER PTR_MSG_SMP_PASSTHROUGH_REPLY, 138 } MSG_SMP_PASSTHROUGH_REPLY, MPI_POINTER PTR_MSG_SMP_PASSTHROUGH_REPLY,
137 SmpPassthroughReply_t, MPI_POINTER pSmpPassthroughReply_t; 139 SmpPassthroughReply_t, MPI_POINTER pSmpPassthroughReply_t;
138 140
139 #define MPI_SMP_PT_REPLY_PT_FLAGS_IMMEDIATE (0x80) 141 #define MPI_SMP_PT_REPLY_PT_FLAGS_IMMEDIATE (0x80)
140 142
141 143
142 /****************************************************************************/ 144 /****************************************************************************/
143 /* SATA Passthrough Request */ 145 /* SATA Passthrough Request */
144 /****************************************************************************/ 146 /****************************************************************************/
145 147
146 typedef struct _MSG_SATA_PASSTHROUGH_REQUEST 148 typedef struct _MSG_SATA_PASSTHROUGH_REQUEST
147 { 149 {
148 U8 TargetID; /* 00h */ 150 U8 TargetID; /* 00h */
149 U8 Bus; /* 01h */ 151 U8 Bus; /* 01h */
150 U8 ChainOffset; /* 02h */ 152 U8 ChainOffset; /* 02h */
151 U8 Function; /* 03h */ 153 U8 Function; /* 03h */
152 U16 PassthroughFlags; /* 04h */ 154 U16 PassthroughFlags; /* 04h */
153 U8 ConnectionRate; /* 06h */ 155 U8 ConnectionRate; /* 06h */
154 U8 MsgFlags; /* 07h */ 156 U8 MsgFlags; /* 07h */
155 U32 MsgContext; /* 08h */ 157 U32 MsgContext; /* 08h */
156 U32 Reserved1; /* 0Ch */ 158 U32 Reserved1; /* 0Ch */
157 U32 Reserved2; /* 10h */ 159 U32 Reserved2; /* 10h */
158 U32 Reserved3; /* 14h */ 160 U32 Reserved3; /* 14h */
159 U32 DataLength; /* 18h */ 161 U32 DataLength; /* 18h */
160 U8 CommandFIS[20]; /* 1Ch */ 162 U8 CommandFIS[20]; /* 1Ch */
161 SGE_SIMPLE_UNION SGL; /* 30h */ 163 SGE_SIMPLE_UNION SGL; /* 30h */
162 } MSG_SATA_PASSTHROUGH_REQUEST, MPI_POINTER PTR_MSG_SATA_PASSTHROUGH_REQUEST, 164 } MSG_SATA_PASSTHROUGH_REQUEST, MPI_POINTER PTR_MSG_SATA_PASSTHROUGH_REQUEST,
163 SataPassthroughRequest_t, MPI_POINTER pSataPassthroughRequest_t; 165 SataPassthroughRequest_t, MPI_POINTER pSataPassthroughRequest_t;
164 166
165 /* values for PassthroughFlags field */ 167 /* values for PassthroughFlags field */
166 #define MPI_SATA_PT_REQ_PT_FLAGS_RESET_DEVICE (0x0200) 168 #define MPI_SATA_PT_REQ_PT_FLAGS_RESET_DEVICE (0x0200)
167 #define MPI_SATA_PT_REQ_PT_FLAGS_EXECUTE_DIAG (0x0100) 169 #define MPI_SATA_PT_REQ_PT_FLAGS_EXECUTE_DIAG (0x0100)
168 #define MPI_SATA_PT_REQ_PT_FLAGS_DMA_QUEUED (0x0080) 170 #define MPI_SATA_PT_REQ_PT_FLAGS_DMA_QUEUED (0x0080)
169 #define MPI_SATA_PT_REQ_PT_FLAGS_PACKET_COMMAND (0x0040) 171 #define MPI_SATA_PT_REQ_PT_FLAGS_PACKET_COMMAND (0x0040)
170 #define MPI_SATA_PT_REQ_PT_FLAGS_DMA (0x0020) 172 #define MPI_SATA_PT_REQ_PT_FLAGS_DMA (0x0020)
171 #define MPI_SATA_PT_REQ_PT_FLAGS_PIO (0x0010) 173 #define MPI_SATA_PT_REQ_PT_FLAGS_PIO (0x0010)
172 #define MPI_SATA_PT_REQ_PT_FLAGS_UNSPECIFIED_VU (0x0004) 174 #define MPI_SATA_PT_REQ_PT_FLAGS_UNSPECIFIED_VU (0x0004)
173 #define MPI_SATA_PT_REQ_PT_FLAGS_WRITE (0x0002) 175 #define MPI_SATA_PT_REQ_PT_FLAGS_WRITE (0x0002)
174 #define MPI_SATA_PT_REQ_PT_FLAGS_READ (0x0001) 176 #define MPI_SATA_PT_REQ_PT_FLAGS_READ (0x0001)
175 177
176 /* values for ConnectionRate field */ 178 /* values for ConnectionRate field */
177 #define MPI_SATA_PT_REQ_CONNECT_RATE_NEGOTIATED (0x00) 179 #define MPI_SATA_PT_REQ_CONNECT_RATE_NEGOTIATED (0x00)
178 #define MPI_SATA_PT_REQ_CONNECT_RATE_1_5 (0x08) 180 #define MPI_SATA_PT_REQ_CONNECT_RATE_1_5 (0x08)
179 #define MPI_SATA_PT_REQ_CONNECT_RATE_3_0 (0x09) 181 #define MPI_SATA_PT_REQ_CONNECT_RATE_3_0 (0x09)
180 182
181 183
182 /* SATA Passthrough Reply */ 184 /* SATA Passthrough Reply */
183 typedef struct _MSG_SATA_PASSTHROUGH_REPLY 185 typedef struct _MSG_SATA_PASSTHROUGH_REPLY
184 { 186 {
185 U8 TargetID; /* 00h */ 187 U8 TargetID; /* 00h */
186 U8 Bus; /* 01h */ 188 U8 Bus; /* 01h */
187 U8 MsgLength; /* 02h */ 189 U8 MsgLength; /* 02h */
188 U8 Function; /* 03h */ 190 U8 Function; /* 03h */
189 U16 PassthroughFlags; /* 04h */ 191 U16 PassthroughFlags; /* 04h */
190 U8 Reserved1; /* 06h */ 192 U8 Reserved1; /* 06h */
191 U8 MsgFlags; /* 07h */ 193 U8 MsgFlags; /* 07h */
192 U32 MsgContext; /* 08h */ 194 U32 MsgContext; /* 08h */
193 U8 Reserved2; /* 0Ch */ 195 U8 Reserved2; /* 0Ch */
194 U8 SASStatus; /* 0Dh */ 196 U8 SASStatus; /* 0Dh */
195 U16 IOCStatus; /* 0Eh */ 197 U16 IOCStatus; /* 0Eh */
196 U32 IOCLogInfo; /* 10h */ 198 U32 IOCLogInfo; /* 10h */
197 U8 StatusFIS[20]; /* 14h */ 199 U8 StatusFIS[20]; /* 14h */
198 U32 StatusControlRegisters; /* 28h */ 200 U32 StatusControlRegisters; /* 28h */
199 U32 TransferCount; /* 2Ch */ 201 U32 TransferCount; /* 2Ch */
200 } MSG_SATA_PASSTHROUGH_REPLY, MPI_POINTER PTR_MSG_SATA_PASSTHROUGH_REPLY, 202 } MSG_SATA_PASSTHROUGH_REPLY, MPI_POINTER PTR_MSG_SATA_PASSTHROUGH_REPLY,
201 SataPassthroughReply_t, MPI_POINTER pSataPassthroughReply_t; 203 SataPassthroughReply_t, MPI_POINTER pSataPassthroughReply_t;
202 204
203 205
204 206
205 207
206 /****************************************************************************/ 208 /****************************************************************************/
207 /* SAS IO Unit Control Request */ 209 /* SAS IO Unit Control Request */
208 /****************************************************************************/ 210 /****************************************************************************/
209 211
210 typedef struct _MSG_SAS_IOUNIT_CONTROL_REQUEST 212 typedef struct _MSG_SAS_IOUNIT_CONTROL_REQUEST
211 { 213 {
212 U8 Operation; /* 00h */ 214 U8 Operation; /* 00h */
213 U8 Reserved1; /* 01h */ 215 U8 Reserved1; /* 01h */
214 U8 ChainOffset; /* 02h */ 216 U8 ChainOffset; /* 02h */
215 U8 Function; /* 03h */ 217 U8 Function; /* 03h */
216 U16 DevHandle; /* 04h */ 218 U16 DevHandle; /* 04h */
217 U8 Reserved3; /* 06h */ 219 U8 Reserved3; /* 06h */
218 U8 MsgFlags; /* 07h */ 220 U8 MsgFlags; /* 07h */
219 U32 MsgContext; /* 08h */ 221 U32 MsgContext; /* 08h */
220 U8 TargetID; /* 0Ch */ 222 U8 TargetID; /* 0Ch */
221 U8 Bus; /* 0Dh */ 223 U8 Bus; /* 0Dh */
222 U8 PhyNum; /* 0Eh */ 224 U8 PhyNum; /* 0Eh */
223 U8 PrimFlags; /* 0Fh */ 225 U8 PrimFlags; /* 0Fh */
224 U32 Primitive; /* 10h */ 226 U32 Primitive; /* 10h */
225 U64 SASAddress; /* 14h */ 227 U64 SASAddress; /* 14h */
226 U32 Reserved4; /* 1Ch */ 228 U32 Reserved4; /* 1Ch */
227 } MSG_SAS_IOUNIT_CONTROL_REQUEST, MPI_POINTER PTR_MSG_SAS_IOUNIT_CONTROL_REQUEST, 229 } MSG_SAS_IOUNIT_CONTROL_REQUEST, MPI_POINTER PTR_MSG_SAS_IOUNIT_CONTROL_REQUEST,
228 SasIoUnitControlRequest_t, MPI_POINTER pSasIoUnitControlRequest_t; 230 SasIoUnitControlRequest_t, MPI_POINTER pSasIoUnitControlRequest_t;
229 231
230 /* values for the Operation field */ 232 /* values for the Operation field */
231 #define MPI_SAS_OP_CLEAR_NOT_PRESENT (0x01) 233 #define MPI_SAS_OP_CLEAR_NOT_PRESENT (0x01)
232 #define MPI_SAS_OP_CLEAR_ALL_PERSISTENT (0x02) 234 #define MPI_SAS_OP_CLEAR_ALL_PERSISTENT (0x02)
233 #define MPI_SAS_OP_PHY_LINK_RESET (0x06) 235 #define MPI_SAS_OP_PHY_LINK_RESET (0x06)
234 #define MPI_SAS_OP_PHY_HARD_RESET (0x07) 236 #define MPI_SAS_OP_PHY_HARD_RESET (0x07)
235 #define MPI_SAS_OP_PHY_CLEAR_ERROR_LOG (0x08) 237 #define MPI_SAS_OP_PHY_CLEAR_ERROR_LOG (0x08)
236 #define MPI_SAS_OP_MAP_CURRENT (0x09) 238 #define MPI_SAS_OP_MAP_CURRENT (0x09)
237 #define MPI_SAS_OP_SEND_PRIMITIVE (0x0A) 239 #define MPI_SAS_OP_SEND_PRIMITIVE (0x0A)
238 #define MPI_SAS_OP_FORCE_FULL_DISCOVERY (0x0B) 240 #define MPI_SAS_OP_FORCE_FULL_DISCOVERY (0x0B)
239 #define MPI_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL (0x0C) 241 #define MPI_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL (0x0C)
240 #define MPI_SAS_OP_TRANSMIT_REMOVE_DEVICE (0x0D) 242 #define MPI_SAS_OP_TRANSMIT_REMOVE_DEVICE (0x0D) /* obsolete name */
243 #define MPI_SAS_OP_REMOVE_DEVICE (0x0D)
241 244
242 /* values for the PrimFlags field */ 245 /* values for the PrimFlags field */
243 #define MPI_SAS_PRIMFLAGS_SINGLE (0x08) 246 #define MPI_SAS_PRIMFLAGS_SINGLE (0x08)
244 #define MPI_SAS_PRIMFLAGS_TRIPLE (0x02) 247 #define MPI_SAS_PRIMFLAGS_TRIPLE (0x02)
245 #define MPI_SAS_PRIMFLAGS_REDUNDANT (0x01) 248 #define MPI_SAS_PRIMFLAGS_REDUNDANT (0x01)
246 249
247 250
248 /* SAS IO Unit Control Reply */ 251 /* SAS IO Unit Control Reply */
249 typedef struct _MSG_SAS_IOUNIT_CONTROL_REPLY 252 typedef struct _MSG_SAS_IOUNIT_CONTROL_REPLY
250 { 253 {
251 U8 Operation; /* 00h */ 254 U8 Operation; /* 00h */
252 U8 Reserved1; /* 01h */ 255 U8 Reserved1; /* 01h */
253 U8 MsgLength; /* 02h */ 256 U8 MsgLength; /* 02h */
254 U8 Function; /* 03h */ 257 U8 Function; /* 03h */
255 U16 DevHandle; /* 04h */ 258 U16 DevHandle; /* 04h */
256 U8 Reserved3; /* 06h */ 259 U8 Reserved3; /* 06h */
257 U8 MsgFlags; /* 07h */ 260 U8 MsgFlags; /* 07h */
258 U32 MsgContext; /* 08h */ 261 U32 MsgContext; /* 08h */
259 U16 Reserved4; /* 0Ch */ 262 U16 Reserved4; /* 0Ch */
260 U16 IOCStatus; /* 0Eh */ 263 U16 IOCStatus; /* 0Eh */
261 U32 IOCLogInfo; /* 10h */ 264 U32 IOCLogInfo; /* 10h */
262 } MSG_SAS_IOUNIT_CONTROL_REPLY, MPI_POINTER PTR_MSG_SAS_IOUNIT_CONTROL_REPLY, 265 } MSG_SAS_IOUNIT_CONTROL_REPLY, MPI_POINTER PTR_MSG_SAS_IOUNIT_CONTROL_REPLY,
263 SasIoUnitControlReply_t, MPI_POINTER pSasIoUnitControlReply_t; 266 SasIoUnitControlReply_t, MPI_POINTER pSasIoUnitControlReply_t;
264 267
265 #endif 268 #endif
266 269
267 270
268 271