OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [message/] [fusion/] [lsi/] [mpi_ioc.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
2
 *  Copyright (c) 2000-2003 LSI Logic Corporation.
3
 *
4
 *
5
 *           Name:  MPI_IOC.H
6
 *          Title:  MPI IOC, Port, Event, FW Download, and FW Upload messages
7
 *  Creation Date:  August 11, 2000
8
 *
9
 *    MPI_IOC.H Version:  01.02.08
10
 *
11
 *  Version History
12
 *  ---------------
13
 *
14
 *  Date      Version   Description
15
 *  --------  --------  ------------------------------------------------------
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.
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.
20
 *                      Added _MSG_EVENT_ACK_REPLY structure.
21
 *                      Added _MSG_FW_DOWNLOAD_REPLY structure.
22
 *                      Added _MSG_TOOLBOX_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,
25
 *                      _LINK_STATUS, _LOOP_STATE and _LOGOUT.
26
 *  08-11-00  01.00.05  Switched positions of MsgLength and Function fields in
27
 *                      _MSG_EVENT_ACK_REPLY structure to match specification.
28
 *  11-02-00  01.01.01  Original release for post 1.0 work.
29
 *                      Added a value for Manufacturer to WhoInit.
30
 *  12-04-00  01.01.02  Modified IOCFacts reply, added FWUpload messages, and
31
 *                      removed toolbox message.
32
 *  01-09-01  01.01.03  Added event enabled and disabled defines.
33
 *                      Added structures for FwHeader and DataHeader.
34
 *                      Added ImageType to FwUpload reply.
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.
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.
39
 *                      Added structure offset comments.
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.
42
 *                      New format for FWVersion and ProductId in
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
45
 *                      related structure and defines.
46
 *                      Added event MPI_EVENT_ON_BUS_TIMER_EXPIRED.
47
 *                      Added MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE.
48
 *                      Replaced a reserved field in MSG_IOC_FACTS_REPLY with
49
 *                      IOCExceptions and changed DataImageSize to reserved.
50
 *                      Added MPI_FW_DOWNLOAD_ITYPE_NVSTORE_DATA and
51
 *                      MPI_FW_UPLOAD_ITYPE_NVDATA.
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.
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
56
 *                      MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID.
57
 *                      Added AliasIndex to EVENT_DATA_LOGOUT structure.
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.
60
 *  --------------------------------------------------------------------------
61
 */
62
 
63
#ifndef MPI_IOC_H
64
#define MPI_IOC_H
65
 
66
 
67
/*****************************************************************************
68
*
69
*               I O C    M e s s a g e s
70
*
71
*****************************************************************************/
72
 
73
/****************************************************************************/
74
/*  IOCInit message                                                         */
75
/****************************************************************************/
76
 
77
typedef struct _MSG_IOC_INIT
78
{
79
    U8                      WhoInit;                    /* 00h */
80
    U8                      Reserved;                   /* 01h */
81
    U8                      ChainOffset;                /* 02h */
82
    U8                      Function;                   /* 03h */
83
    U8                      Flags;                      /* 04h */
84
    U8                      MaxDevices;                 /* 05h */
85
    U8                      MaxBuses;                   /* 06h */
86
    U8                      MsgFlags;                   /* 07h */
87
    U32                     MsgContext;                 /* 08h */
88
    U16                     ReplyFrameSize;             /* 0Ch */
89
    U8                      Reserved1[2];               /* 0Eh */
90
    U32                     HostMfaHighAddr;            /* 10h */
91
    U32                     SenseBufferHighAddr;        /* 14h */
92
} MSG_IOC_INIT, MPI_POINTER PTR_MSG_IOC_INIT,
93
  IOCInit_t, MPI_POINTER pIOCInit_t;
94
 
95
/* WhoInit values */
96
#define MPI_WHOINIT_NO_ONE                      (0x00)
97
#define MPI_WHOINIT_SYSTEM_BIOS                 (0x01)
98
#define MPI_WHOINIT_ROM_BIOS                    (0x02)
99
#define MPI_WHOINIT_PCI_PEER                    (0x03)
100
#define MPI_WHOINIT_HOST_DRIVER                 (0x04)
101
#define MPI_WHOINIT_MANUFACTURER                (0x05)
102
 
103
/* Flags values */
104
#define MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE      (0x01)
105
 
106
typedef struct _MSG_IOC_INIT_REPLY
107
{
108
    U8                      WhoInit;                    /* 00h */
109
    U8                      Reserved;                   /* 01h */
110
    U8                      MsgLength;                  /* 02h */
111
    U8                      Function;                   /* 03h */
112
    U8                      Flags;                      /* 04h */
113
    U8                      MaxDevices;                 /* 05h */
114
    U8                      MaxBuses;                   /* 06h */
115
    U8                      MsgFlags;                   /* 07h */
116
    U32                     MsgContext;                 /* 08h */
117
    U16                     Reserved2;                  /* 0Ch */
118
    U16                     IOCStatus;                  /* 0Eh */
119
    U32                     IOCLogInfo;                 /* 10h */
120
} MSG_IOC_INIT_REPLY, MPI_POINTER PTR_MSG_IOC_INIT_REPLY,
121
  IOCInitReply_t, MPI_POINTER pIOCInitReply_t;
122
 
123
 
124
 
125
/****************************************************************************/
126
/*  IOC Facts message                                                       */
127
/****************************************************************************/
128
 
129
typedef struct _MSG_IOC_FACTS
130
{
131
    U8                      Reserved[2];                /* 00h */
132
    U8                      ChainOffset;                /* 01h */
133
    U8                      Function;                   /* 02h */
134
    U8                      Reserved1[3];               /* 03h */
135
    U8                      MsgFlags;                   /* 04h */
136
    U32                     MsgContext;                 /* 08h */
137
} MSG_IOC_FACTS, MPI_POINTER PTR_IOC_FACTS,
138
  IOCFacts_t, MPI_POINTER pIOCFacts_t;
139
 
140
typedef struct _MPI_FW_VERSION_STRUCT
141
{
142
    U8                      Dev;                        /* 00h */
143
    U8                      Unit;                       /* 01h */
144
    U8                      Minor;                      /* 02h */
145
    U8                      Major;                      /* 03h */
146
} MPI_FW_VERSION_STRUCT;
147
 
148
typedef union _MPI_FW_VERSION
149
{
150
    MPI_FW_VERSION_STRUCT   Struct;
151
    U32                     Word;
152
} MPI_FW_VERSION;
153
 
154
/* IOC Facts Reply */
155
typedef struct _MSG_IOC_FACTS_REPLY
156
{
157
    U16                     MsgVersion;                 /* 00h */
158
    U8                      MsgLength;                  /* 02h */
159
    U8                      Function;                   /* 03h */
160
    U16                     HeaderVersion;              /* 04h */
161
    U8                      IOCNumber;                  /* 06h */
162
    U8                      MsgFlags;                   /* 07h */
163
    U32                     MsgContext;                 /* 08h */
164
    U16                     IOCExceptions;              /* 0Ch */
165
    U16                     IOCStatus;                  /* 0Eh */
166
    U32                     IOCLogInfo;                 /* 10h */
167
    U8                      MaxChainDepth;              /* 14h */
168
    U8                      WhoInit;                    /* 15h */
169
    U8                      BlockSize;                  /* 16h */
170
    U8                      Flags;                      /* 17h */
171
    U16                     ReplyQueueDepth;            /* 18h */
172
    U16                     RequestFrameSize;           /* 1Ah */
173
    U16                     Reserved_0101_FWVersion;    /* 1Ch */ /* obsolete 16-bit FWVersion */
174
    U16                     ProductID;                  /* 1Eh */
175
    U32                     CurrentHostMfaHighAddr;     /* 20h */
176
    U16                     GlobalCredits;              /* 24h */
177
    U8                      NumberOfPorts;              /* 26h */
178
    U8                      EventState;                 /* 27h */
179
    U32                     CurrentSenseBufferHighAddr; /* 28h */
180
    U16                     CurReplyFrameSize;          /* 2Ch */
181
    U8                      MaxDevices;                 /* 2Eh */
182
    U8                      MaxBuses;                   /* 2Fh */
183
    U32                     FWImageSize;                /* 30h */
184
    U32                     Reserved4;                  /* 34h */
185
    MPI_FW_VERSION          FWVersion;                  /* 38h */
186
} MSG_IOC_FACTS_REPLY, MPI_POINTER PTR_MSG_IOC_FACTS_REPLY,
187
  IOCFactsReply_t, MPI_POINTER pIOCFactsReply_t;
188
 
189
#define MPI_IOCFACTS_MSGVERSION_MAJOR_MASK          (0xFF00)
190
#define MPI_IOCFACTS_MSGVERSION_MINOR_MASK          (0x00FF)
191
 
192
#define MPI_IOCFACTS_HEADERVERSION_UNIT_MASK        (0xFF00)
193
#define MPI_IOCFACTS_HEADERVERSION_DEV_MASK         (0x00FF)
194
 
195
#define MPI_IOCFACTS_EXCEPT_CONFIG_CHECKSUM_FAIL    (0x0001)
196
#define MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID     (0x0002)
197
 
198
#define MPI_IOCFACTS_FLAGS_FW_DOWNLOAD_BOOT         (0x01)
199
 
200
#define MPI_IOCFACTS_EVENTSTATE_DISABLED            (0x00)
201
#define MPI_IOCFACTS_EVENTSTATE_ENABLED             (0x01)
202
 
203
 
204
 
205
/*****************************************************************************
206
*
207
*               P o r t    M e s s a g e s
208
*
209
*****************************************************************************/
210
 
211
/****************************************************************************/
212
/*  Port Facts message and Reply                                            */
213
/****************************************************************************/
214
 
215
typedef struct _MSG_PORT_FACTS
216
{
217
     U8                     Reserved[2];                /* 00h */
218
     U8                     ChainOffset;                /* 02h */
219
     U8                     Function;                   /* 03h */
220
     U8                     Reserved1[2];               /* 04h */
221
     U8                     PortNumber;                 /* 06h */
222
     U8                     MsgFlags;                   /* 07h */
223
     U32                    MsgContext;                 /* 08h */
224
} MSG_PORT_FACTS, MPI_POINTER PTR_MSG_PORT_FACTS,
225
  PortFacts_t, MPI_POINTER pPortFacts_t;
226
 
227
typedef struct _MSG_PORT_FACTS_REPLY
228
{
229
     U16                    Reserved;                   /* 00h */
230
     U8                     MsgLength;                  /* 02h */
231
     U8                     Function;                   /* 03h */
232
     U16                    Reserved1;                  /* 04h */
233
     U8                     PortNumber;                 /* 06h */
234
     U8                     MsgFlags;                   /* 07h */
235
     U32                    MsgContext;                 /* 08h */
236
     U16                    Reserved2;                  /* 0Ch */
237
     U16                    IOCStatus;                  /* 0Eh */
238
     U32                    IOCLogInfo;                 /* 10h */
239
     U8                     Reserved3;                  /* 14h */
240
     U8                     PortType;                   /* 15h */
241
     U16                    MaxDevices;                 /* 16h */
242
     U16                    PortSCSIID;                 /* 18h */
243
     U16                    ProtocolFlags;              /* 1Ah */
244
     U16                    MaxPostedCmdBuffers;        /* 1Ch */
245
     U16                    MaxPersistentIDs;           /* 1Eh */
246
     U16                    MaxLanBuckets;              /* 20h */
247
     U16                    Reserved4;                  /* 22h */
248
     U32                    Reserved5;                  /* 24h */
249
} MSG_PORT_FACTS_REPLY, MPI_POINTER PTR_MSG_PORT_FACTS_REPLY,
250
  PortFactsReply_t, MPI_POINTER pPortFactsReply_t;
251
 
252
 
253
/* PortTypes values */
254
 
255
#define MPI_PORTFACTS_PORTTYPE_INACTIVE         (0x00)
256
#define MPI_PORTFACTS_PORTTYPE_SCSI             (0x01)
257
#define MPI_PORTFACTS_PORTTYPE_FC               (0x10)
258
 
259
/* ProtocolFlags values */
260
 
261
#define MPI_PORTFACTS_PROTOCOL_LOGBUSADDR       (0x01)
262
#define MPI_PORTFACTS_PROTOCOL_LAN              (0x02)
263
#define MPI_PORTFACTS_PROTOCOL_TARGET           (0x04)
264
#define MPI_PORTFACTS_PROTOCOL_INITIATOR        (0x08)
265
 
266
 
267
/****************************************************************************/
268
/*  Port Enable Message                                                     */
269
/****************************************************************************/
270
 
271
typedef struct _MSG_PORT_ENABLE
272
{
273
    U8                      Reserved[2];                /* 00h */
274
    U8                      ChainOffset;                /* 02h */
275
    U8                      Function;                   /* 03h */
276
    U8                      Reserved1[2];               /* 04h */
277
    U8                      PortNumber;                 /* 06h */
278
    U8                      MsgFlags;                   /* 07h */
279
    U32                     MsgContext;                 /* 08h */
280
} MSG_PORT_ENABLE, MPI_POINTER PTR_MSG_PORT_ENABLE,
281
  PortEnable_t, MPI_POINTER pPortEnable_t;
282
 
283
typedef struct _MSG_PORT_ENABLE_REPLY
284
{
285
    U8                      Reserved[2];                /* 00h */
286
    U8                      MsgLength;                  /* 02h */
287
    U8                      Function;                   /* 03h */
288
    U8                      Reserved1[2];               /* 04h */
289
    U8                      PortNumber;                 /* 05h */
290
    U8                      MsgFlags;                   /* 07h */
291
    U32                     MsgContext;                 /* 08h */
292
    U16                     Reserved2;                  /* 0Ch */
293
    U16                     IOCStatus;                  /* 0Eh */
294
    U32                     IOCLogInfo;                 /* 10h */
295
} MSG_PORT_ENABLE_REPLY, MPI_POINTER PTR_MSG_PORT_ENABLE_REPLY,
296
  PortEnableReply_t, MPI_POINTER pPortEnableReply_t;
297
 
298
 
299
/*****************************************************************************
300
*
301
*               E v e n t    M e s s a g e s
302
*
303
*****************************************************************************/
304
 
305
/****************************************************************************/
306
/*  Event Notification messages                                             */
307
/****************************************************************************/
308
 
309
typedef struct _MSG_EVENT_NOTIFY
310
{
311
    U8                      Switch;                     /* 00h */
312
    U8                      Reserved;                   /* 01h */
313
    U8                      ChainOffset;                /* 02h */
314
    U8                      Function;                   /* 03h */
315
    U8                      Reserved1[3];               /* 04h */
316
    U8                      MsgFlags;                   /* 07h */
317
    U32                     MsgContext;                 /* 08h */
318
} MSG_EVENT_NOTIFY, MPI_POINTER PTR_MSG_EVENT_NOTIFY,
319
  EventNotification_t, MPI_POINTER pEventNotification_t;
320
 
321
/* Event Notification Reply */
322
 
323
typedef struct _MSG_EVENT_NOTIFY_REPLY
324
{
325
     U16                    EventDataLength;            /* 00h */
326
     U8                     MsgLength;                  /* 02h */
327
     U8                     Function;                   /* 03h */
328
     U8                     Reserved1[2];               /* 04h */
329
     U8                     AckRequired;                /* 06h */
330
     U8                     MsgFlags;                   /* 07h */
331
     U32                    MsgContext;                 /* 08h */
332
     U8                     Reserved2[2];               /* 0Ch */
333
     U16                    IOCStatus;                  /* 0Eh */
334
     U32                    IOCLogInfo;                 /* 10h */
335
     U32                    Event;                      /* 14h */
336
     U32                    EventContext;               /* 18h */
337
     U32                    Data[1];                    /* 1Ch */
338
} MSG_EVENT_NOTIFY_REPLY, MPI_POINTER PTR_MSG_EVENT_NOTIFY_REPLY,
339
  EventNotificationReply_t, MPI_POINTER pEventNotificationReply_t;
340
 
341
/* Event Acknowledge */
342
 
343
typedef struct _MSG_EVENT_ACK
344
{
345
    U8                      Reserved[2];                /* 00h */
346
    U8                      ChainOffset;                /* 02h */
347
    U8                      Function;                   /* 03h */
348
    U8                      Reserved1[3];               /* 04h */
349
    U8                      MsgFlags;                   /* 07h */
350
    U32                     MsgContext;                 /* 08h */
351
    U32                     Event;                      /* 0Ch */
352
    U32                     EventContext;               /* 10h */
353
} MSG_EVENT_ACK, MPI_POINTER PTR_MSG_EVENT_ACK,
354
  EventAck_t, MPI_POINTER pEventAck_t;
355
 
356
typedef struct _MSG_EVENT_ACK_REPLY
357
{
358
    U8                      Reserved[2];                /* 00h */
359
    U8                      MsgLength;                  /* 02h */
360
    U8                      Function;                   /* 03h */
361
    U8                      Reserved1[3];               /* 04h */
362
    U8                      MsgFlags;                   /* 07h */
363
    U32                     MsgContext;                 /* 08h */
364
    U16                     Reserved2;                  /* 0Ch */
365
    U16                     IOCStatus;                  /* 0Eh */
366
    U32                     IOCLogInfo;                 /* 10h */
367
} MSG_EVENT_ACK_REPLY, MPI_POINTER PTR_MSG_EVENT_ACK_REPLY,
368
  EventAckReply_t, MPI_POINTER pEventAckReply_t;
369
 
370
/* Switch */
371
 
372
#define MPI_EVENT_NOTIFICATION_SWITCH_OFF   (0x00)
373
#define MPI_EVENT_NOTIFICATION_SWITCH_ON    (0x01)
374
 
375
/* Event */
376
 
377
#define MPI_EVENT_NONE                      (0x00000000)
378
#define MPI_EVENT_LOG_DATA                  (0x00000001)
379
#define MPI_EVENT_STATE_CHANGE              (0x00000002)
380
#define MPI_EVENT_UNIT_ATTENTION            (0x00000003)
381
#define MPI_EVENT_IOC_BUS_RESET             (0x00000004)
382
#define MPI_EVENT_EXT_BUS_RESET             (0x00000005)
383
#define MPI_EVENT_RESCAN                    (0x00000006)
384
#define MPI_EVENT_LINK_STATUS_CHANGE        (0x00000007)
385
#define MPI_EVENT_LOOP_STATE_CHANGE         (0x00000008)
386
#define MPI_EVENT_LOGOUT                    (0x00000009)
387
#define MPI_EVENT_EVENT_CHANGE              (0x0000000A)
388
#define MPI_EVENT_INTEGRATED_RAID           (0x0000000B)
389
#define MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE (0x0000000C)
390
#define MPI_EVENT_ON_BUS_TIMER_EXPIRED      (0x0000000D)
391
 
392
/* AckRequired field values */
393
 
394
#define MPI_EVENT_NOTIFICATION_ACK_NOT_REQUIRED (0x00)
395
#define MPI_EVENT_NOTIFICATION_ACK_REQUIRED     (0x01)
396
 
397
/* EventChange Event data */
398
 
399
typedef struct _EVENT_DATA_EVENT_CHANGE
400
{
401
    U8                      EventState;                 /* 00h */
402
    U8                      Reserved;                   /* 01h */
403
    U16                     Reserved1;                  /* 02h */
404
} EVENT_DATA_EVENT_CHANGE, MPI_POINTER PTR_EVENT_DATA_EVENT_CHANGE,
405
  EventDataEventChange_t, MPI_POINTER pEventDataEventChange_t;
406
 
407
/* SCSI Event data for Port, Bus and Device forms */
408
 
409
typedef struct _EVENT_DATA_SCSI
410
{
411
    U8                      TargetID;                   /* 00h */
412
    U8                      BusPort;                    /* 01h */
413
    U16                     Reserved;                   /* 02h */
414
} EVENT_DATA_SCSI, MPI_POINTER PTR_EVENT_DATA_SCSI,
415
  EventDataScsi_t, MPI_POINTER pEventDataScsi_t;
416
 
417
/* SCSI Device Status Change Event data */
418
 
419
typedef struct _EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE
420
{
421
    U8                      TargetID;                   /* 00h */
422
    U8                      Bus;                        /* 01h */
423
    U8                      ReasonCode;                 /* 02h */
424
    U8                      LUN;                        /* 03h */
425
    U8                      ASC;                        /* 04h */
426
    U8                      ASCQ;                       /* 05h */
427
    U16                     Reserved;                   /* 06h */
428
} EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE,
429
  MPI_POINTER PTR_EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE,
430
  MpiEventDataScsiDeviceStatusChange_t,
431
  MPI_POINTER pMpiEventDataScsiDeviceStatusChange_t;
432
 
433
/* MPI SCSI Device Status Change Event data ReasonCode values */
434
#define MPI_EVENT_SCSI_DEV_STAT_RC_ADDED                (0x03)
435
#define MPI_EVENT_SCSI_DEV_STAT_RC_NOT_RESPONDING       (0x04)
436
#define MPI_EVENT_SCSI_DEV_STAT_RC_SMART_DATA           (0x05)
437
 
438
/* MPI Link Status Change Event data */
439
 
440
typedef struct _EVENT_DATA_LINK_STATUS
441
{
442
    U8                      State;                      /* 00h */
443
    U8                      Reserved;                   /* 01h */
444
    U16                     Reserved1;                  /* 02h */
445
    U8                      Reserved2;                  /* 04h */
446
    U8                      Port;                       /* 05h */
447
    U16                     Reserved3;                  /* 06h */
448
} EVENT_DATA_LINK_STATUS, MPI_POINTER PTR_EVENT_DATA_LINK_STATUS,
449
  EventDataLinkStatus_t, MPI_POINTER pEventDataLinkStatus_t;
450
 
451
#define MPI_EVENT_LINK_STATUS_FAILURE       (0x00000000)
452
#define MPI_EVENT_LINK_STATUS_ACTIVE        (0x00000001)
453
 
454
/* MPI Loop State Change Event data */
455
 
456
typedef struct _EVENT_DATA_LOOP_STATE
457
{
458
    U8                      Character4;                 /* 00h */
459
    U8                      Character3;                 /* 01h */
460
    U8                      Type;                       /* 02h */
461
    U8                      Reserved;                   /* 03h */
462
    U8                      Reserved1;                  /* 04h */
463
    U8                      Port;                       /* 05h */
464
    U16                     Reserved2;                  /* 06h */
465
} EVENT_DATA_LOOP_STATE, MPI_POINTER PTR_EVENT_DATA_LOOP_STATE,
466
  EventDataLoopState_t, MPI_POINTER pEventDataLoopState_t;
467
 
468
#define MPI_EVENT_LOOP_STATE_CHANGE_LIP     (0x0001)
469
#define MPI_EVENT_LOOP_STATE_CHANGE_LPE     (0x0002)
470
#define MPI_EVENT_LOOP_STATE_CHANGE_LPB     (0x0003)
471
 
472
/* MPI LOGOUT Event data */
473
 
474
typedef struct _EVENT_DATA_LOGOUT
475
{
476
    U32                     NPortID;                    /* 00h */
477
    U8                      AliasIndex;                 /* 04h */
478
    U8                      Port;                       /* 05h */
479
    U16                     Reserved1;                  /* 06h */
480
} EVENT_DATA_LOGOUT, MPI_POINTER PTR_EVENT_DATA_LOGOUT,
481
  EventDataLogout_t, MPI_POINTER pEventDataLogout_t;
482
 
483
#define MPI_EVENT_LOGOUT_ALL_ALIASES        (0xFF)
484
 
485
 
486
/* MPI Integrated RAID Event data */
487
 
488
typedef struct _EVENT_DATA_RAID
489
{
490
    U8                      VolumeID;                   /* 00h */
491
    U8                      VolumeBus;                  /* 01h */
492
    U8                      ReasonCode;                 /* 02h */
493
    U8                      PhysDiskNum;                /* 03h */
494
    U8                      ASC;                        /* 04h */
495
    U8                      ASCQ;                       /* 05h */
496
    U16                     Reserved;                   /* 06h */
497
    U32                     SettingsStatus;             /* 08h */
498
} EVENT_DATA_RAID, MPI_POINTER PTR_EVENT_DATA_RAID,
499
  MpiEventDataRaid_t, MPI_POINTER pMpiEventDataRaid_t;
500
 
501
/* MPI Integrated RAID Event data ReasonCode values */
502
#define MPI_EVENT_RAID_RC_VOLUME_CREATED                (0x00)
503
#define MPI_EVENT_RAID_RC_VOLUME_DELETED                (0x01)
504
#define MPI_EVENT_RAID_RC_VOLUME_SETTINGS_CHANGED       (0x02)
505
#define MPI_EVENT_RAID_RC_VOLUME_STATUS_CHANGED         (0x03)
506
#define MPI_EVENT_RAID_RC_VOLUME_PHYSDISK_CHANGED       (0x04)
507
#define MPI_EVENT_RAID_RC_PHYSDISK_CREATED              (0x05)
508
#define MPI_EVENT_RAID_RC_PHYSDISK_DELETED              (0x06)
509
#define MPI_EVENT_RAID_RC_PHYSDISK_SETTINGS_CHANGED     (0x07)
510
#define MPI_EVENT_RAID_RC_PHYSDISK_STATUS_CHANGED       (0x08)
511
#define MPI_EVENT_RAID_RC_DOMAIN_VAL_NEEDED             (0x09)
512
#define MPI_EVENT_RAID_RC_SMART_DATA                    (0x0A)
513
#define MPI_EVENT_RAID_RC_REPLACE_ACTION_STARTED        (0x0B)
514
 
515
 
516
/*****************************************************************************
517
*
518
*               F i r m w a r e    L o a d    M e s s a g e s
519
*
520
*****************************************************************************/
521
 
522
/****************************************************************************/
523
/*  Firmware Download message and associated structures                     */
524
/****************************************************************************/
525
 
526
typedef struct _MSG_FW_DOWNLOAD
527
{
528
    U8                      ImageType;                  /* 00h */
529
    U8                      Reserved;                   /* 01h */
530
    U8                      ChainOffset;                /* 02h */
531
    U8                      Function;                   /* 03h */
532
    U8                      Reserved1[3];               /* 04h */
533
    U8                      MsgFlags;                   /* 07h */
534
    U32                     MsgContext;                 /* 08h */
535
    SGE_MPI_UNION           SGL;                        /* 0Ch */
536
} MSG_FW_DOWNLOAD, MPI_POINTER PTR_MSG_FW_DOWNLOAD,
537
  FWDownload_t, MPI_POINTER pFWDownload_t;
538
 
539
#define MPI_FW_DOWNLOAD_ITYPE_RESERVED      (0x00)
540
#define MPI_FW_DOWNLOAD_ITYPE_FW            (0x01)
541
#define MPI_FW_DOWNLOAD_ITYPE_BIOS          (0x02)
542
#define MPI_FW_DOWNLOAD_ITYPE_NVDATA        (0x03)
543
 
544
 
545
typedef struct _FWDownloadTCSGE
546
{
547
    U8                      Reserved;                   /* 00h */
548
    U8                      ContextSize;                /* 01h */
549
    U8                      DetailsLength;              /* 02h */
550
    U8                      Flags;                      /* 03h */
551
    U32                     Reserved_0100_Checksum;     /* 04h */ /* obsolete Checksum */
552
    U32                     ImageOffset;                /* 08h */
553
    U32                     ImageSize;                  /* 0Ch */
554
} FW_DOWNLOAD_TCSGE, MPI_POINTER PTR_FW_DOWNLOAD_TCSGE,
555
  FWDownloadTCSGE_t, MPI_POINTER pFWDownloadTCSGE_t;
556
 
557
/* Firmware Download reply */
558
typedef struct _MSG_FW_DOWNLOAD_REPLY
559
{
560
    U8                      ImageType;                  /* 00h */
561
    U8                      Reserved;                   /* 01h */
562
    U8                      MsgLength;                  /* 02h */
563
    U8                      Function;                   /* 03h */
564
    U8                      Reserved1[3];               /* 04h */
565
    U8                      MsgFlags;                   /* 07h */
566
    U32                     MsgContext;                 /* 08h */
567
    U16                     Reserved2;                  /* 0Ch */
568
    U16                     IOCStatus;                  /* 0Eh */
569
    U32                     IOCLogInfo;                 /* 10h */
570
} MSG_FW_DOWNLOAD_REPLY, MPI_POINTER PTR_MSG_FW_DOWNLOAD_REPLY,
571
  FWDownloadReply_t, MPI_POINTER pFWDownloadReply_t;
572
 
573
 
574
/****************************************************************************/
575
/*  Firmware Upload message and associated structures                       */
576
/****************************************************************************/
577
 
578
typedef struct _MSG_FW_UPLOAD
579
{
580
    U8                      ImageType;                  /* 00h */
581
    U8                      Reserved;                   /* 01h */
582
    U8                      ChainOffset;                /* 02h */
583
    U8                      Function;                   /* 03h */
584
    U8                      Reserved1[3];               /* 04h */
585
    U8                      MsgFlags;                   /* 07h */
586
    U32                     MsgContext;                 /* 08h */
587
    SGE_MPI_UNION           SGL;                        /* 0Ch */
588
} MSG_FW_UPLOAD, MPI_POINTER PTR_MSG_FW_UPLOAD,
589
  FWUpload_t, MPI_POINTER pFWUpload_t;
590
 
591
#define MPI_FW_UPLOAD_ITYPE_FW_IOC_MEM      (0x00)
592
#define MPI_FW_UPLOAD_ITYPE_FW_FLASH        (0x01)
593
#define MPI_FW_UPLOAD_ITYPE_BIOS_FLASH      (0x02)
594
#define MPI_FW_UPLOAD_ITYPE_NVDATA          (0x03)
595
 
596
typedef struct _FWUploadTCSGE
597
{
598
    U8                      Reserved;                   /* 00h */
599
    U8                      ContextSize;                /* 01h */
600
    U8                      DetailsLength;              /* 02h */
601
    U8                      Flags;                      /* 03h */
602
    U32                     Reserved1;                  /* 04h */
603
    U32                     ImageOffset;                /* 08h */
604
    U32                     ImageSize;                  /* 0Ch */
605
} FW_UPLOAD_TCSGE, MPI_POINTER PTR_FW_UPLOAD_TCSGE,
606
  FWUploadTCSGE_t, MPI_POINTER pFWUploadTCSGE_t;
607
 
608
/* Firmware Upload reply */
609
typedef struct _MSG_FW_UPLOAD_REPLY
610
{
611
    U8                      ImageType;                  /* 00h */
612
    U8                      Reserved;                   /* 01h */
613
    U8                      MsgLength;                  /* 02h */
614
    U8                      Function;                   /* 03h */
615
    U8                      Reserved1[3];               /* 04h */
616
    U8                      MsgFlags;                   /* 07h */
617
    U32                     MsgContext;                 /* 08h */
618
    U16                     Reserved2;                  /* 0Ch */
619
    U16                     IOCStatus;                  /* 0Eh */
620
    U32                     IOCLogInfo;                 /* 10h */
621
    U32                     ActualImageSize;            /* 14h */
622
} MSG_FW_UPLOAD_REPLY, MPI_POINTER PTR_MSG_FW_UPLOAD_REPLY,
623
  FWUploadReply_t, MPI_POINTER pFWUploadReply_t;
624
 
625
 
626
typedef struct _MPI_FW_HEADER
627
{
628
    U32                     ArmBranchInstruction0;      /* 00h */
629
    U32                     Signature0;                 /* 04h */
630
    U32                     Signature1;                 /* 08h */
631
    U32                     Signature2;                 /* 0Ch */
632
    U32                     ArmBranchInstruction1;      /* 10h */
633
    U32                     ArmBranchInstruction2;      /* 14h */
634
    U32                     Reserved;                   /* 18h */
635
    U32                     Checksum;                   /* 1Ch */
636
    U16                     VendorId;                   /* 20h */
637
    U16                     ProductId;                  /* 22h */
638
    MPI_FW_VERSION          FWVersion;                  /* 24h */
639
    U32                     SeqCodeVersion;             /* 28h */
640
    U32                     ImageSize;                  /* 2Ch */
641
    U32                     NextImageHeaderOffset;      /* 30h */
642
    U32                     LoadStartAddress;           /* 34h */
643
    U32                     IopResetVectorValue;        /* 38h */
644
    U32                     IopResetRegAddr;            /* 3Ch */
645
    U32                     VersionNameWhat;            /* 40h */
646
    U8                      VersionName[32];            /* 44h */
647
    U32                     VendorNameWhat;             /* 64h */
648
    U8                      VendorName[32];             /* 68h */
649
} MPI_FW_HEADER, MPI_POINTER PTR_MPI_FW_HEADER,
650
  MpiFwHeader_t, MPI_POINTER pMpiFwHeader_t;
651
 
652
#define MPI_FW_HEADER_WHAT_SIGNATURE        (0x29232840)
653
 
654
/* defines for using the ProductId field */
655
#define MPI_FW_HEADER_PID_TYPE_MASK             (0xF000)
656
#define MPI_FW_HEADER_PID_TYPE_SCSI             (0x0000)
657
#define MPI_FW_HEADER_PID_TYPE_FC               (0x1000)
658
 
659
#define MPI_FW_HEADER_SIGNATURE_0               (0x5AEAA55A)
660
#define MPI_FW_HEADER_SIGNATURE_1               (0xA55AEAA5)
661
#define MPI_FW_HEADER_SIGNATURE_2               (0x5AA55AEA)
662
 
663
#define MPI_FW_HEADER_PID_PROD_MASK                     (0x0F00)
664
#define MPI_FW_HEADER_PID_PROD_INITIATOR_SCSI           (0x0100)
665
#define MPI_FW_HEADER_PID_PROD_TARGET_INITIATOR_SCSI    (0x0200)
666
#define MPI_FW_HEADER_PID_PROD_TARGET_SCSI              (0x0300)
667
#define MPI_FW_HEADER_PID_PROD_IM_SCSI                  (0x0400)
668
#define MPI_FW_HEADER_PID_PROD_IS_SCSI                  (0x0500)
669
#define MPI_FW_HEADER_PID_PROD_CTX_SCSI                 (0x0600)
670
 
671
#define MPI_FW_HEADER_PID_FAMILY_MASK           (0x00FF)
672
#define MPI_FW_HEADER_PID_FAMILY_1030A0_SCSI    (0x0001)
673
#define MPI_FW_HEADER_PID_FAMILY_1030B0_SCSI    (0x0002)
674
#define MPI_FW_HEADER_PID_FAMILY_1030B1_SCSI    (0x0003)
675
#define MPI_FW_HEADER_PID_FAMILY_1030C0_SCSI    (0x0004)
676
#define MPI_FW_HEADER_PID_FAMILY_1020A0_SCSI    (0x0005)
677
#define MPI_FW_HEADER_PID_FAMILY_1020B0_SCSI    (0x0006)
678
#define MPI_FW_HEADER_PID_FAMILY_1020B1_SCSI    (0x0007)
679
#define MPI_FW_HEADER_PID_FAMILY_1020C0_SCSI    (0x0008)
680
#define MPI_FW_HEADER_PID_FAMILY_1035A0_SCSI    (0x0009)
681
#define MPI_FW_HEADER_PID_FAMILY_1035B0_SCSI    (0x000A)
682
#define MPI_FW_HEADER_PID_FAMILY_1030TA0_SCSI   (0x000B)
683
#define MPI_FW_HEADER_PID_FAMILY_1020TA0_SCSI   (0x000C)
684
#define MPI_FW_HEADER_PID_FAMILY_909_FC         (0x0000)
685
#define MPI_FW_HEADER_PID_FAMILY_919_FC         (0x0001)
686
#define MPI_FW_HEADER_PID_FAMILY_919X_FC        (0x0002)
687
 
688
typedef struct _MPI_EXT_IMAGE_HEADER
689
{
690
    U8                      ImageType;                  /* 00h */
691
    U8                      Reserved;                   /* 01h */
692
    U16                     Reserved1;                  /* 02h */
693
    U32                     Checksum;                   /* 04h */
694
    U32                     ImageSize;                  /* 08h */
695
    U32                     NextImageHeaderOffset;      /* 0Ch */
696
    U32                     LoadStartAddress;           /* 10h */
697
    U32                     Reserved2;                  /* 14h */
698
} MPI_EXT_IMAGE_HEADER, MPI_POINTER PTR_MPI_EXT_IMAGE_HEADER,
699
  MpiExtImageHeader_t, MPI_POINTER pMpiExtImageHeader_t;
700
 
701
/* defines for the ImageType field */
702
#define MPI_EXT_IMAGE_TYPE_UNSPECIFIED          (0x00)
703
#define MPI_EXT_IMAGE_TYPE_FW                   (0x01)
704
#define MPI_EXT_IMAGE_TYPE_NVDATA               (0x03)
705
 
706
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.