1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119#ifndef MPI_IOC_H
120#define MPI_IOC_H
121
122
123
124
125
126
127
128
129
130
131
132
133typedef struct _MSG_IOC_INIT
134{
135 U8 WhoInit;
136 U8 Reserved;
137 U8 ChainOffset;
138 U8 Function;
139 U8 Flags;
140 U8 MaxDevices;
141 U8 MaxBuses;
142 U8 MsgFlags;
143 U32 MsgContext;
144 U16 ReplyFrameSize;
145 U8 Reserved1[2];
146 U32 HostMfaHighAddr;
147 U32 SenseBufferHighAddr;
148 U32 ReplyFifoHostSignalingAddr;
149 SGE_SIMPLE_UNION HostPageBufferSGE;
150 U16 MsgVersion;
151 U16 HeaderVersion;
152} MSG_IOC_INIT, MPI_POINTER PTR_MSG_IOC_INIT,
153 IOCInit_t, MPI_POINTER pIOCInit_t;
154
155
156#define MPI_WHOINIT_NO_ONE (0x00)
157#define MPI_WHOINIT_SYSTEM_BIOS (0x01)
158#define MPI_WHOINIT_ROM_BIOS (0x02)
159#define MPI_WHOINIT_PCI_PEER (0x03)
160#define MPI_WHOINIT_HOST_DRIVER (0x04)
161#define MPI_WHOINIT_MANUFACTURER (0x05)
162
163
164#define MPI_IOCINIT_FLAGS_HOST_PAGE_BUFFER_PERSISTENT (0x04)
165#define MPI_IOCINIT_FLAGS_REPLY_FIFO_HOST_SIGNAL (0x02)
166#define MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE (0x01)
167
168
169#define MPI_IOCINIT_MSGVERSION_MAJOR_MASK (0xFF00)
170#define MPI_IOCINIT_MSGVERSION_MAJOR_SHIFT (8)
171#define MPI_IOCINIT_MSGVERSION_MINOR_MASK (0x00FF)
172#define MPI_IOCINIT_MSGVERSION_MINOR_SHIFT (0)
173
174
175#define MPI_IOCINIT_HEADERVERSION_UNIT_MASK (0xFF00)
176#define MPI_IOCINIT_HEADERVERSION_UNIT_SHIFT (8)
177#define MPI_IOCINIT_HEADERVERSION_DEV_MASK (0x00FF)
178#define MPI_IOCINIT_HEADERVERSION_DEV_SHIFT (0)
179
180
181typedef struct _MSG_IOC_INIT_REPLY
182{
183 U8 WhoInit;
184 U8 Reserved;
185 U8 MsgLength;
186 U8 Function;
187 U8 Flags;
188 U8 MaxDevices;
189 U8 MaxBuses;
190 U8 MsgFlags;
191 U32 MsgContext;
192 U16 Reserved2;
193 U16 IOCStatus;
194 U32 IOCLogInfo;
195} MSG_IOC_INIT_REPLY, MPI_POINTER PTR_MSG_IOC_INIT_REPLY,
196 IOCInitReply_t, MPI_POINTER pIOCInitReply_t;
197
198
199
200
201
202
203
204typedef struct _MSG_IOC_FACTS
205{
206 U8 Reserved[2];
207 U8 ChainOffset;
208 U8 Function;
209 U8 Reserved1[3];
210 U8 MsgFlags;
211 U32 MsgContext;
212} MSG_IOC_FACTS, MPI_POINTER PTR_IOC_FACTS,
213 IOCFacts_t, MPI_POINTER pIOCFacts_t;
214
215typedef struct _MPI_FW_VERSION_STRUCT
216{
217 U8 Dev;
218 U8 Unit;
219 U8 Minor;
220 U8 Major;
221} MPI_FW_VERSION_STRUCT;
222
223typedef union _MPI_FW_VERSION
224{
225 MPI_FW_VERSION_STRUCT Struct;
226 U32 Word;
227} MPI_FW_VERSION;
228
229
230typedef struct _MSG_IOC_FACTS_REPLY
231{
232 U16 MsgVersion;
233 U8 MsgLength;
234 U8 Function;
235 U16 HeaderVersion;
236 U8 IOCNumber;
237 U8 MsgFlags;
238 U32 MsgContext;
239 U16 IOCExceptions;
240 U16 IOCStatus;
241 U32 IOCLogInfo;
242 U8 MaxChainDepth;
243 U8 WhoInit;
244 U8 BlockSize;
245 U8 Flags;
246 U16 ReplyQueueDepth;
247 U16 RequestFrameSize;
248 U16 Reserved_0101_FWVersion;
249 U16 ProductID;
250 U32 CurrentHostMfaHighAddr;
251 U16 GlobalCredits;
252 U8 NumberOfPorts;
253 U8 EventState;
254 U32 CurrentSenseBufferHighAddr;
255 U16 CurReplyFrameSize;
256 U8 MaxDevices;
257 U8 MaxBuses;
258 U32 FWImageSize;
259 U32 IOCCapabilities;
260 MPI_FW_VERSION FWVersion;
261 U16 HighPriorityQueueDepth;
262 U16 Reserved2;
263 SGE_SIMPLE_UNION HostPageBufferSGE;
264 U32 ReplyFifoHostSignalingAddr;
265} MSG_IOC_FACTS_REPLY, MPI_POINTER PTR_MSG_IOC_FACTS_REPLY,
266 IOCFactsReply_t, MPI_POINTER pIOCFactsReply_t;
267
268#define MPI_IOCFACTS_MSGVERSION_MAJOR_MASK (0xFF00)
269#define MPI_IOCFACTS_MSGVERSION_MAJOR_SHIFT (8)
270#define MPI_IOCFACTS_MSGVERSION_MINOR_MASK (0x00FF)
271#define MPI_IOCFACTS_MSGVERSION_MINOR_SHIFT (0)
272
273#define MPI_IOCFACTS_HDRVERSION_UNIT_MASK (0xFF00)
274#define MPI_IOCFACTS_HDRVERSION_UNIT_SHIFT (8)
275#define MPI_IOCFACTS_HDRVERSION_DEV_MASK (0x00FF)
276#define MPI_IOCFACTS_HDRVERSION_DEV_SHIFT (0)
277
278#define MPI_IOCFACTS_EXCEPT_CONFIG_CHECKSUM_FAIL (0x0001)
279#define MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID (0x0002)
280#define MPI_IOCFACTS_EXCEPT_FW_CHECKSUM_FAIL (0x0004)
281#define MPI_IOCFACTS_EXCEPT_PERSISTENT_TABLE_FULL (0x0008)
282#define MPI_IOCFACTS_EXCEPT_METADATA_UNSUPPORTED (0x0010)
283
284#define MPI_IOCFACTS_FLAGS_FW_DOWNLOAD_BOOT (0x01)
285#define MPI_IOCFACTS_FLAGS_REPLY_FIFO_HOST_SIGNAL (0x02)
286#define MPI_IOCFACTS_FLAGS_HOST_PAGE_BUFFER_PERSISTENT (0x04)
287
288#define MPI_IOCFACTS_EVENTSTATE_DISABLED (0x00)
289#define MPI_IOCFACTS_EVENTSTATE_ENABLED (0x01)
290
291#define MPI_IOCFACTS_CAPABILITY_HIGH_PRI_Q (0x00000001)
292#define MPI_IOCFACTS_CAPABILITY_REPLY_HOST_SIGNAL (0x00000002)
293#define MPI_IOCFACTS_CAPABILITY_QUEUE_FULL_HANDLING (0x00000004)
294#define MPI_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER (0x00000008)
295#define MPI_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER (0x00000010)
296#define MPI_IOCFACTS_CAPABILITY_EXTENDED_BUFFER (0x00000020)
297#define MPI_IOCFACTS_CAPABILITY_EEDP (0x00000040)
298#define MPI_IOCFACTS_CAPABILITY_BIDIRECTIONAL (0x00000080)
299#define MPI_IOCFACTS_CAPABILITY_MULTICAST (0x00000100)
300#define MPI_IOCFACTS_CAPABILITY_SCSIIO32 (0x00000200)
301#define MPI_IOCFACTS_CAPABILITY_NO_SCSIIO16 (0x00000400)
302#define MPI_IOCFACTS_CAPABILITY_TLR (0x00000800)
303
304
305
306
307
308
309
310
311
312
313
314
315typedef struct _MSG_PORT_FACTS
316{
317 U8 Reserved[2];
318 U8 ChainOffset;
319 U8 Function;
320 U8 Reserved1[2];
321 U8 PortNumber;
322 U8 MsgFlags;
323 U32 MsgContext;
324} MSG_PORT_FACTS, MPI_POINTER PTR_MSG_PORT_FACTS,
325 PortFacts_t, MPI_POINTER pPortFacts_t;
326
327typedef struct _MSG_PORT_FACTS_REPLY
328{
329 U16 Reserved;
330 U8 MsgLength;
331 U8 Function;
332 U16 Reserved1;
333 U8 PortNumber;
334 U8 MsgFlags;
335 U32 MsgContext;
336 U16 Reserved2;
337 U16 IOCStatus;
338 U32 IOCLogInfo;
339 U8 Reserved3;
340 U8 PortType;
341 U16 MaxDevices;
342 U16 PortSCSIID;
343 U16 ProtocolFlags;
344 U16 MaxPostedCmdBuffers;
345 U16 MaxPersistentIDs;
346 U16 MaxLanBuckets;
347 U8 MaxInitiators;
348 U8 Reserved4;
349 U32 Reserved5;
350} MSG_PORT_FACTS_REPLY, MPI_POINTER PTR_MSG_PORT_FACTS_REPLY,
351 PortFactsReply_t, MPI_POINTER pPortFactsReply_t;
352
353
354
355
356#define MPI_PORTFACTS_PORTTYPE_INACTIVE (0x00)
357#define MPI_PORTFACTS_PORTTYPE_SCSI (0x01)
358#define MPI_PORTFACTS_PORTTYPE_FC (0x10)
359#define MPI_PORTFACTS_PORTTYPE_ISCSI (0x20)
360#define MPI_PORTFACTS_PORTTYPE_SAS (0x30)
361
362
363
364#define MPI_PORTFACTS_PROTOCOL_LOGBUSADDR (0x01)
365#define MPI_PORTFACTS_PROTOCOL_LAN (0x02)
366#define MPI_PORTFACTS_PROTOCOL_TARGET (0x04)
367#define MPI_PORTFACTS_PROTOCOL_INITIATOR (0x08)
368
369
370
371
372
373
374typedef struct _MSG_PORT_ENABLE
375{
376 U8 Reserved[2];
377 U8 ChainOffset;
378 U8 Function;
379 U8 Reserved1[2];
380 U8 PortNumber;
381 U8 MsgFlags;
382 U32 MsgContext;
383} MSG_PORT_ENABLE, MPI_POINTER PTR_MSG_PORT_ENABLE,
384 PortEnable_t, MPI_POINTER pPortEnable_t;
385
386typedef struct _MSG_PORT_ENABLE_REPLY
387{
388 U8 Reserved[2];
389 U8 MsgLength;
390 U8 Function;
391 U8 Reserved1[2];
392 U8 PortNumber;
393 U8 MsgFlags;
394 U32 MsgContext;
395 U16 Reserved2;
396 U16 IOCStatus;
397 U32 IOCLogInfo;
398} MSG_PORT_ENABLE_REPLY, MPI_POINTER PTR_MSG_PORT_ENABLE_REPLY,
399 PortEnableReply_t, MPI_POINTER pPortEnableReply_t;
400
401
402
403
404
405
406
407
408
409
410
411
412typedef struct _MSG_EVENT_NOTIFY
413{
414 U8 Switch;
415 U8 Reserved;
416 U8 ChainOffset;
417 U8 Function;
418 U8 Reserved1[3];
419 U8 MsgFlags;
420 U32 MsgContext;
421} MSG_EVENT_NOTIFY, MPI_POINTER PTR_MSG_EVENT_NOTIFY,
422 EventNotification_t, MPI_POINTER pEventNotification_t;
423
424
425
426typedef struct _MSG_EVENT_NOTIFY_REPLY
427{
428 U16 EventDataLength;
429 U8 MsgLength;
430 U8 Function;
431 U8 Reserved1[2];
432 U8 AckRequired;
433 U8 MsgFlags;
434 U32 MsgContext;
435 U8 Reserved2[2];
436 U16 IOCStatus;
437 U32 IOCLogInfo;
438 U32 Event;
439 U32 EventContext;
440 U32 Data[1];
441} MSG_EVENT_NOTIFY_REPLY, MPI_POINTER PTR_MSG_EVENT_NOTIFY_REPLY,
442 EventNotificationReply_t, MPI_POINTER pEventNotificationReply_t;
443
444
445
446typedef struct _MSG_EVENT_ACK
447{
448 U8 Reserved[2];
449 U8 ChainOffset;
450 U8 Function;
451 U8 Reserved1[3];
452 U8 MsgFlags;
453 U32 MsgContext;
454 U32 Event;
455 U32 EventContext;
456} MSG_EVENT_ACK, MPI_POINTER PTR_MSG_EVENT_ACK,
457 EventAck_t, MPI_POINTER pEventAck_t;
458
459typedef struct _MSG_EVENT_ACK_REPLY
460{
461 U8 Reserved[2];
462 U8 MsgLength;
463 U8 Function;
464 U8 Reserved1[3];
465 U8 MsgFlags;
466 U32 MsgContext;
467 U16 Reserved2;
468 U16 IOCStatus;
469 U32 IOCLogInfo;
470} MSG_EVENT_ACK_REPLY, MPI_POINTER PTR_MSG_EVENT_ACK_REPLY,
471 EventAckReply_t, MPI_POINTER pEventAckReply_t;
472
473
474
475#define MPI_EVENT_NOTIFICATION_SWITCH_OFF (0x00)
476#define MPI_EVENT_NOTIFICATION_SWITCH_ON (0x01)
477
478
479
480#define MPI_EVENT_NONE (0x00000000)
481#define MPI_EVENT_LOG_DATA (0x00000001)
482#define MPI_EVENT_STATE_CHANGE (0x00000002)
483#define MPI_EVENT_UNIT_ATTENTION (0x00000003)
484#define MPI_EVENT_IOC_BUS_RESET (0x00000004)
485#define MPI_EVENT_EXT_BUS_RESET (0x00000005)
486#define MPI_EVENT_RESCAN (0x00000006)
487#define MPI_EVENT_LINK_STATUS_CHANGE (0x00000007)
488#define MPI_EVENT_LOOP_STATE_CHANGE (0x00000008)
489#define MPI_EVENT_LOGOUT (0x00000009)
490#define MPI_EVENT_EVENT_CHANGE (0x0000000A)
491#define MPI_EVENT_INTEGRATED_RAID (0x0000000B)
492#define MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE (0x0000000C)
493#define MPI_EVENT_ON_BUS_TIMER_EXPIRED (0x0000000D)
494#define MPI_EVENT_QUEUE_FULL (0x0000000E)
495#define MPI_EVENT_SAS_DEVICE_STATUS_CHANGE (0x0000000F)
496#define MPI_EVENT_SAS_SES (0x00000010)
497#define MPI_EVENT_PERSISTENT_TABLE_FULL (0x00000011)
498#define MPI_EVENT_SAS_PHY_LINK_STATUS (0x00000012)
499#define MPI_EVENT_SAS_DISCOVERY_ERROR (0x00000013)
500#define MPI_EVENT_IR_RESYNC_UPDATE (0x00000014)
501#define MPI_EVENT_IR2 (0x00000015)
502#define MPI_EVENT_SAS_DISCOVERY (0x00000016)
503#define MPI_EVENT_SAS_BROADCAST_PRIMITIVE (0x00000017)
504#define MPI_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE (0x00000018)
505#define MPI_EVENT_SAS_INIT_TABLE_OVERFLOW (0x00000019)
506#define MPI_EVENT_SAS_SMP_ERROR (0x0000001A)
507#define MPI_EVENT_SAS_EXPANDER_STATUS_CHANGE (0x0000001B)
508#define MPI_EVENT_LOG_ENTRY_ADDED (0x00000021)
509
510
511
512#define MPI_EVENT_NOTIFICATION_ACK_NOT_REQUIRED (0x00)
513#define MPI_EVENT_NOTIFICATION_ACK_REQUIRED (0x01)
514
515
516
517typedef struct _EVENT_DATA_EVENT_CHANGE
518{
519 U8 EventState;
520 U8 Reserved;
521 U16 Reserved1;
522} EVENT_DATA_EVENT_CHANGE, MPI_POINTER PTR_EVENT_DATA_EVENT_CHANGE,
523 EventDataEventChange_t, MPI_POINTER pEventDataEventChange_t;
524
525
526
527
528#define MPI_EVENT_DATA_LOG_ENTRY_DATA_LENGTH (0x1C)
529typedef struct _EVENT_DATA_LOG_ENTRY
530{
531 U32 TimeStamp;
532 U32 Reserved1;
533 U16 LogSequence;
534 U16 LogEntryQualifier;
535 U8 LogData[MPI_EVENT_DATA_LOG_ENTRY_DATA_LENGTH];
536} EVENT_DATA_LOG_ENTRY, MPI_POINTER PTR_EVENT_DATA_LOG_ENTRY,
537 MpiEventDataLogEntry_t, MPI_POINTER pMpiEventDataLogEntry_t;
538
539typedef struct _EVENT_DATA_LOG_ENTRY_ADDED
540{
541 U16 LogSequence;
542 U16 Reserved1;
543 U32 Reserved2;
544 EVENT_DATA_LOG_ENTRY LogEntry;
545} EVENT_DATA_LOG_ENTRY_ADDED, MPI_POINTER PTR_EVENT_DATA_LOG_ENTRY_ADDED,
546 MpiEventDataLogEntryAdded_t, MPI_POINTER pMpiEventDataLogEntryAdded_t;
547
548
549
550typedef struct _EVENT_DATA_SCSI
551{
552 U8 TargetID;
553 U8 BusPort;
554 U16 Reserved;
555} EVENT_DATA_SCSI, MPI_POINTER PTR_EVENT_DATA_SCSI,
556 EventDataScsi_t, MPI_POINTER pEventDataScsi_t;
557
558
559
560typedef struct _EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE
561{
562 U8 TargetID;
563 U8 Bus;
564 U8 ReasonCode;
565 U8 LUN;
566 U8 ASC;
567 U8 ASCQ;
568 U16 Reserved;
569} EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE,
570 MPI_POINTER PTR_EVENT_DATA_SCSI_DEVICE_STATUS_CHANGE,
571 MpiEventDataScsiDeviceStatusChange_t,
572 MPI_POINTER pMpiEventDataScsiDeviceStatusChange_t;
573
574
575#define MPI_EVENT_SCSI_DEV_STAT_RC_ADDED (0x03)
576#define MPI_EVENT_SCSI_DEV_STAT_RC_NOT_RESPONDING (0x04)
577#define MPI_EVENT_SCSI_DEV_STAT_RC_SMART_DATA (0x05)
578
579
580
581typedef struct _EVENT_DATA_SAS_DEVICE_STATUS_CHANGE
582{
583 U8 TargetID;
584 U8 Bus;
585 U8 ReasonCode;
586 U8 Reserved;
587 U8 ASC;
588 U8 ASCQ;
589 U16 DevHandle;
590 U32 DeviceInfo;
591 U16 ParentDevHandle;
592 U8 PhyNum;
593 U8 Reserved1;
594 U64 SASAddress;
595 U8 LUN[8];
596 U16 TaskTag;
597 U16 Reserved2;
598} EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
599 MPI_POINTER PTR_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
600 MpiEventDataSasDeviceStatusChange_t,
601 MPI_POINTER pMpiEventDataSasDeviceStatusChange_t;
602
603
604#define MPI_EVENT_SAS_DEV_STAT_RC_ADDED (0x03)
605#define MPI_EVENT_SAS_DEV_STAT_RC_NOT_RESPONDING (0x04)
606#define MPI_EVENT_SAS_DEV_STAT_RC_SMART_DATA (0x05)
607#define MPI_EVENT_SAS_DEV_STAT_RC_NO_PERSIST_ADDED (0x06)
608#define MPI_EVENT_SAS_DEV_STAT_RC_UNSUPPORTED (0x07)
609#define MPI_EVENT_SAS_DEV_STAT_RC_INTERNAL_DEVICE_RESET (0x08)
610#define MPI_EVENT_SAS_DEV_STAT_RC_TASK_ABORT_INTERNAL (0x09)
611#define MPI_EVENT_SAS_DEV_STAT_RC_ABORT_TASK_SET_INTERNAL (0x0A)
612#define MPI_EVENT_SAS_DEV_STAT_RC_CLEAR_TASK_SET_INTERNAL (0x0B)
613#define MPI_EVENT_SAS_DEV_STAT_RC_QUERY_TASK_INTERNAL (0x0C)
614#define MPI_EVENT_SAS_DEV_STAT_RC_ASYNC_NOTIFICATION (0x0D)
615
616
617
618
619typedef struct _EVENT_DATA_QUEUE_FULL
620{
621 U8 TargetID;
622 U8 Bus;
623 U16 CurrentDepth;
624} EVENT_DATA_QUEUE_FULL, MPI_POINTER PTR_EVENT_DATA_QUEUE_FULL,
625 EventDataQueueFull_t, MPI_POINTER pEventDataQueueFull_t;
626
627
628
629typedef struct _EVENT_DATA_RAID
630{
631 U8 VolumeID;
632 U8 VolumeBus;
633 U8 ReasonCode;
634 U8 PhysDiskNum;
635 U8 ASC;
636 U8 ASCQ;
637 U16 Reserved;
638 U32 SettingsStatus;
639} EVENT_DATA_RAID, MPI_POINTER PTR_EVENT_DATA_RAID,
640 MpiEventDataRaid_t, MPI_POINTER pMpiEventDataRaid_t;
641
642
643#define MPI_EVENT_RAID_RC_VOLUME_CREATED (0x00)
644#define MPI_EVENT_RAID_RC_VOLUME_DELETED (0x01)
645#define MPI_EVENT_RAID_RC_VOLUME_SETTINGS_CHANGED (0x02)
646#define MPI_EVENT_RAID_RC_VOLUME_STATUS_CHANGED (0x03)
647#define MPI_EVENT_RAID_RC_VOLUME_PHYSDISK_CHANGED (0x04)
648#define MPI_EVENT_RAID_RC_PHYSDISK_CREATED (0x05)
649#define MPI_EVENT_RAID_RC_PHYSDISK_DELETED (0x06)
650#define MPI_EVENT_RAID_RC_PHYSDISK_SETTINGS_CHANGED (0x07)
651#define MPI_EVENT_RAID_RC_PHYSDISK_STATUS_CHANGED (0x08)
652#define MPI_EVENT_RAID_RC_DOMAIN_VAL_NEEDED (0x09)
653#define MPI_EVENT_RAID_RC_SMART_DATA (0x0A)
654#define MPI_EVENT_RAID_RC_REPLACE_ACTION_STARTED (0x0B)
655
656
657
658
659typedef struct _MPI_EVENT_DATA_IR_RESYNC_UPDATE
660{
661 U8 VolumeID;
662 U8 VolumeBus;
663 U8 ResyncComplete;
664 U8 Reserved1;
665 U32 Reserved2;
666} MPI_EVENT_DATA_IR_RESYNC_UPDATE,
667 MPI_POINTER PTR_MPI_EVENT_DATA_IR_RESYNC_UPDATE,
668 MpiEventDataIrResyncUpdate_t, MPI_POINTER pMpiEventDataIrResyncUpdate_t;
669
670
671
672
673typedef struct _IR2_STATE_CHANGED
674{
675 U16 PreviousState;
676 U16 NewState;
677} IR2_STATE_CHANGED, MPI_POINTER PTR_IR2_STATE_CHANGED;
678
679typedef struct _IR2_PD_INFO
680{
681 U16 DeviceHandle;
682 U8 TruncEnclosureHandle;
683 U8 TruncatedSlot;
684} IR2_PD_INFO, MPI_POINTER PTR_IR2_PD_INFO;
685
686typedef union _MPI_IR2_RC_EVENT_DATA
687{
688 IR2_STATE_CHANGED StateChanged;
689 U32 Lba;
690 IR2_PD_INFO PdInfo;
691} MPI_IR2_RC_EVENT_DATA, MPI_POINTER PTR_MPI_IR2_RC_EVENT_DATA;
692
693typedef struct _MPI_EVENT_DATA_IR2
694{
695 U8 TargetID;
696 U8 Bus;
697 U8 ReasonCode;
698 U8 PhysDiskNum;
699 MPI_IR2_RC_EVENT_DATA IR2EventData;
700} MPI_EVENT_DATA_IR2, MPI_POINTER PTR_MPI_EVENT_DATA_IR2,
701 MpiEventDataIR2_t, MPI_POINTER pMpiEventDataIR2_t;
702
703
704#define MPI_EVENT_IR2_RC_LD_STATE_CHANGED (0x01)
705#define MPI_EVENT_IR2_RC_PD_STATE_CHANGED (0x02)
706#define MPI_EVENT_IR2_RC_BAD_BLOCK_TABLE_FULL (0x03)
707#define MPI_EVENT_IR2_RC_PD_INSERTED (0x04)
708#define MPI_EVENT_IR2_RC_PD_REMOVED (0x05)
709#define MPI_EVENT_IR2_RC_FOREIGN_CFG_DETECTED (0x06)
710#define MPI_EVENT_IR2_RC_REBUILD_MEDIUM_ERROR (0x07)
711
712
713#define MPI_LD_STATE_OPTIMAL (0x00)
714#define MPI_LD_STATE_DEGRADED (0x01)
715#define MPI_LD_STATE_FAILED (0x02)
716#define MPI_LD_STATE_MISSING (0x03)
717#define MPI_LD_STATE_OFFLINE (0x04)
718
719
720#define MPI_PD_STATE_ONLINE (0x00)
721#define MPI_PD_STATE_MISSING (0x01)
722#define MPI_PD_STATE_NOT_COMPATIBLE (0x02)
723#define MPI_PD_STATE_FAILED (0x03)
724#define MPI_PD_STATE_INITIALIZING (0x04)
725#define MPI_PD_STATE_OFFLINE_AT_HOST_REQUEST (0x05)
726#define MPI_PD_STATE_FAILED_AT_HOST_REQUEST (0x06)
727#define MPI_PD_STATE_OFFLINE_FOR_ANOTHER_REASON (0xFF)
728
729
730
731typedef struct _EVENT_DATA_LINK_STATUS
732{
733 U8 State;
734 U8 Reserved;
735 U16 Reserved1;
736 U8 Reserved2;
737 U8 Port;
738 U16 Reserved3;
739} EVENT_DATA_LINK_STATUS, MPI_POINTER PTR_EVENT_DATA_LINK_STATUS,
740 EventDataLinkStatus_t, MPI_POINTER pEventDataLinkStatus_t;
741
742#define MPI_EVENT_LINK_STATUS_FAILURE (0x00000000)
743#define MPI_EVENT_LINK_STATUS_ACTIVE (0x00000001)
744
745
746
747typedef struct _EVENT_DATA_LOOP_STATE
748{
749 U8 Character4;
750 U8 Character3;
751 U8 Type;
752 U8 Reserved;
753 U8 Reserved1;
754 U8 Port;
755 U16 Reserved2;
756} EVENT_DATA_LOOP_STATE, MPI_POINTER PTR_EVENT_DATA_LOOP_STATE,
757 EventDataLoopState_t, MPI_POINTER pEventDataLoopState_t;
758
759#define MPI_EVENT_LOOP_STATE_CHANGE_LIP (0x0001)
760#define MPI_EVENT_LOOP_STATE_CHANGE_LPE (0x0002)
761#define MPI_EVENT_LOOP_STATE_CHANGE_LPB (0x0003)
762
763
764
765typedef struct _EVENT_DATA_LOGOUT
766{
767 U32 NPortID;
768 U8 AliasIndex;
769 U8 Port;
770 U16 Reserved1;
771} EVENT_DATA_LOGOUT, MPI_POINTER PTR_EVENT_DATA_LOGOUT,
772 EventDataLogout_t, MPI_POINTER pEventDataLogout_t;
773
774#define MPI_EVENT_LOGOUT_ALL_ALIASES (0xFF)
775
776
777
778typedef struct _EVENT_DATA_SAS_SES
779{
780 U8 PhyNum;
781 U8 Port;
782 U8 PortWidth;
783 U8 Reserved1;
784} EVENT_DATA_SAS_SES, MPI_POINTER PTR_EVENT_DATA_SAS_SES,
785 MpiEventDataSasSes_t, MPI_POINTER pMpiEventDataSasSes_t;
786
787
788
789typedef struct _EVENT_DATA_SAS_BROADCAST_PRIMITIVE
790{
791 U8 PhyNum;
792 U8 Port;
793 U8 PortWidth;
794 U8 Primitive;
795} EVENT_DATA_SAS_BROADCAST_PRIMITIVE,
796 MPI_POINTER PTR_EVENT_DATA_SAS_BROADCAST_PRIMITIVE,
797 MpiEventDataSasBroadcastPrimitive_t,
798 MPI_POINTER pMpiEventDataSasBroadcastPrimitive_t;
799
800#define MPI_EVENT_PRIMITIVE_CHANGE (0x01)
801#define MPI_EVENT_PRIMITIVE_EXPANDER (0x03)
802#define MPI_EVENT_PRIMITIVE_ASYNCHRONOUS_EVENT (0x04)
803#define MPI_EVENT_PRIMITIVE_RESERVED3 (0x05)
804#define MPI_EVENT_PRIMITIVE_RESERVED4 (0x06)
805#define MPI_EVENT_PRIMITIVE_CHANGE0_RESERVED (0x07)
806#define MPI_EVENT_PRIMITIVE_CHANGE1_RESERVED (0x08)
807
808
809
810typedef struct _EVENT_DATA_SAS_PHY_LINK_STATUS
811{
812 U8 PhyNum;
813 U8 LinkRates;
814 U16 DevHandle;
815 U64 SASAddress;
816} EVENT_DATA_SAS_PHY_LINK_STATUS, MPI_POINTER PTR_EVENT_DATA_SAS_PHY_LINK_STATUS,
817 MpiEventDataSasPhyLinkStatus_t, MPI_POINTER pMpiEventDataSasPhyLinkStatus_t;
818
819
820#define MPI_EVENT_SAS_PLS_LR_CURRENT_MASK (0xF0)
821#define MPI_EVENT_SAS_PLS_LR_CURRENT_SHIFT (4)
822#define MPI_EVENT_SAS_PLS_LR_PREVIOUS_MASK (0x0F)
823#define MPI_EVENT_SAS_PLS_LR_PREVIOUS_SHIFT (0)
824#define MPI_EVENT_SAS_PLS_LR_RATE_UNKNOWN (0x00)
825#define MPI_EVENT_SAS_PLS_LR_RATE_PHY_DISABLED (0x01)
826#define MPI_EVENT_SAS_PLS_LR_RATE_FAILED_SPEED_NEGOTIATION (0x02)
827#define MPI_EVENT_SAS_PLS_LR_RATE_SATA_OOB_COMPLETE (0x03)
828#define MPI_EVENT_SAS_PLS_LR_RATE_1_5 (0x08)
829#define MPI_EVENT_SAS_PLS_LR_RATE_3_0 (0x09)
830
831
832
833typedef struct _EVENT_DATA_SAS_DISCOVERY
834{
835 U32 DiscoveryStatus;
836 U32 Reserved1;
837} EVENT_DATA_SAS_DISCOVERY, MPI_POINTER PTR_EVENT_DATA_SAS_DISCOVERY,
838 EventDataSasDiscovery_t, MPI_POINTER pEventDataSasDiscovery_t;
839
840#define MPI_EVENT_SAS_DSCVRY_COMPLETE (0x00000000)
841#define MPI_EVENT_SAS_DSCVRY_IN_PROGRESS (0x00000001)
842#define MPI_EVENT_SAS_DSCVRY_PHY_BITS_MASK (0xFFFF0000)
843#define MPI_EVENT_SAS_DSCVRY_PHY_BITS_SHIFT (16)
844
845
846
847typedef struct _EVENT_DATA_DISCOVERY_ERROR
848{
849 U32 DiscoveryStatus;
850 U8 Port;
851 U8 Reserved1;
852 U16 Reserved2;
853} EVENT_DATA_DISCOVERY_ERROR, MPI_POINTER PTR_EVENT_DATA_DISCOVERY_ERROR,
854 EventDataDiscoveryError_t, MPI_POINTER pEventDataDiscoveryError_t;
855
856#define MPI_EVENT_DSCVRY_ERR_DS_LOOP_DETECTED (0x00000001)
857#define MPI_EVENT_DSCVRY_ERR_DS_UNADDRESSABLE_DEVICE (0x00000002)
858#define MPI_EVENT_DSCVRY_ERR_DS_MULTIPLE_PORTS (0x00000004)
859#define MPI_EVENT_DSCVRY_ERR_DS_EXPANDER_ERR (0x00000008)
860#define MPI_EVENT_DSCVRY_ERR_DS_SMP_TIMEOUT (0x00000010)
861#define MPI_EVENT_DSCVRY_ERR_DS_OUT_ROUTE_ENTRIES (0x00000020)
862#define MPI_EVENT_DSCVRY_ERR_DS_INDEX_NOT_EXIST (0x00000040)
863#define MPI_EVENT_DSCVRY_ERR_DS_SMP_FUNCTION_FAILED (0x00000080)
864#define MPI_EVENT_DSCVRY_ERR_DS_SMP_CRC_ERROR (0x00000100)
865#define MPI_EVENT_DSCVRY_ERR_DS_MULTPL_SUBTRACTIVE (0x00000200)
866#define MPI_EVENT_DSCVRY_ERR_DS_TABLE_TO_TABLE (0x00000400)
867#define MPI_EVENT_DSCVRY_ERR_DS_UNSUPPORTED_DEVICE (0x00000800)
868#define MPI_EVENT_DSCVRY_ERR_DS_MAX_SATA_TARGETS (0x00001000)
869#define MPI_EVENT_DSCVRY_ERR_DS_MULTI_PORT_DOMAIN (0x00002000)
870
871
872
873typedef struct _EVENT_DATA_SAS_SMP_ERROR
874{
875 U8 Status;
876 U8 Port;
877 U8 SMPFunctionResult;
878 U8 Reserved1;
879 U64 SASAddress;
880} EVENT_DATA_SAS_SMP_ERROR, MPI_POINTER PTR_EVENT_DATA_SAS_SMP_ERROR,
881 MpiEventDataSasSmpError_t, MPI_POINTER pMpiEventDataSasSmpError_t;
882
883
884#define MPI_EVENT_SAS_SMP_FUNCTION_RESULT_VALID (0x00)
885#define MPI_EVENT_SAS_SMP_CRC_ERROR (0x01)
886#define MPI_EVENT_SAS_SMP_TIMEOUT (0x02)
887#define MPI_EVENT_SAS_SMP_NO_DESTINATION (0x03)
888#define MPI_EVENT_SAS_SMP_BAD_DESTINATION (0x04)
889
890
891
892typedef struct _EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE
893{
894 U8 ReasonCode;
895 U8 Port;
896 U16 DevHandle;
897 U64 SASAddress;
898} EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE,
899 MPI_POINTER PTR_EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE,
900 MpiEventDataSasInitDevStatusChange_t,
901 MPI_POINTER pMpiEventDataSasInitDevStatusChange_t;
902
903
904#define MPI_EVENT_SAS_INIT_RC_ADDED (0x01)
905
906
907
908typedef struct _EVENT_DATA_SAS_INIT_TABLE_OVERFLOW
909{
910 U8 MaxInit;
911 U8 CurrentInit;
912 U16 Reserved1;
913} EVENT_DATA_SAS_INIT_TABLE_OVERFLOW,
914 MPI_POINTER PTR_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW,
915 MpiEventDataSasInitTableOverflow_t,
916 MPI_POINTER pMpiEventDataSasInitTableOverflow_t;
917
918
919
920typedef struct _EVENT_DATA_SAS_EXPANDER_STATUS_CHANGE
921{
922 U8 ReasonCode;
923 U8 Reserved1;
924 U16 Reserved2;
925 U8 PhysicalPort;
926 U8 Reserved3;
927 U16 EnclosureHandle;
928 U64 SASAddress;
929 U32 DiscoveryStatus;
930 U16 DevHandle;
931 U16 ParentDevHandle;
932 U16 ExpanderChangeCount;
933 U16 ExpanderRouteIndexes;
934 U8 NumPhys;
935 U8 SASLevel;
936 U8 Flags;
937 U8 Reserved4;
938} EVENT_DATA_SAS_EXPANDER_STATUS_CHANGE,
939 MPI_POINTER PTR_EVENT_DATA_SAS_EXPANDER_STATUS_CHANGE,
940 MpiEventDataSasExpanderStatusChange_t,
941 MPI_POINTER pMpiEventDataSasExpanderStatusChange_t;
942
943
944#define MPI_EVENT_SAS_EXP_RC_ADDED (0x00)
945#define MPI_EVENT_SAS_EXP_RC_NOT_RESPONDING (0x01)
946
947
948#define MPI_EVENT_SAS_EXP_DS_LOOP_DETECTED (0x00000001)
949#define MPI_EVENT_SAS_EXP_DS_UNADDRESSABLE_DEVICE (0x00000002)
950#define MPI_EVENT_SAS_EXP_DS_MULTIPLE_PORTS (0x00000004)
951#define MPI_EVENT_SAS_EXP_DS_EXPANDER_ERR (0x00000008)
952#define MPI_EVENT_SAS_EXP_DS_SMP_TIMEOUT (0x00000010)
953#define MPI_EVENT_SAS_EXP_DS_OUT_ROUTE_ENTRIES (0x00000020)
954#define MPI_EVENT_SAS_EXP_DS_INDEX_NOT_EXIST (0x00000040)
955#define MPI_EVENT_SAS_EXP_DS_SMP_FUNCTION_FAILED (0x00000080)
956#define MPI_EVENT_SAS_EXP_DS_SMP_CRC_ERROR (0x00000100)
957#define MPI_EVENT_SAS_EXP_DS_SUBTRACTIVE_LINK (0x00000200)
958#define MPI_EVENT_SAS_EXP_DS_TABLE_LINK (0x00000400)
959#define MPI_EVENT_SAS_EXP_DS_UNSUPPORTED_DEVICE (0x00000800)
960
961
962#define MPI_EVENT_SAS_EXP_FLAGS_ROUTE_TABLE_CONFIG (0x02)
963#define MPI_EVENT_SAS_EXP_FLAGS_CONFIG_IN_PROGRESS (0x01)
964
965
966
967
968
969
970
971
972
973
974
975
976
977typedef struct _MSG_FW_DOWNLOAD
978{
979 U8 ImageType;
980 U8 Reserved;
981 U8 ChainOffset;
982 U8 Function;
983 U8 Reserved1[3];
984 U8 MsgFlags;
985 U32 MsgContext;
986 SGE_MPI_UNION SGL;
987} MSG_FW_DOWNLOAD, MPI_POINTER PTR_MSG_FW_DOWNLOAD,
988 FWDownload_t, MPI_POINTER pFWDownload_t;
989
990#define MPI_FW_DOWNLOAD_MSGFLGS_LAST_SEGMENT (0x01)
991
992#define MPI_FW_DOWNLOAD_ITYPE_RESERVED (0x00)
993#define MPI_FW_DOWNLOAD_ITYPE_FW (0x01)
994#define MPI_FW_DOWNLOAD_ITYPE_BIOS (0x02)
995#define MPI_FW_DOWNLOAD_ITYPE_NVDATA (0x03)
996#define MPI_FW_DOWNLOAD_ITYPE_BOOTLOADER (0x04)
997#define MPI_FW_DOWNLOAD_ITYPE_MANUFACTURING (0x06)
998#define MPI_FW_DOWNLOAD_ITYPE_CONFIG_1 (0x07)
999#define MPI_FW_DOWNLOAD_ITYPE_CONFIG_2 (0x08)
1000#define MPI_FW_DOWNLOAD_ITYPE_MEGARAID (0x09)
1001#define MPI_FW_DOWNLOAD_ITYPE_COMMON_BOOT_BLOCK (0x0B)
1002
1003
1004typedef struct _FWDownloadTCSGE
1005{
1006 U8 Reserved;
1007 U8 ContextSize;
1008 U8 DetailsLength;
1009 U8 Flags;
1010 U32 Reserved_0100_Checksum;
1011 U32 ImageOffset;
1012 U32 ImageSize;
1013} FW_DOWNLOAD_TCSGE, MPI_POINTER PTR_FW_DOWNLOAD_TCSGE,
1014 FWDownloadTCSGE_t, MPI_POINTER pFWDownloadTCSGE_t;
1015
1016
1017typedef struct _MSG_FW_DOWNLOAD_REPLY
1018{
1019 U8 ImageType;
1020 U8 Reserved;
1021 U8 MsgLength;
1022 U8 Function;
1023 U8 Reserved1[3];
1024 U8 MsgFlags;
1025 U32 MsgContext;
1026 U16 Reserved2;
1027 U16 IOCStatus;
1028 U32 IOCLogInfo;
1029} MSG_FW_DOWNLOAD_REPLY, MPI_POINTER PTR_MSG_FW_DOWNLOAD_REPLY,
1030 FWDownloadReply_t, MPI_POINTER pFWDownloadReply_t;
1031
1032
1033
1034
1035
1036
1037typedef struct _MSG_FW_UPLOAD
1038{
1039 U8 ImageType;
1040 U8 Reserved;
1041 U8 ChainOffset;
1042 U8 Function;
1043 U8 Reserved1[3];
1044 U8 MsgFlags;
1045 U32 MsgContext;
1046 SGE_MPI_UNION SGL;
1047} MSG_FW_UPLOAD, MPI_POINTER PTR_MSG_FW_UPLOAD,
1048 FWUpload_t, MPI_POINTER pFWUpload_t;
1049
1050#define MPI_FW_UPLOAD_ITYPE_FW_IOC_MEM (0x00)
1051#define MPI_FW_UPLOAD_ITYPE_FW_FLASH (0x01)
1052#define MPI_FW_UPLOAD_ITYPE_BIOS_FLASH (0x02)
1053#define MPI_FW_UPLOAD_ITYPE_NVDATA (0x03)
1054#define MPI_FW_UPLOAD_ITYPE_BOOTLOADER (0x04)
1055#define MPI_FW_UPLOAD_ITYPE_FW_BACKUP (0x05)
1056#define MPI_FW_UPLOAD_ITYPE_MANUFACTURING (0x06)
1057#define MPI_FW_UPLOAD_ITYPE_CONFIG_1 (0x07)
1058#define MPI_FW_UPLOAD_ITYPE_CONFIG_2 (0x08)
1059#define MPI_FW_UPLOAD_ITYPE_MEGARAID (0x09)
1060#define MPI_FW_UPLOAD_ITYPE_COMPLETE (0x0A)
1061#define MPI_FW_UPLOAD_ITYPE_COMMON_BOOT_BLOCK (0x0B)
1062
1063typedef struct _FWUploadTCSGE
1064{
1065 U8 Reserved;
1066 U8 ContextSize;
1067 U8 DetailsLength;
1068 U8 Flags;
1069 U32 Reserved1;
1070 U32 ImageOffset;
1071 U32 ImageSize;
1072} FW_UPLOAD_TCSGE, MPI_POINTER PTR_FW_UPLOAD_TCSGE,
1073 FWUploadTCSGE_t, MPI_POINTER pFWUploadTCSGE_t;
1074
1075
1076typedef struct _MSG_FW_UPLOAD_REPLY
1077{
1078 U8 ImageType;
1079 U8 Reserved;
1080 U8 MsgLength;
1081 U8 Function;
1082 U8 Reserved1[3];
1083 U8 MsgFlags;
1084 U32 MsgContext;
1085 U16 Reserved2;
1086 U16 IOCStatus;
1087 U32 IOCLogInfo;
1088 U32 ActualImageSize;
1089} MSG_FW_UPLOAD_REPLY, MPI_POINTER PTR_MSG_FW_UPLOAD_REPLY,
1090 FWUploadReply_t, MPI_POINTER pFWUploadReply_t;
1091
1092
1093typedef struct _MPI_FW_HEADER
1094{
1095 U32 ArmBranchInstruction0;
1096 U32 Signature0;
1097 U32 Signature1;
1098 U32 Signature2;
1099 U32 ArmBranchInstruction1;
1100 U32 ArmBranchInstruction2;
1101 U32 Reserved;
1102 U32 Checksum;
1103 U16 VendorId;
1104 U16 ProductId;
1105 MPI_FW_VERSION FWVersion;
1106 U32 SeqCodeVersion;
1107 U32 ImageSize;
1108 U32 NextImageHeaderOffset;
1109 U32 LoadStartAddress;
1110 U32 IopResetVectorValue;
1111 U32 IopResetRegAddr;
1112 U32 VersionNameWhat;
1113 U8 VersionName[32];
1114 U32 VendorNameWhat;
1115 U8 VendorName[32];
1116} MPI_FW_HEADER, MPI_POINTER PTR_MPI_FW_HEADER,
1117 MpiFwHeader_t, MPI_POINTER pMpiFwHeader_t;
1118
1119#define MPI_FW_HEADER_WHAT_SIGNATURE (0x29232840)
1120
1121
1122#define MPI_FW_HEADER_PID_TYPE_MASK (0xF000)
1123#define MPI_FW_HEADER_PID_TYPE_SCSI (0x0000)
1124#define MPI_FW_HEADER_PID_TYPE_FC (0x1000)
1125#define MPI_FW_HEADER_PID_TYPE_SAS (0x2000)
1126
1127#define MPI_FW_HEADER_SIGNATURE_0 (0x5AEAA55A)
1128#define MPI_FW_HEADER_SIGNATURE_1 (0xA55AEAA5)
1129#define MPI_FW_HEADER_SIGNATURE_2 (0x5AA55AEA)
1130
1131#define MPI_FW_HEADER_PID_PROD_MASK (0x0F00)
1132#define MPI_FW_HEADER_PID_PROD_INITIATOR_SCSI (0x0100)
1133#define MPI_FW_HEADER_PID_PROD_TARGET_INITIATOR_SCSI (0x0200)
1134#define MPI_FW_HEADER_PID_PROD_TARGET_SCSI (0x0300)
1135#define MPI_FW_HEADER_PID_PROD_IM_SCSI (0x0400)
1136#define MPI_FW_HEADER_PID_PROD_IS_SCSI (0x0500)
1137#define MPI_FW_HEADER_PID_PROD_CTX_SCSI (0x0600)
1138#define MPI_FW_HEADER_PID_PROD_IR_SCSI (0x0700)
1139
1140#define MPI_FW_HEADER_PID_FAMILY_MASK (0x00FF)
1141
1142#define MPI_FW_HEADER_PID_FAMILY_1030A0_SCSI (0x0001)
1143#define MPI_FW_HEADER_PID_FAMILY_1030B0_SCSI (0x0002)
1144#define MPI_FW_HEADER_PID_FAMILY_1030B1_SCSI (0x0003)
1145#define MPI_FW_HEADER_PID_FAMILY_1030C0_SCSI (0x0004)
1146#define MPI_FW_HEADER_PID_FAMILY_1020A0_SCSI (0x0005)
1147#define MPI_FW_HEADER_PID_FAMILY_1020B0_SCSI (0x0006)
1148#define MPI_FW_HEADER_PID_FAMILY_1020B1_SCSI (0x0007)
1149#define MPI_FW_HEADER_PID_FAMILY_1020C0_SCSI (0x0008)
1150#define MPI_FW_HEADER_PID_FAMILY_1035A0_SCSI (0x0009)
1151#define MPI_FW_HEADER_PID_FAMILY_1035B0_SCSI (0x000A)
1152#define MPI_FW_HEADER_PID_FAMILY_1030TA0_SCSI (0x000B)
1153#define MPI_FW_HEADER_PID_FAMILY_1020TA0_SCSI (0x000C)
1154
1155#define MPI_FW_HEADER_PID_FAMILY_909_FC (0x0000)
1156#define MPI_FW_HEADER_PID_FAMILY_919_FC (0x0001)
1157#define MPI_FW_HEADER_PID_FAMILY_919X_FC (0x0002)
1158#define MPI_FW_HEADER_PID_FAMILY_919XL_FC (0x0003)
1159#define MPI_FW_HEADER_PID_FAMILY_939X_FC (0x0004)
1160#define MPI_FW_HEADER_PID_FAMILY_959_FC (0x0005)
1161#define MPI_FW_HEADER_PID_FAMILY_949E_FC (0x0006)
1162
1163#define MPI_FW_HEADER_PID_FAMILY_1064_SAS (0x0001)
1164#define MPI_FW_HEADER_PID_FAMILY_1068_SAS (0x0002)
1165#define MPI_FW_HEADER_PID_FAMILY_1078_SAS (0x0003)
1166#define MPI_FW_HEADER_PID_FAMILY_106xE_SAS (0x0004)
1167
1168typedef struct _MPI_EXT_IMAGE_HEADER
1169{
1170 U8 ImageType;
1171 U8 Reserved;
1172 U16 Reserved1;
1173 U32 Checksum;
1174 U32 ImageSize;
1175 U32 NextImageHeaderOffset;
1176 U32 LoadStartAddress;
1177 U32 Reserved2;
1178} MPI_EXT_IMAGE_HEADER, MPI_POINTER PTR_MPI_EXT_IMAGE_HEADER,
1179 MpiExtImageHeader_t, MPI_POINTER pMpiExtImageHeader_t;
1180
1181
1182#define MPI_EXT_IMAGE_TYPE_UNSPECIFIED (0x00)
1183#define MPI_EXT_IMAGE_TYPE_FW (0x01)
1184#define MPI_EXT_IMAGE_TYPE_NVDATA (0x03)
1185#define MPI_EXT_IMAGE_TYPE_BOOTLOADER (0x04)
1186#define MPI_EXT_IMAGE_TYPE_INITIALIZATION (0x05)
1187
1188#endif
1189