mpt(4): Sync with FreeBSD.
[dragonfly.git] / sys / dev / disk / mpt / mpilib / mpi_tool.h
CommitLineData
4c42baf4 1/* $FreeBSD: src/sys/dev/mpt/mpilib/mpi_tool.h,v 1.2 2012/03/24 16:23:21 marius Exp $ */
2545bca0 2/*-
4c42baf4 3 * Copyright (c) 2000-2010, LSI Logic Corporation and its contributors.
2545bca0
MD
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
12 * substantially similar to the "NO WARRANTY" disclaimer below
13 * ("Disclaimer") and any redistribution must be conditioned upon including
14 * a substantially similar Disclaimer requirement for further binary
15 * redistribution.
16 * 3. Neither the name of the LSI Logic Corporation nor the names of its
17 * contributors may be used to endorse or promote products derived from
18 * this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF THE COPYRIGHT
30 * OWNER OR CONTRIBUTOR IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 *
32 *
33 * Name: mpi_tool.h
34 * Title: MPI Toolbox structures and definitions
35 * Creation Date: July 30, 2001
36 *
37 * mpi_tool.h Version: 01.05.03
38 *
39 * Version History
40 * ---------------
41 *
42 * Date Version Description
43 * -------- -------- ------------------------------------------------------
44 * 08-08-01 01.02.01 Original release.
45 * 08-29-01 01.02.02 Added DIAG_DATA_UPLOAD_HEADER and related defines.
46 * 01-16-04 01.02.03 Added defines and structures for new tools
47 *. MPI_TOOLBOX_ISTWI_READ_WRITE_TOOL and
48 * MPI_TOOLBOX_FC_MANAGEMENT_TOOL.
49 * 04-29-04 01.02.04 Added message structures for Diagnostic Buffer Post and
50 * Diagnostic Release requests and replies.
51 * 05-11-04 01.03.01 Original release for MPI v1.3.
52 * 08-19-04 01.05.01 Original release for MPI v1.5.
53 * 10-06-04 01.05.02 Added define for MPI_DIAG_BUF_TYPE_COUNT.
54 * 02-09-05 01.05.03 Added frame size option to FC management tool.
55 * Added Beacon tool to the Toolbox.
56 * --------------------------------------------------------------------------
57 */
58
59#ifndef MPI_TOOL_H
60#define MPI_TOOL_H
61
62#define MPI_TOOLBOX_CLEAN_TOOL (0x00)
63#define MPI_TOOLBOX_MEMORY_MOVE_TOOL (0x01)
64#define MPI_TOOLBOX_DIAG_DATA_UPLOAD_TOOL (0x02)
65#define MPI_TOOLBOX_ISTWI_READ_WRITE_TOOL (0x03)
66#define MPI_TOOLBOX_FC_MANAGEMENT_TOOL (0x04)
67#define MPI_TOOLBOX_BEACON_TOOL (0x05)
68
69
70/****************************************************************************/
71/* Toolbox reply */
72/****************************************************************************/
73
74typedef struct _MSG_TOOLBOX_REPLY
75{
76 U8 Tool; /* 00h */
77 U8 Reserved; /* 01h */
78 U8 MsgLength; /* 02h */
79 U8 Function; /* 03h */
80 U16 Reserved1; /* 04h */
81 U8 Reserved2; /* 06h */
82 U8 MsgFlags; /* 07h */
83 U32 MsgContext; /* 08h */
84 U16 Reserved3; /* 0Ch */
85 U16 IOCStatus; /* 0Eh */
86 U32 IOCLogInfo; /* 10h */
87} MSG_TOOLBOX_REPLY, MPI_POINTER PTR_MSG_TOOLBOX_REPLY,
88 ToolboxReply_t, MPI_POINTER pToolboxReply_t;
89
90
91/****************************************************************************/
92/* Toolbox Clean Tool request */
93/****************************************************************************/
94
95typedef struct _MSG_TOOLBOX_CLEAN_REQUEST
96{
97 U8 Tool; /* 00h */
98 U8 Reserved; /* 01h */
99 U8 ChainOffset; /* 02h */
100 U8 Function; /* 03h */
101 U16 Reserved1; /* 04h */
102 U8 Reserved2; /* 06h */
103 U8 MsgFlags; /* 07h */
104 U32 MsgContext; /* 08h */
105 U32 Flags; /* 0Ch */
106} MSG_TOOLBOX_CLEAN_REQUEST, MPI_POINTER PTR_MSG_TOOLBOX_CLEAN_REQUEST,
107 ToolboxCleanRequest_t, MPI_POINTER pToolboxCleanRequest_t;
108
109#define MPI_TOOLBOX_CLEAN_NVSRAM (0x00000001)
110#define MPI_TOOLBOX_CLEAN_SEEPROM (0x00000002)
111#define MPI_TOOLBOX_CLEAN_FLASH (0x00000004)
112#define MPI_TOOLBOX_CLEAN_BOOTLOADER (0x04000000)
113#define MPI_TOOLBOX_CLEAN_FW_BACKUP (0x08000000)
114#define MPI_TOOLBOX_CLEAN_FW_CURRENT (0x10000000)
115#define MPI_TOOLBOX_CLEAN_OTHER_PERSIST_PAGES (0x20000000)
116#define MPI_TOOLBOX_CLEAN_PERSIST_MANUFACT_PAGES (0x40000000)
117#define MPI_TOOLBOX_CLEAN_BOOT_SERVICES (0x80000000)
118
119
120/****************************************************************************/
121/* Toolbox Memory Move request */
122/****************************************************************************/
123
124typedef struct _MSG_TOOLBOX_MEM_MOVE_REQUEST
125{
126 U8 Tool; /* 00h */
127 U8 Reserved; /* 01h */
128 U8 ChainOffset; /* 02h */
129 U8 Function; /* 03h */
130 U16 Reserved1; /* 04h */
131 U8 Reserved2; /* 06h */
132 U8 MsgFlags; /* 07h */
133 U32 MsgContext; /* 08h */
134 SGE_SIMPLE_UNION SGL; /* 0Ch */
135} MSG_TOOLBOX_MEM_MOVE_REQUEST, MPI_POINTER PTR_MSG_TOOLBOX_MEM_MOVE_REQUEST,
136 ToolboxMemMoveRequest_t, MPI_POINTER pToolboxMemMoveRequest_t;
137
138
139/****************************************************************************/
140/* Toolbox Diagnostic Data Upload request */
141/****************************************************************************/
142
143typedef struct _MSG_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST
144{
145 U8 Tool; /* 00h */
146 U8 Reserved; /* 01h */
147 U8 ChainOffset; /* 02h */
148 U8 Function; /* 03h */
149 U16 Reserved1; /* 04h */
150 U8 Reserved2; /* 06h */
151 U8 MsgFlags; /* 07h */
152 U32 MsgContext; /* 08h */
153 U32 Flags; /* 0Ch */
154 U32 Reserved3; /* 10h */
155 SGE_SIMPLE_UNION SGL; /* 14h */
156} MSG_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST, MPI_POINTER PTR_MSG_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
157 ToolboxDiagDataUploadRequest_t, MPI_POINTER pToolboxDiagDataUploadRequest_t;
158
159typedef struct _DIAG_DATA_UPLOAD_HEADER
160{
161 U32 DiagDataLength; /* 00h */
162 U8 FormatCode; /* 04h */
163 U8 Reserved; /* 05h */
164 U16 Reserved1; /* 06h */
165} DIAG_DATA_UPLOAD_HEADER, MPI_POINTER PTR_DIAG_DATA_UPLOAD_HEADER,
166 DiagDataUploadHeader_t, MPI_POINTER pDiagDataUploadHeader_t;
167
168#define MPI_TB_DIAG_FORMAT_SCSI_PRINTF_1 (0x01)
169#define MPI_TB_DIAG_FORMAT_SCSI_2 (0x02)
170#define MPI_TB_DIAG_FORMAT_SCSI_3 (0x03)
171#define MPI_TB_DIAG_FORMAT_FC_TRACE_1 (0x04)
172
173
174/****************************************************************************/
175/* Toolbox ISTWI Read Write request */
176/****************************************************************************/
177
178typedef struct _MSG_TOOLBOX_ISTWI_READ_WRITE_REQUEST
179{
180 U8 Tool; /* 00h */
181 U8 Reserved; /* 01h */
182 U8 ChainOffset; /* 02h */
183 U8 Function; /* 03h */
184 U16 Reserved1; /* 04h */
185 U8 Reserved2; /* 06h */
186 U8 MsgFlags; /* 07h */
187 U32 MsgContext; /* 08h */
188 U8 Flags; /* 0Ch */
189 U8 BusNum; /* 0Dh */
190 U16 Reserved3; /* 0Eh */
191 U8 NumAddressBytes; /* 10h */
192 U8 Reserved4; /* 11h */
193 U16 DataLength; /* 12h */
194 U8 DeviceAddr; /* 14h */
195 U8 Addr1; /* 15h */
196 U8 Addr2; /* 16h */
197 U8 Addr3; /* 17h */
198 U32 Reserved5; /* 18h */
199 SGE_SIMPLE_UNION SGL; /* 1Ch */
200} MSG_TOOLBOX_ISTWI_READ_WRITE_REQUEST, MPI_POINTER PTR_MSG_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
201 ToolboxIstwiReadWriteRequest_t, MPI_POINTER pToolboxIstwiReadWriteRequest_t;
202
203#define MPI_TB_ISTWI_FLAGS_WRITE (0x00)
204#define MPI_TB_ISTWI_FLAGS_READ (0x01)
205
206
207/****************************************************************************/
208/* Toolbox FC Management request */
209/****************************************************************************/
210
211/* ActionInfo for Bus and TargetId */
212typedef struct _MPI_TB_FC_MANAGE_BUS_TID_AI
213{
214 U16 Reserved; /* 00h */
215 U8 Bus; /* 02h */
216 U8 TargetId; /* 03h */
217} MPI_TB_FC_MANAGE_BUS_TID_AI, MPI_POINTER PTR_MPI_TB_FC_MANAGE_BUS_TID_AI,
218 MpiTbFcManageBusTidAi_t, MPI_POINTER pMpiTbFcManageBusTidAi_t;
219
220/* ActionInfo for port identifier */
221typedef struct _MPI_TB_FC_MANAGE_PID_AI
222{
223 U32 PortIdentifier; /* 00h */
224} MPI_TB_FC_MANAGE_PID_AI, MPI_POINTER PTR_MPI_TB_FC_MANAGE_PID_AI,
225 MpiTbFcManagePidAi_t, MPI_POINTER pMpiTbFcManagePidAi_t;
226
227/* ActionInfo for set max frame size */
228typedef struct _MPI_TB_FC_MANAGE_FRAME_SIZE_AI
229{
230 U16 FrameSize; /* 00h */
231 U8 PortNum; /* 02h */
232 U8 Reserved1; /* 03h */
233} MPI_TB_FC_MANAGE_FRAME_SIZE_AI, MPI_POINTER PTR_MPI_TB_FC_MANAGE_FRAME_SIZE_AI,
234 MpiTbFcManageFrameSizeAi_t, MPI_POINTER pMpiTbFcManageFrameSizeAi_t;
235
236/* union of ActionInfo */
237typedef union _MPI_TB_FC_MANAGE_AI_UNION
238{
239 MPI_TB_FC_MANAGE_BUS_TID_AI BusTid;
240 MPI_TB_FC_MANAGE_PID_AI Port;
241 MPI_TB_FC_MANAGE_FRAME_SIZE_AI FrameSize;
242} MPI_TB_FC_MANAGE_AI_UNION, MPI_POINTER PTR_MPI_TB_FC_MANAGE_AI_UNION,
243 MpiTbFcManageAiUnion_t, MPI_POINTER pMpiTbFcManageAiUnion_t;
244
245typedef struct _MSG_TOOLBOX_FC_MANAGE_REQUEST
246{
247 U8 Tool; /* 00h */
248 U8 Reserved; /* 01h */
249 U8 ChainOffset; /* 02h */
250 U8 Function; /* 03h */
251 U16 Reserved1; /* 04h */
252 U8 Reserved2; /* 06h */
253 U8 MsgFlags; /* 07h */
254 U32 MsgContext; /* 08h */
255 U8 Action; /* 0Ch */
256 U8 Reserved3; /* 0Dh */
257 U16 Reserved4; /* 0Eh */
258 MPI_TB_FC_MANAGE_AI_UNION ActionInfo; /* 10h */
259} MSG_TOOLBOX_FC_MANAGE_REQUEST, MPI_POINTER PTR_MSG_TOOLBOX_FC_MANAGE_REQUEST,
260 ToolboxFcManageRequest_t, MPI_POINTER pToolboxFcManageRequest_t;
261
262/* defines for the Action field */
263#define MPI_TB_FC_MANAGE_ACTION_DISC_ALL (0x00)
264#define MPI_TB_FC_MANAGE_ACTION_DISC_PID (0x01)
265#define MPI_TB_FC_MANAGE_ACTION_DISC_BUS_TID (0x02)
266#define MPI_TB_FC_MANAGE_ACTION_SET_MAX_FRAME_SIZE (0x03)
267
268
269/****************************************************************************/
270/* Toolbox Beacon Tool request */
271/****************************************************************************/
272
273typedef struct _MSG_TOOLBOX_BEACON_REQUEST
274{
275 U8 Tool; /* 00h */
276 U8 Reserved; /* 01h */
277 U8 ChainOffset; /* 02h */
278 U8 Function; /* 03h */
279 U16 Reserved1; /* 04h */
280 U8 Reserved2; /* 06h */
281 U8 MsgFlags; /* 07h */
282 U32 MsgContext; /* 08h */
283 U8 ConnectNum; /* 0Ch */
284 U8 PortNum; /* 0Dh */
285 U8 Reserved3; /* 0Eh */
286 U8 Flags; /* 0Fh */
287} MSG_TOOLBOX_BEACON_REQUEST, MPI_POINTER PTR_MSG_TOOLBOX_BEACON_REQUEST,
288 ToolboxBeaconRequest_t, MPI_POINTER pToolboxBeaconRequest_t;
289
290#define MPI_TOOLBOX_FLAGS_BEACON_MODE_OFF (0x00)
291#define MPI_TOOLBOX_FLAGS_BEACON_MODE_ON (0x01)
292
293
294/****************************************************************************/
295/* Diagnostic Buffer Post request */
296/****************************************************************************/
297
298typedef struct _MSG_DIAG_BUFFER_POST_REQUEST
299{
300 U8 TraceLevel; /* 00h */
301 U8 BufferType; /* 01h */
302 U8 ChainOffset; /* 02h */
303 U8 Function; /* 03h */
304 U16 Reserved1; /* 04h */
305 U8 Reserved2; /* 06h */
306 U8 MsgFlags; /* 07h */
307 U32 MsgContext; /* 08h */
308 U32 ExtendedType; /* 0Ch */
309 U32 BufferLength; /* 10h */
310 U32 ProductSpecific[4]; /* 14h */
311 U32 Reserved3; /* 24h */
312 U64 BufferAddress; /* 28h */
313} MSG_DIAG_BUFFER_POST_REQUEST, MPI_POINTER PTR_MSG_DIAG_BUFFER_POST_REQUEST,
314 DiagBufferPostRequest_t, MPI_POINTER pDiagBufferPostRequest_t;
315
316#define MPI_DIAG_BUF_TYPE_TRACE (0x00)
317#define MPI_DIAG_BUF_TYPE_SNAPSHOT (0x01)
318#define MPI_DIAG_BUF_TYPE_EXTENDED (0x02)
319/* count of the number of buffer types */
320#define MPI_DIAG_BUF_TYPE_COUNT (0x03)
321
322#define MPI_DIAG_EXTENDED_QTAG (0x00000001)
323
324
325/* Diagnostic Buffer Post reply */
326typedef struct _MSG_DIAG_BUFFER_POST_REPLY
327{
328 U8 Reserved1; /* 00h */
329 U8 BufferType; /* 01h */
330 U8 MsgLength; /* 02h */
331 U8 Function; /* 03h */
332 U16 Reserved2; /* 04h */
333 U8 Reserved3; /* 06h */
334 U8 MsgFlags; /* 07h */
335 U32 MsgContext; /* 08h */
336 U16 Reserved4; /* 0Ch */
337 U16 IOCStatus; /* 0Eh */
338 U32 IOCLogInfo; /* 10h */
339 U32 TransferLength; /* 14h */
340} MSG_DIAG_BUFFER_POST_REPLY, MPI_POINTER PTR_MSG_DIAG_BUFFER_POST_REPLY,
341 DiagBufferPostReply_t, MPI_POINTER pDiagBufferPostReply_t;
342
343
344/****************************************************************************/
345/* Diagnostic Release request */
346/****************************************************************************/
347
348typedef struct _MSG_DIAG_RELEASE_REQUEST
349{
350 U8 Reserved1; /* 00h */
351 U8 BufferType; /* 01h */
352 U8 ChainOffset; /* 02h */
353 U8 Function; /* 03h */
354 U16 Reserved2; /* 04h */
355 U8 Reserved3; /* 06h */
356 U8 MsgFlags; /* 07h */
357 U32 MsgContext; /* 08h */
358} MSG_DIAG_RELEASE_REQUEST, MPI_POINTER PTR_MSG_DIAG_RELEASE_REQUEST,
359 DiagReleaseRequest_t, MPI_POINTER pDiagReleaseRequest_t;
360
361
362/* Diagnostic Release reply */
363typedef struct _MSG_DIAG_RELEASE_REPLY
364{
365 U8 Reserved1; /* 00h */
366 U8 BufferType; /* 01h */
367 U8 MsgLength; /* 02h */
368 U8 Function; /* 03h */
369 U16 Reserved2; /* 04h */
370 U8 Reserved3; /* 06h */
371 U8 MsgFlags; /* 07h */
372 U32 MsgContext; /* 08h */
373 U16 Reserved4; /* 0Ch */
374 U16 IOCStatus; /* 0Eh */
375 U32 IOCLogInfo; /* 10h */
376} MSG_DIAG_RELEASE_REPLY, MPI_POINTER PTR_MSG_DIAG_RELEASE_REPLY,
377 DiagReleaseReply_t, MPI_POINTER pDiagReleaseReply_t;
378
379
380#endif