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
120
121
122
123
124
125
126
127
128
129
130
131
132#ifndef MPI2_IOC_H
133#define MPI2_IOC_H
134
135
136
137
138
139
140
141
142
143
144
145
146typedef struct _MPI2_IOC_INIT_REQUEST
147{
148 U8 WhoInit;
149 U8 Reserved1;
150 U8 ChainOffset;
151 U8 Function;
152 U16 Reserved2;
153 U8 Reserved3;
154 U8 MsgFlags;
155 U8 VP_ID;
156 U8 VF_ID;
157 U16 Reserved4;
158 U16 MsgVersion;
159 U16 HeaderVersion;
160 U32 Reserved5;
161 U16 Reserved6;
162 U8 Reserved7;
163 U8 HostMSIxVectors;
164 U16 Reserved8;
165 U16 SystemRequestFrameSize;
166 U16 ReplyDescriptorPostQueueDepth;
167 U16 ReplyFreeQueueDepth;
168 U32 SenseBufferAddressHigh;
169 U32 SystemReplyAddressHigh;
170 U64 SystemRequestFrameBaseAddress;
171 U64 ReplyDescriptorPostQueueAddress;
172 U64 ReplyFreeQueueAddress;
173 U64 TimeStamp;
174} MPI2_IOC_INIT_REQUEST, MPI2_POINTER PTR_MPI2_IOC_INIT_REQUEST,
175 Mpi2IOCInitRequest_t, MPI2_POINTER pMpi2IOCInitRequest_t;
176
177
178#define MPI2_WHOINIT_NOT_INITIALIZED (0x00)
179#define MPI2_WHOINIT_SYSTEM_BIOS (0x01)
180#define MPI2_WHOINIT_ROM_BIOS (0x02)
181#define MPI2_WHOINIT_PCI_PEER (0x03)
182#define MPI2_WHOINIT_HOST_DRIVER (0x04)
183#define MPI2_WHOINIT_MANUFACTURER (0x05)
184
185
186#define MPI2_IOCINIT_MSGFLAG_RDPQ_ARRAY_MODE (0x01)
187
188
189#define MPI2_IOCINIT_MSGVERSION_MAJOR_MASK (0xFF00)
190#define MPI2_IOCINIT_MSGVERSION_MAJOR_SHIFT (8)
191#define MPI2_IOCINIT_MSGVERSION_MINOR_MASK (0x00FF)
192#define MPI2_IOCINIT_MSGVERSION_MINOR_SHIFT (0)
193
194
195#define MPI2_IOCINIT_HDRVERSION_UNIT_MASK (0xFF00)
196#define MPI2_IOCINIT_HDRVERSION_UNIT_SHIFT (8)
197#define MPI2_IOCINIT_HDRVERSION_DEV_MASK (0x00FF)
198#define MPI2_IOCINIT_HDRVERSION_DEV_SHIFT (0)
199
200
201#define MPI2_RDPQ_DEPTH_MIN (16)
202
203
204typedef struct _MPI2_IOC_INIT_RDPQ_ARRAY_ENTRY {
205 U64 RDPQBaseAddress;
206 U32 Reserved1;
207 U32 Reserved2;
208} MPI2_IOC_INIT_RDPQ_ARRAY_ENTRY,
209MPI2_POINTER PTR_MPI2_IOC_INIT_RDPQ_ARRAY_ENTRY,
210Mpi2IOCInitRDPQArrayEntry, MPI2_POINTER pMpi2IOCInitRDPQArrayEntry;
211
212
213typedef struct _MPI2_IOC_INIT_REPLY
214{
215 U8 WhoInit;
216 U8 Reserved1;
217 U8 MsgLength;
218 U8 Function;
219 U16 Reserved2;
220 U8 Reserved3;
221 U8 MsgFlags;
222 U8 VP_ID;
223 U8 VF_ID;
224 U16 Reserved4;
225 U16 Reserved5;
226 U16 IOCStatus;
227 U32 IOCLogInfo;
228} MPI2_IOC_INIT_REPLY, MPI2_POINTER PTR_MPI2_IOC_INIT_REPLY,
229 Mpi2IOCInitReply_t, MPI2_POINTER pMpi2IOCInitReply_t;
230
231
232
233
234
235
236
237typedef struct _MPI2_IOC_FACTS_REQUEST
238{
239 U16 Reserved1;
240 U8 ChainOffset;
241 U8 Function;
242 U16 Reserved2;
243 U8 Reserved3;
244 U8 MsgFlags;
245 U8 VP_ID;
246 U8 VF_ID;
247 U16 Reserved4;
248} MPI2_IOC_FACTS_REQUEST, MPI2_POINTER PTR_MPI2_IOC_FACTS_REQUEST,
249 Mpi2IOCFactsRequest_t, MPI2_POINTER pMpi2IOCFactsRequest_t;
250
251
252
253typedef struct _MPI2_IOC_FACTS_REPLY
254{
255 U16 MsgVersion;
256 U8 MsgLength;
257 U8 Function;
258 U16 HeaderVersion;
259 U8 IOCNumber;
260 U8 MsgFlags;
261 U8 VP_ID;
262 U8 VF_ID;
263 U16 Reserved1;
264 U16 IOCExceptions;
265 U16 IOCStatus;
266 U32 IOCLogInfo;
267 U8 MaxChainDepth;
268 U8 WhoInit;
269 U8 NumberOfPorts;
270 U8 MaxMSIxVectors;
271 U16 RequestCredit;
272 U16 ProductID;
273 U32 IOCCapabilities;
274 MPI2_VERSION_UNION FWVersion;
275 U16 IOCRequestFrameSize;
276 U16 Reserved3;
277 U16 MaxInitiators;
278 U16 MaxTargets;
279 U16 MaxSasExpanders;
280 U16 MaxEnclosures;
281 U16 ProtocolFlags;
282 U16 HighPriorityCredit;
283 U16 MaxReplyDescriptorPostQueueDepth;
284 U8 ReplyFrameSize;
285 U8 MaxVolumes;
286 U16 MaxDevHandle;
287 U16 MaxPersistentEntries;
288 U16 MinDevHandle;
289 U16 Reserved4;
290} MPI2_IOC_FACTS_REPLY, MPI2_POINTER PTR_MPI2_IOC_FACTS_REPLY,
291 Mpi2IOCFactsReply_t, MPI2_POINTER pMpi2IOCFactsReply_t;
292
293
294#define MPI2_IOCFACTS_MSGVERSION_MAJOR_MASK (0xFF00)
295#define MPI2_IOCFACTS_MSGVERSION_MAJOR_SHIFT (8)
296#define MPI2_IOCFACTS_MSGVERSION_MINOR_MASK (0x00FF)
297#define MPI2_IOCFACTS_MSGVERSION_MINOR_SHIFT (0)
298
299
300#define MPI2_IOCFACTS_HDRVERSION_UNIT_MASK (0xFF00)
301#define MPI2_IOCFACTS_HDRVERSION_UNIT_SHIFT (8)
302#define MPI2_IOCFACTS_HDRVERSION_DEV_MASK (0x00FF)
303#define MPI2_IOCFACTS_HDRVERSION_DEV_SHIFT (0)
304
305
306#define MPI2_IOCFACTS_EXCEPT_PARTIAL_MEMORY_FAILURE (0x0200)
307#define MPI2_IOCFACTS_EXCEPT_IR_FOREIGN_CONFIG_MAX (0x0100)
308
309#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_MASK (0x00E0)
310#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_GOOD (0x0000)
311#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_BACKUP (0x0020)
312#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_RESTORED (0x0040)
313#define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_CORRUPT_BACKUP (0x0060)
314
315#define MPI2_IOCFACTS_EXCEPT_METADATA_UNSUPPORTED (0x0010)
316#define MPI2_IOCFACTS_EXCEPT_MANUFACT_CHECKSUM_FAIL (0x0008)
317#define MPI2_IOCFACTS_EXCEPT_FW_CHECKSUM_FAIL (0x0004)
318#define MPI2_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID (0x0002)
319#define MPI2_IOCFACTS_EXCEPT_CONFIG_CHECKSUM_FAIL (0x0001)
320
321
322
323
324
325
326#define MPI2_IOCFACTS_CAPABILITY_RDPQ_ARRAY_CAPABLE (0x00040000)
327#define MPI2_IOCFACTS_CAPABILITY_HOST_BASED_DISCOVERY (0x00010000)
328#define MPI2_IOCFACTS_CAPABILITY_MSI_X_INDEX (0x00008000)
329#define MPI2_IOCFACTS_CAPABILITY_RAID_ACCELERATOR (0x00004000)
330#define MPI2_IOCFACTS_CAPABILITY_EVENT_REPLAY (0x00002000)
331#define MPI2_IOCFACTS_CAPABILITY_INTEGRATED_RAID (0x00001000)
332#define MPI2_IOCFACTS_CAPABILITY_TLR (0x00000800)
333#define MPI2_IOCFACTS_CAPABILITY_MULTICAST (0x00000100)
334#define MPI2_IOCFACTS_CAPABILITY_BIDIRECTIONAL_TARGET (0x00000080)
335#define MPI2_IOCFACTS_CAPABILITY_EEDP (0x00000040)
336#define MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER (0x00000020)
337#define MPI2_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER (0x00000010)
338#define MPI2_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER (0x00000008)
339#define MPI2_IOCFACTS_CAPABILITY_TASK_SET_FULL_HANDLING (0x00000004)
340
341
342#define MPI2_IOCFACTS_PROTOCOL_SCSI_TARGET (0x0001)
343#define MPI2_IOCFACTS_PROTOCOL_SCSI_INITIATOR (0x0002)
344
345
346
347
348
349
350
351typedef struct _MPI2_PORT_FACTS_REQUEST
352{
353 U16 Reserved1;
354 U8 ChainOffset;
355 U8 Function;
356 U16 Reserved2;
357 U8 PortNumber;
358 U8 MsgFlags;
359 U8 VP_ID;
360 U8 VF_ID;
361 U16 Reserved3;
362} MPI2_PORT_FACTS_REQUEST, MPI2_POINTER PTR_MPI2_PORT_FACTS_REQUEST,
363 Mpi2PortFactsRequest_t, MPI2_POINTER pMpi2PortFactsRequest_t;
364
365
366typedef struct _MPI2_PORT_FACTS_REPLY
367{
368 U16 Reserved1;
369 U8 MsgLength;
370 U8 Function;
371 U16 Reserved2;
372 U8 PortNumber;
373 U8 MsgFlags;
374 U8 VP_ID;
375 U8 VF_ID;
376 U16 Reserved3;
377 U16 Reserved4;
378 U16 IOCStatus;
379 U32 IOCLogInfo;
380 U8 Reserved5;
381 U8 PortType;
382 U16 Reserved6;
383 U16 MaxPostedCmdBuffers;
384 U16 Reserved7;
385} MPI2_PORT_FACTS_REPLY, MPI2_POINTER PTR_MPI2_PORT_FACTS_REPLY,
386 Mpi2PortFactsReply_t, MPI2_POINTER pMpi2PortFactsReply_t;
387
388
389#define MPI2_PORTFACTS_PORTTYPE_INACTIVE (0x00)
390#define MPI2_PORTFACTS_PORTTYPE_FC (0x10)
391#define MPI2_PORTFACTS_PORTTYPE_ISCSI (0x20)
392#define MPI2_PORTFACTS_PORTTYPE_SAS_PHYSICAL (0x30)
393#define MPI2_PORTFACTS_PORTTYPE_SAS_VIRTUAL (0x31)
394
395
396
397
398
399
400
401typedef struct _MPI2_PORT_ENABLE_REQUEST
402{
403 U16 Reserved1;
404 U8 ChainOffset;
405 U8 Function;
406 U8 Reserved2;
407 U8 PortFlags;
408 U8 Reserved3;
409 U8 MsgFlags;
410 U8 VP_ID;
411 U8 VF_ID;
412 U16 Reserved4;
413} MPI2_PORT_ENABLE_REQUEST, MPI2_POINTER PTR_MPI2_PORT_ENABLE_REQUEST,
414 Mpi2PortEnableRequest_t, MPI2_POINTER pMpi2PortEnableRequest_t;
415
416
417
418typedef struct _MPI2_PORT_ENABLE_REPLY
419{
420 U16 Reserved1;
421 U8 MsgLength;
422 U8 Function;
423 U8 Reserved2;
424 U8 PortFlags;
425 U8 Reserved3;
426 U8 MsgFlags;
427 U8 VP_ID;
428 U8 VF_ID;
429 U16 Reserved4;
430 U16 Reserved5;
431 U16 IOCStatus;
432 U32 IOCLogInfo;
433} MPI2_PORT_ENABLE_REPLY, MPI2_POINTER PTR_MPI2_PORT_ENABLE_REPLY,
434 Mpi2PortEnableReply_t, MPI2_POINTER pMpi2PortEnableReply_t;
435
436
437
438
439
440
441
442#define MPI2_EVENT_NOTIFY_EVENTMASK_WORDS (4)
443
444typedef struct _MPI2_EVENT_NOTIFICATION_REQUEST
445{
446 U16 Reserved1;
447 U8 ChainOffset;
448 U8 Function;
449 U16 Reserved2;
450 U8 Reserved3;
451 U8 MsgFlags;
452 U8 VP_ID;
453 U8 VF_ID;
454 U16 Reserved4;
455 U32 Reserved5;
456 U32 Reserved6;
457 U32 EventMasks[MPI2_EVENT_NOTIFY_EVENTMASK_WORDS];
458 U16 SASBroadcastPrimitiveMasks;
459 U16 SASNotifyPrimitiveMasks;
460 U32 Reserved8;
461} MPI2_EVENT_NOTIFICATION_REQUEST,
462 MPI2_POINTER PTR_MPI2_EVENT_NOTIFICATION_REQUEST,
463 Mpi2EventNotificationRequest_t, MPI2_POINTER pMpi2EventNotificationRequest_t;
464
465
466
467typedef struct _MPI2_EVENT_NOTIFICATION_REPLY
468{
469 U16 EventDataLength;
470 U8 MsgLength;
471 U8 Function;
472 U16 Reserved1;
473 U8 AckRequired;
474 U8 MsgFlags;
475 U8 VP_ID;
476 U8 VF_ID;
477 U16 Reserved2;
478 U16 Reserved3;
479 U16 IOCStatus;
480 U32 IOCLogInfo;
481 U16 Event;
482 U16 Reserved4;
483 U32 EventContext;
484 U32 EventData[1];
485} MPI2_EVENT_NOTIFICATION_REPLY, MPI2_POINTER PTR_MPI2_EVENT_NOTIFICATION_REPLY,
486 Mpi2EventNotificationReply_t, MPI2_POINTER pMpi2EventNotificationReply_t;
487
488
489#define MPI2_EVENT_NOTIFICATION_ACK_NOT_REQUIRED (0x00)
490#define MPI2_EVENT_NOTIFICATION_ACK_REQUIRED (0x01)
491
492
493#define MPI2_EVENT_LOG_DATA (0x0001)
494#define MPI2_EVENT_STATE_CHANGE (0x0002)
495#define MPI2_EVENT_HARD_RESET_RECEIVED (0x0005)
496#define MPI2_EVENT_EVENT_CHANGE (0x000A)
497#define MPI2_EVENT_TASK_SET_FULL (0x000E)
498#define MPI2_EVENT_SAS_DEVICE_STATUS_CHANGE (0x000F)
499#define MPI2_EVENT_IR_OPERATION_STATUS (0x0014)
500#define MPI2_EVENT_SAS_DISCOVERY (0x0016)
501#define MPI2_EVENT_SAS_BROADCAST_PRIMITIVE (0x0017)
502#define MPI2_EVENT_SAS_INIT_DEVICE_STATUS_CHANGE (0x0018)
503#define MPI2_EVENT_SAS_INIT_TABLE_OVERFLOW (0x0019)
504#define MPI2_EVENT_SAS_TOPOLOGY_CHANGE_LIST (0x001C)
505#define MPI2_EVENT_SAS_ENCL_DEVICE_STATUS_CHANGE (0x001D)
506#define MPI2_EVENT_IR_VOLUME (0x001E)
507#define MPI2_EVENT_IR_PHYSICAL_DISK (0x001F)
508#define MPI2_EVENT_IR_CONFIGURATION_CHANGE_LIST (0x0020)
509#define MPI2_EVENT_LOG_ENTRY_ADDED (0x0021)
510#define MPI2_EVENT_SAS_PHY_COUNTER (0x0022)
511#define MPI2_EVENT_GPIO_INTERRUPT (0x0023)
512#define MPI2_EVENT_HOST_BASED_DISCOVERY_PHY (0x0024)
513#define MPI2_EVENT_SAS_QUIESCE (0x0025)
514#define MPI2_EVENT_SAS_NOTIFY_PRIMITIVE (0x0026)
515#define MPI2_EVENT_TEMP_THRESHOLD (0x0027)
516#define MPI2_EVENT_HOST_MESSAGE (0x0028)
517#define MPI2_EVENT_MIN_PRODUCT_SPECIFIC (0x006E)
518#define MPI2_EVENT_MAX_PRODUCT_SPECIFIC (0x007F)
519
520
521
522
523#define MPI2_EVENT_DATA_LOG_DATA_LENGTH (0x1C)
524
525typedef struct _MPI2_EVENT_DATA_LOG_ENTRY_ADDED
526{
527 U64 TimeStamp;
528 U32 Reserved1;
529 U16 LogSequence;
530 U16 LogEntryQualifier;
531 U8 VP_ID;
532 U8 VF_ID;
533 U16 Reserved2;
534 U8 LogData[MPI2_EVENT_DATA_LOG_DATA_LENGTH];
535} MPI2_EVENT_DATA_LOG_ENTRY_ADDED,
536 MPI2_POINTER PTR_MPI2_EVENT_DATA_LOG_ENTRY_ADDED,
537 Mpi2EventDataLogEntryAdded_t, MPI2_POINTER pMpi2EventDataLogEntryAdded_t;
538
539
540
541typedef struct _MPI2_EVENT_DATA_GPIO_INTERRUPT {
542 U8 GPIONum;
543 U8 Reserved1;
544 U16 Reserved2;
545} MPI2_EVENT_DATA_GPIO_INTERRUPT,
546 MPI2_POINTER PTR_MPI2_EVENT_DATA_GPIO_INTERRUPT,
547 Mpi2EventDataGpioInterrupt_t, MPI2_POINTER pMpi2EventDataGpioInterrupt_t;
548
549
550
551typedef struct _MPI2_EVENT_DATA_TEMPERATURE {
552 U16 Status;
553 U8 SensorNum;
554 U8 Reserved1;
555 U16 CurrentTemperature;
556 U16 Reserved2;
557 U32 Reserved3;
558 U32 Reserved4;
559} MPI2_EVENT_DATA_TEMPERATURE,
560MPI2_POINTER PTR_MPI2_EVENT_DATA_TEMPERATURE,
561Mpi2EventDataTemperature_t, MPI2_POINTER pMpi2EventDataTemperature_t;
562
563
564#define MPI2_EVENT_TEMPERATURE3_EXCEEDED (0x0008)
565#define MPI2_EVENT_TEMPERATURE2_EXCEEDED (0x0004)
566#define MPI2_EVENT_TEMPERATURE1_EXCEEDED (0x0002)
567#define MPI2_EVENT_TEMPERATURE0_EXCEEDED (0x0001)
568
569
570
571
572typedef struct _MPI2_EVENT_DATA_HOST_MESSAGE {
573 U8 SourceVF_ID;
574 U8 Reserved1;
575 U16 Reserved2;
576 U32 Reserved3;
577 U32 HostData[1];
578} MPI2_EVENT_DATA_HOST_MESSAGE, MPI2_POINTER PTR_MPI2_EVENT_DATA_HOST_MESSAGE,
579Mpi2EventDataHostMessage_t, MPI2_POINTER pMpi2EventDataHostMessage_t;
580
581
582
583
584typedef struct _MPI2_EVENT_DATA_HARD_RESET_RECEIVED
585{
586 U8 Reserved1;
587 U8 Port;
588 U16 Reserved2;
589} MPI2_EVENT_DATA_HARD_RESET_RECEIVED,
590 MPI2_POINTER PTR_MPI2_EVENT_DATA_HARD_RESET_RECEIVED,
591 Mpi2EventDataHardResetReceived_t,
592 MPI2_POINTER pMpi2EventDataHardResetReceived_t;
593
594
595
596
597typedef struct _MPI2_EVENT_DATA_TASK_SET_FULL
598{
599 U16 DevHandle;
600 U16 CurrentDepth;
601} MPI2_EVENT_DATA_TASK_SET_FULL, MPI2_POINTER PTR_MPI2_EVENT_DATA_TASK_SET_FULL,
602 Mpi2EventDataTaskSetFull_t, MPI2_POINTER pMpi2EventDataTaskSetFull_t;
603
604
605
606
607typedef struct _MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE
608{
609 U16 TaskTag;
610 U8 ReasonCode;
611 U8 PhysicalPort;
612 U8 ASC;
613 U8 ASCQ;
614 U16 DevHandle;
615 U32 Reserved2;
616 U64 SASAddress;
617 U8 LUN[8];
618} MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
619 MPI2_POINTER PTR_MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
620 Mpi2EventDataSasDeviceStatusChange_t,
621 MPI2_POINTER pMpi2EventDataSasDeviceStatusChange_t;
622
623
624#define MPI2_EVENT_SAS_DEV_STAT_RC_SMART_DATA (0x05)
625#define MPI2_EVENT_SAS_DEV_STAT_RC_UNSUPPORTED (0x07)
626#define MPI2_EVENT_SAS_DEV_STAT_RC_INTERNAL_DEVICE_RESET (0x08)
627#define MPI2_EVENT_SAS_DEV_STAT_RC_TASK_ABORT_INTERNAL (0x09)
628#define MPI2_EVENT_SAS_DEV_STAT_RC_ABORT_TASK_SET_INTERNAL (0x0A)
629#define MPI2_EVENT_SAS_DEV_STAT_RC_CLEAR_TASK_SET_INTERNAL (0x0B)
630#define MPI2_EVENT_SAS_DEV_STAT_RC_QUERY_TASK_INTERNAL (0x0C)
631#define MPI2_EVENT_SAS_DEV_STAT_RC_ASYNC_NOTIFICATION (0x0D)
632#define MPI2_EVENT_SAS_DEV_STAT_RC_CMP_INTERNAL_DEV_RESET (0x0E)
633#define MPI2_EVENT_SAS_DEV_STAT_RC_CMP_TASK_ABORT_INTERNAL (0x0F)
634#define MPI2_EVENT_SAS_DEV_STAT_RC_SATA_INIT_FAILURE (0x10)
635#define MPI2_EVENT_SAS_DEV_STAT_RC_EXPANDER_REDUCED_FUNCTIONALITY (0x11)
636#define MPI2_EVENT_SAS_DEV_STAT_RC_CMP_EXPANDER_REDUCED_FUNCTIONALITY (0x12)
637
638
639
640
641typedef struct _MPI2_EVENT_DATA_IR_OPERATION_STATUS
642{
643 U16 VolDevHandle;
644 U16 Reserved1;
645 U8 RAIDOperation;
646 U8 PercentComplete;
647 U16 Reserved2;
648 U32 ElapsedSeconds;
649} MPI2_EVENT_DATA_IR_OPERATION_STATUS,
650 MPI2_POINTER PTR_MPI2_EVENT_DATA_IR_OPERATION_STATUS,
651 Mpi2EventDataIrOperationStatus_t,
652 MPI2_POINTER pMpi2EventDataIrOperationStatus_t;
653
654
655#define MPI2_EVENT_IR_RAIDOP_RESYNC (0x00)
656#define MPI2_EVENT_IR_RAIDOP_ONLINE_CAP_EXPANSION (0x01)
657#define MPI2_EVENT_IR_RAIDOP_CONSISTENCY_CHECK (0x02)
658#define MPI2_EVENT_IR_RAIDOP_BACKGROUND_INIT (0x03)
659#define MPI2_EVENT_IR_RAIDOP_MAKE_DATA_CONSISTENT (0x04)
660
661
662
663
664typedef struct _MPI2_EVENT_DATA_IR_VOLUME
665{
666 U16 VolDevHandle;
667 U8 ReasonCode;
668 U8 Reserved1;
669 U32 NewValue;
670 U32 PreviousValue;
671} MPI2_EVENT_DATA_IR_VOLUME, MPI2_POINTER PTR_MPI2_EVENT_DATA_IR_VOLUME,
672 Mpi2EventDataIrVolume_t, MPI2_POINTER pMpi2EventDataIrVolume_t;
673
674
675#define MPI2_EVENT_IR_VOLUME_RC_SETTINGS_CHANGED (0x01)
676#define MPI2_EVENT_IR_VOLUME_RC_STATUS_FLAGS_CHANGED (0x02)
677#define MPI2_EVENT_IR_VOLUME_RC_STATE_CHANGED (0x03)
678
679
680
681
682typedef struct _MPI2_EVENT_DATA_IR_PHYSICAL_DISK
683{
684 U16 Reserved1;
685 U8 ReasonCode;
686 U8 PhysDiskNum;
687 U16 PhysDiskDevHandle;
688 U16 Reserved2;
689 U16 Slot;
690 U16 EnclosureHandle;
691 U32 NewValue;
692 U32 PreviousValue;
693} MPI2_EVENT_DATA_IR_PHYSICAL_DISK,
694 MPI2_POINTER PTR_MPI2_EVENT_DATA_IR_PHYSICAL_DISK,
695 Mpi2EventDataIrPhysicalDisk_t, MPI2_POINTER pMpi2EventDataIrPhysicalDisk_t;
696
697
698#define MPI2_EVENT_IR_PHYSDISK_RC_SETTINGS_CHANGED (0x01)
699#define MPI2_EVENT_IR_PHYSDISK_RC_STATUS_FLAGS_CHANGED (0x02)
700#define MPI2_EVENT_IR_PHYSDISK_RC_STATE_CHANGED (0x03)
701
702
703
704
705
706
707
708
709#ifndef MPI2_EVENT_IR_CONFIG_ELEMENT_COUNT
710#define MPI2_EVENT_IR_CONFIG_ELEMENT_COUNT (1)
711#endif
712
713typedef struct _MPI2_EVENT_IR_CONFIG_ELEMENT
714{
715 U16 ElementFlags;
716 U16 VolDevHandle;
717 U8 ReasonCode;
718 U8 PhysDiskNum;
719 U16 PhysDiskDevHandle;
720} MPI2_EVENT_IR_CONFIG_ELEMENT, MPI2_POINTER PTR_MPI2_EVENT_IR_CONFIG_ELEMENT,
721 Mpi2EventIrConfigElement_t, MPI2_POINTER pMpi2EventIrConfigElement_t;
722
723
724#define MPI2_EVENT_IR_CHANGE_EFLAGS_ELEMENT_TYPE_MASK (0x000F)
725#define MPI2_EVENT_IR_CHANGE_EFLAGS_VOLUME_ELEMENT (0x0000)
726#define MPI2_EVENT_IR_CHANGE_EFLAGS_VOLPHYSDISK_ELEMENT (0x0001)
727#define MPI2_EVENT_IR_CHANGE_EFLAGS_HOTSPARE_ELEMENT (0x0002)
728
729
730#define MPI2_EVENT_IR_CHANGE_RC_ADDED (0x01)
731#define MPI2_EVENT_IR_CHANGE_RC_REMOVED (0x02)
732#define MPI2_EVENT_IR_CHANGE_RC_NO_CHANGE (0x03)
733#define MPI2_EVENT_IR_CHANGE_RC_HIDE (0x04)
734#define MPI2_EVENT_IR_CHANGE_RC_UNHIDE (0x05)
735#define MPI2_EVENT_IR_CHANGE_RC_VOLUME_CREATED (0x06)
736#define MPI2_EVENT_IR_CHANGE_RC_VOLUME_DELETED (0x07)
737#define MPI2_EVENT_IR_CHANGE_RC_PD_CREATED (0x08)
738#define MPI2_EVENT_IR_CHANGE_RC_PD_DELETED (0x09)
739
740typedef struct _MPI2_EVENT_DATA_IR_CONFIG_CHANGE_LIST
741{
742 U8 NumElements;
743 U8 Reserved1;
744 U8 Reserved2;
745 U8 ConfigNum;
746 U32 Flags;
747 MPI2_EVENT_IR_CONFIG_ELEMENT ConfigElement[MPI2_EVENT_IR_CONFIG_ELEMENT_COUNT];
748} MPI2_EVENT_DATA_IR_CONFIG_CHANGE_LIST,
749 MPI2_POINTER PTR_MPI2_EVENT_DATA_IR_CONFIG_CHANGE_LIST,
750 Mpi2EventDataIrConfigChangeList_t,
751 MPI2_POINTER pMpi2EventDataIrConfigChangeList_t;
752
753
754#define MPI2_EVENT_IR_CHANGE_FLAGS_FOREIGN_CONFIG (0x00000001)
755
756
757
758
759typedef struct _MPI2_EVENT_DATA_SAS_DISCOVERY
760{
761 U8 Flags;
762 U8 ReasonCode;
763 U8 PhysicalPort;
764 U8 Reserved1;
765 U32 DiscoveryStatus;
766} MPI2_EVENT_DATA_SAS_DISCOVERY,
767 MPI2_POINTER PTR_MPI2_EVENT_DATA_SAS_DISCOVERY,
768 Mpi2EventDataSasDiscovery_t, MPI2_POINTER pMpi2EventDataSasDiscovery_t;
769
770
771#define MPI2_EVENT_SAS_DISC_DEVICE_CHANGE (0x02)
772#define MPI2_EVENT_SAS_DISC_IN_PROGRESS (0x01)
773
774
775#define MPI2_EVENT_SAS_DISC_RC_STARTED (0x01)
776#define MPI2_EVENT_SAS_DISC_RC_COMPLETED (0x02)
777
778
779#define MPI2_EVENT_SAS_DISC_DS_MAX_ENCLOSURES_EXCEED (0x80000000)
780#define MPI2_EVENT_SAS_DISC_DS_MAX_EXPANDERS_EXCEED (0x40000000)
781#define MPI2_EVENT_SAS_DISC_DS_MAX_DEVICES_EXCEED (0x20000000)
782#define MPI2_EVENT_SAS_DISC_DS_MAX_TOPO_PHYS_EXCEED (0x10000000)
783#define MPI2_EVENT_SAS_DISC_DS_DOWNSTREAM_INITIATOR (0x08000000)
784#define MPI2_EVENT_SAS_DISC_DS_MULTI_SUBTRACTIVE_SUBTRACTIVE (0x00008000)
785#define MPI2_EVENT_SAS_DISC_DS_EXP_MULTI_SUBTRACTIVE (0x00004000)
786#define MPI2_EVENT_SAS_DISC_DS_MULTI_PORT_DOMAIN (0x00002000)
787#define MPI2_EVENT_SAS_DISC_DS_TABLE_TO_SUBTRACTIVE_LINK (0x00001000)
788#define MPI2_EVENT_SAS_DISC_DS_UNSUPPORTED_DEVICE (0x00000800)
789#define MPI2_EVENT_SAS_DISC_DS_TABLE_LINK (0x00000400)
790#define MPI2_EVENT_SAS_DISC_DS_SUBTRACTIVE_LINK (0x00000200)
791#define MPI2_EVENT_SAS_DISC_DS_SMP_CRC_ERROR (0x00000100)
792#define MPI2_EVENT_SAS_DISC_DS_SMP_FUNCTION_FAILED (0x00000080)
793#define MPI2_EVENT_SAS_DISC_DS_INDEX_NOT_EXIST (0x00000040)
794#define MPI2_EVENT_SAS_DISC_DS_OUT_ROUTE_ENTRIES (0x00000020)
795#define MPI2_EVENT_SAS_DISC_DS_SMP_TIMEOUT (0x00000010)
796#define MPI2_EVENT_SAS_DISC_DS_MULTIPLE_PORTS (0x00000004)
797#define MPI2_EVENT_SAS_DISC_DS_UNADDRESSABLE_DEVICE (0x00000002)
798#define MPI2_EVENT_SAS_DISC_DS_LOOP_DETECTED (0x00000001)
799
800
801
802
803typedef struct _MPI2_EVENT_DATA_SAS_BROADCAST_PRIMITIVE
804{
805 U8 PhyNum;
806 U8 Port;
807 U8 PortWidth;
808 U8 Primitive;
809} MPI2_EVENT_DATA_SAS_BROADCAST_PRIMITIVE,
810 MPI2_POINTER PTR_MPI2_EVENT_DATA_SAS_BROADCAST_PRIMITIVE,
811 Mpi2EventDataSasBroadcastPrimitive_t,
812 MPI2_POINTER pMpi2EventDataSasBroadcastPrimitive_t;
813
814
815#define MPI2_EVENT_PRIMITIVE_CHANGE (0x01)
816#define MPI2_EVENT_PRIMITIVE_SES (0x02)
817#define MPI2_EVENT_PRIMITIVE_EXPANDER (0x03)
818#define MPI2_EVENT_PRIMITIVE_ASYNCHRONOUS_EVENT (0x04)
819#define MPI2_EVENT_PRIMITIVE_RESERVED3 (0x05)
820#define MPI2_EVENT_PRIMITIVE_RESERVED4 (0x06)
821#define MPI2_EVENT_PRIMITIVE_CHANGE0_RESERVED (0x07)
822#define MPI2_EVENT_PRIMITIVE_CHANGE1_RESERVED (0x08)
823
824
825
826typedef struct _MPI2_EVENT_DATA_SAS_NOTIFY_PRIMITIVE {
827 U8 PhyNum;
828 U8 Port;
829 U8 Reserved1;
830 U8 Primitive;
831} MPI2_EVENT_DATA_SAS_NOTIFY_PRIMITIVE,
832MPI2_POINTER PTR_MPI2_EVENT_DATA_SAS_NOTIFY_PRIMITIVE,
833Mpi2EventDataSasNotifyPrimitive_t,
834MPI2_POINTER pMpi2EventDataSasNotifyPrimitive_t;
835
836
837#define MPI2_EVENT_NOTIFY_ENABLE_SPINUP (0x01)
838#define MPI2_EVENT_NOTIFY_POWER_LOSS_EXPECTED (0x02)
839#define MPI2_EVENT_NOTIFY_RESERVED1 (0x03)
840#define MPI2_EVENT_NOTIFY_RESERVED2 (0x04)
841
842
843
844
845typedef struct _MPI2_EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE
846{
847 U8 ReasonCode;
848 U8 PhysicalPort;
849 U16 DevHandle;
850 U64 SASAddress;
851} MPI2_EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE,
852 MPI2_POINTER PTR_MPI2_EVENT_DATA_SAS_INIT_DEV_STATUS_CHANGE,
853 Mpi2EventDataSasInitDevStatusChange_t,
854 MPI2_POINTER pMpi2EventDataSasInitDevStatusChange_t;
855
856
857#define MPI2_EVENT_SAS_INIT_RC_ADDED (0x01)
858#define MPI2_EVENT_SAS_INIT_RC_NOT_RESPONDING (0x02)
859
860
861
862
863typedef struct _MPI2_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW
864{
865 U16 MaxInit;
866 U16 CurrentInit;
867 U64 SASAddress;
868} MPI2_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW,
869 MPI2_POINTER PTR_MPI2_EVENT_DATA_SAS_INIT_TABLE_OVERFLOW,
870 Mpi2EventDataSasInitTableOverflow_t,
871 MPI2_POINTER pMpi2EventDataSasInitTableOverflow_t;
872
873
874
875
876
877
878
879
880#ifndef MPI2_EVENT_SAS_TOPO_PHY_COUNT
881#define MPI2_EVENT_SAS_TOPO_PHY_COUNT (1)
882#endif
883
884typedef struct _MPI2_EVENT_SAS_TOPO_PHY_ENTRY
885{
886 U16 AttachedDevHandle;
887 U8 LinkRate;
888 U8 PhyStatus;
889} MPI2_EVENT_SAS_TOPO_PHY_ENTRY, MPI2_POINTER PTR_MPI2_EVENT_SAS_TOPO_PHY_ENTRY,
890 Mpi2EventSasTopoPhyEntry_t, MPI2_POINTER pMpi2EventSasTopoPhyEntry_t;
891
892typedef struct _MPI2_EVENT_DATA_SAS_TOPOLOGY_CHANGE_LIST
893{
894 U16 EnclosureHandle;
895 U16 ExpanderDevHandle;
896 U8 NumPhys;
897 U8 Reserved1;
898 U16 Reserved2;
899 U8 NumEntries;
900 U8 StartPhyNum;
901 U8 ExpStatus;
902 U8 PhysicalPort;
903 MPI2_EVENT_SAS_TOPO_PHY_ENTRY PHY[MPI2_EVENT_SAS_TOPO_PHY_COUNT];
904} MPI2_EVENT_DATA_SAS_TOPOLOGY_CHANGE_LIST,
905 MPI2_POINTER PTR_MPI2_EVENT_DATA_SAS_TOPOLOGY_CHANGE_LIST,
906 Mpi2EventDataSasTopologyChangeList_t,
907 MPI2_POINTER pMpi2EventDataSasTopologyChangeList_t;
908
909
910#define MPI2_EVENT_SAS_TOPO_ES_NO_EXPANDER (0x00)
911#define MPI2_EVENT_SAS_TOPO_ES_ADDED (0x01)
912#define MPI2_EVENT_SAS_TOPO_ES_NOT_RESPONDING (0x02)
913#define MPI2_EVENT_SAS_TOPO_ES_RESPONDING (0x03)
914#define MPI2_EVENT_SAS_TOPO_ES_DELAY_NOT_RESPONDING (0x04)
915
916
917#define MPI2_EVENT_SAS_TOPO_LR_CURRENT_MASK (0xF0)
918#define MPI2_EVENT_SAS_TOPO_LR_CURRENT_SHIFT (4)
919#define MPI2_EVENT_SAS_TOPO_LR_PREV_MASK (0x0F)
920#define MPI2_EVENT_SAS_TOPO_LR_PREV_SHIFT (0)
921
922#define MPI2_EVENT_SAS_TOPO_LR_UNKNOWN_LINK_RATE (0x00)
923#define MPI2_EVENT_SAS_TOPO_LR_PHY_DISABLED (0x01)
924#define MPI2_EVENT_SAS_TOPO_LR_NEGOTIATION_FAILED (0x02)
925#define MPI2_EVENT_SAS_TOPO_LR_SATA_OOB_COMPLETE (0x03)
926#define MPI2_EVENT_SAS_TOPO_LR_PORT_SELECTOR (0x04)
927#define MPI2_EVENT_SAS_TOPO_LR_SMP_RESET_IN_PROGRESS (0x05)
928#define MPI2_EVENT_SAS_TOPO_LR_UNSUPPORTED_PHY (0x06)
929#define MPI2_EVENT_SAS_TOPO_LR_RATE_1_5 (0x08)
930#define MPI2_EVENT_SAS_TOPO_LR_RATE_3_0 (0x09)
931#define MPI2_EVENT_SAS_TOPO_LR_RATE_6_0 (0x0A)
932
933
934#define MPI2_EVENT_SAS_TOPO_PHYSTATUS_VACANT (0x80)
935#define MPI2_EVENT_SAS_TOPO_PS_MULTIPLEX_CHANGE (0x10)
936
937#define MPI2_EVENT_SAS_TOPO_RC_MASK (0x0F)
938#define MPI2_EVENT_SAS_TOPO_RC_TARG_ADDED (0x01)
939#define MPI2_EVENT_SAS_TOPO_RC_TARG_NOT_RESPONDING (0x02)
940#define MPI2_EVENT_SAS_TOPO_RC_PHY_CHANGED (0x03)
941#define MPI2_EVENT_SAS_TOPO_RC_NO_CHANGE (0x04)
942#define MPI2_EVENT_SAS_TOPO_RC_DELAY_NOT_RESPONDING (0x05)
943
944
945
946
947typedef struct _MPI2_EVENT_DATA_SAS_ENCL_DEV_STATUS_CHANGE
948{
949 U16 EnclosureHandle;
950 U8 ReasonCode;
951 U8 PhysicalPort;
952 U64 EnclosureLogicalID;
953 U16 NumSlots;
954 U16 StartSlot;
955 U32 PhyBits;
956} MPI2_EVENT_DATA_SAS_ENCL_DEV_STATUS_CHANGE,
957 MPI2_POINTER PTR_MPI2_EVENT_DATA_SAS_ENCL_DEV_STATUS_CHANGE,
958 Mpi2EventDataSasEnclDevStatusChange_t,
959 MPI2_POINTER pMpi2EventDataSasEnclDevStatusChange_t;
960
961
962#define MPI2_EVENT_SAS_ENCL_RC_ADDED (0x01)
963#define MPI2_EVENT_SAS_ENCL_RC_NOT_RESPONDING (0x02)
964
965
966
967
968typedef struct _MPI2_EVENT_DATA_SAS_PHY_COUNTER {
969 U64 TimeStamp;
970 U32 Reserved1;
971 U8 PhyEventCode;
972 U8 PhyNum;
973 U16 Reserved2;
974 U32 PhyEventInfo;
975 U8 CounterType;
976 U8 ThresholdWindow;
977 U8 TimeUnits;
978 U8 Reserved3;
979 U32 EventThreshold;
980 U16 ThresholdFlags;
981 U16 Reserved4;
982} MPI2_EVENT_DATA_SAS_PHY_COUNTER,
983 MPI2_POINTER PTR_MPI2_EVENT_DATA_SAS_PHY_COUNTER,
984 Mpi2EventDataSasPhyCounter_t, MPI2_POINTER pMpi2EventDataSasPhyCounter_t;
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999typedef struct _MPI2_EVENT_DATA_SAS_QUIESCE {
1000 U8 ReasonCode;
1001 U8 Reserved1;
1002 U16 Reserved2;
1003 U32 Reserved3;
1004} MPI2_EVENT_DATA_SAS_QUIESCE,
1005 MPI2_POINTER PTR_MPI2_EVENT_DATA_SAS_QUIESCE,
1006 Mpi2EventDataSasQuiesce_t, MPI2_POINTER pMpi2EventDataSasQuiesce_t;
1007
1008
1009#define MPI2_EVENT_SAS_QUIESCE_RC_STARTED (0x01)
1010#define MPI2_EVENT_SAS_QUIESCE_RC_COMPLETED (0x02)
1011
1012
1013
1014
1015typedef struct _MPI2_EVENT_HBD_PHY_SAS {
1016 U8 Flags;
1017 U8 NegotiatedLinkRate;
1018 U8 PhyNum;
1019 U8 PhysicalPort;
1020 U32 Reserved1;
1021 U8 InitialFrame[28];
1022} MPI2_EVENT_HBD_PHY_SAS, MPI2_POINTER PTR_MPI2_EVENT_HBD_PHY_SAS,
1023 Mpi2EventHbdPhySas_t, MPI2_POINTER pMpi2EventHbdPhySas_t;
1024
1025
1026#define MPI2_EVENT_HBD_SAS_FLAGS_FRAME_VALID (0x02)
1027#define MPI2_EVENT_HBD_SAS_FLAGS_SATA_FRAME (0x01)
1028
1029
1030
1031
1032typedef union _MPI2_EVENT_HBD_DESCRIPTOR {
1033 MPI2_EVENT_HBD_PHY_SAS Sas;
1034} MPI2_EVENT_HBD_DESCRIPTOR, MPI2_POINTER PTR_MPI2_EVENT_HBD_DESCRIPTOR,
1035 Mpi2EventHbdDescriptor_t, MPI2_POINTER pMpi2EventHbdDescriptor_t;
1036
1037typedef struct _MPI2_EVENT_DATA_HBD_PHY {
1038 U8 DescriptorType;
1039 U8 Reserved1;
1040 U16 Reserved2;
1041 U32 Reserved3;
1042 MPI2_EVENT_HBD_DESCRIPTOR Descriptor;
1043} MPI2_EVENT_DATA_HBD_PHY, MPI2_POINTER PTR_MPI2_EVENT_DATA_HBD_PHY,
1044 Mpi2EventDataHbdPhy_t, MPI2_POINTER pMpi2EventDataMpi2EventDataHbdPhy_t;
1045
1046
1047#define MPI2_EVENT_HBD_DT_SAS (0x01)
1048
1049
1050
1051
1052
1053
1054
1055
1056typedef struct _MPI2_EVENT_ACK_REQUEST
1057{
1058 U16 Reserved1;
1059 U8 ChainOffset;
1060 U8 Function;
1061 U16 Reserved2;
1062 U8 Reserved3;
1063 U8 MsgFlags;
1064 U8 VP_ID;
1065 U8 VF_ID;
1066 U16 Reserved4;
1067 U16 Event;
1068 U16 Reserved5;
1069 U32 EventContext;
1070} MPI2_EVENT_ACK_REQUEST, MPI2_POINTER PTR_MPI2_EVENT_ACK_REQUEST,
1071 Mpi2EventAckRequest_t, MPI2_POINTER pMpi2EventAckRequest_t;
1072
1073
1074
1075typedef struct _MPI2_EVENT_ACK_REPLY
1076{
1077 U16 Reserved1;
1078 U8 MsgLength;
1079 U8 Function;
1080 U16 Reserved2;
1081 U8 Reserved3;
1082 U8 MsgFlags;
1083 U8 VP_ID;
1084 U8 VF_ID;
1085 U16 Reserved4;
1086 U16 Reserved5;
1087 U16 IOCStatus;
1088 U32 IOCLogInfo;
1089} MPI2_EVENT_ACK_REPLY, MPI2_POINTER PTR_MPI2_EVENT_ACK_REPLY,
1090 Mpi2EventAckReply_t, MPI2_POINTER pMpi2EventAckReply_t;
1091
1092
1093
1094
1095
1096
1097
1098typedef struct _MPI2_SEND_HOST_MESSAGE_REQUEST {
1099 U16 HostDataLength;
1100 U8 ChainOffset;
1101 U8 Function;
1102 U16 Reserved1;
1103 U8 Reserved2;
1104 U8 MsgFlags;
1105 U8 VP_ID;
1106 U8 VF_ID;
1107 U16 Reserved3;
1108 U8 Reserved4;
1109 U8 DestVF_ID;
1110 U16 Reserved5;
1111 U32 Reserved6;
1112 U32 Reserved7;
1113 U32 Reserved8;
1114 U32 Reserved9;
1115 U32 Reserved10;
1116 U32 HostData[1];
1117} MPI2_SEND_HOST_MESSAGE_REQUEST,
1118MPI2_POINTER PTR_MPI2_SEND_HOST_MESSAGE_REQUEST,
1119Mpi2SendHostMessageRequest_t, MPI2_POINTER pMpi2SendHostMessageRequest_t;
1120
1121
1122
1123typedef struct _MPI2_SEND_HOST_MESSAGE_REPLY {
1124 U16 HostDataLength;
1125 U8 MsgLength;
1126 U8 Function;
1127 U16 Reserved1;
1128 U8 Reserved2;
1129 U8 MsgFlags;
1130 U8 VP_ID;
1131 U8 VF_ID;
1132 U16 Reserved3;
1133 U16 Reserved4;
1134 U16 IOCStatus;
1135 U32 IOCLogInfo;
1136} MPI2_SEND_HOST_MESSAGE_REPLY, MPI2_POINTER PTR_MPI2_SEND_HOST_MESSAGE_REPLY,
1137Mpi2SendHostMessageReply_t, MPI2_POINTER pMpi2SendHostMessageReply_t;
1138
1139
1140
1141
1142
1143
1144
1145typedef struct _MPI2_FW_DOWNLOAD_REQUEST
1146{
1147 U8 ImageType;
1148 U8 Reserved1;
1149 U8 ChainOffset;
1150 U8 Function;
1151 U16 Reserved2;
1152 U8 Reserved3;
1153 U8 MsgFlags;
1154 U8 VP_ID;
1155 U8 VF_ID;
1156 U16 Reserved4;
1157 U32 TotalImageSize;
1158 U32 Reserved5;
1159 MPI2_MPI_SGE_UNION SGL;
1160} MPI2_FW_DOWNLOAD_REQUEST, MPI2_POINTER PTR_MPI2_FW_DOWNLOAD_REQUEST,
1161 Mpi2FWDownloadRequest, MPI2_POINTER pMpi2FWDownloadRequest;
1162
1163#define MPI2_FW_DOWNLOAD_MSGFLGS_LAST_SEGMENT (0x01)
1164
1165#define MPI2_FW_DOWNLOAD_ITYPE_FW (0x01)
1166#define MPI2_FW_DOWNLOAD_ITYPE_BIOS (0x02)
1167#define MPI2_FW_DOWNLOAD_ITYPE_MANUFACTURING (0x06)
1168#define MPI2_FW_DOWNLOAD_ITYPE_CONFIG_1 (0x07)
1169#define MPI2_FW_DOWNLOAD_ITYPE_CONFIG_2 (0x08)
1170#define MPI2_FW_DOWNLOAD_ITYPE_MEGARAID (0x09)
1171#define MPI2_FW_DOWNLOAD_ITYPE_COMPLETE (0x0A)
1172#define MPI2_FW_DOWNLOAD_ITYPE_COMMON_BOOT_BLOCK (0x0B)
1173#define MPI2_FW_DOWNLOAD_ITYPE_PUBLIC_KEY (0x0C)
1174#define MPI2_FW_DOWNLOAD_ITYPE_MIN_PRODUCT_SPECIFIC (0xF0)
1175
1176
1177typedef struct _MPI2_FW_DOWNLOAD_TCSGE
1178{
1179 U8 Reserved1;
1180 U8 ContextSize;
1181 U8 DetailsLength;
1182 U8 Flags;
1183 U32 Reserved2;
1184 U32 ImageOffset;
1185 U32 ImageSize;
1186} MPI2_FW_DOWNLOAD_TCSGE, MPI2_POINTER PTR_MPI2_FW_DOWNLOAD_TCSGE,
1187 Mpi2FWDownloadTCSGE_t, MPI2_POINTER pMpi2FWDownloadTCSGE_t;
1188
1189
1190typedef struct _MPI2_FW_DOWNLOAD_REPLY
1191{
1192 U8 ImageType;
1193 U8 Reserved1;
1194 U8 MsgLength;
1195 U8 Function;
1196 U16 Reserved2;
1197 U8 Reserved3;
1198 U8 MsgFlags;
1199 U8 VP_ID;
1200 U8 VF_ID;
1201 U16 Reserved4;
1202 U16 Reserved5;
1203 U16 IOCStatus;
1204 U32 IOCLogInfo;
1205} MPI2_FW_DOWNLOAD_REPLY, MPI2_POINTER PTR_MPI2_FW_DOWNLOAD_REPLY,
1206 Mpi2FWDownloadReply_t, MPI2_POINTER pMpi2FWDownloadReply_t;
1207
1208
1209
1210
1211
1212
1213
1214typedef struct _MPI2_FW_UPLOAD_REQUEST
1215{
1216 U8 ImageType;
1217 U8 Reserved1;
1218 U8 ChainOffset;
1219 U8 Function;
1220 U16 Reserved2;
1221 U8 Reserved3;
1222 U8 MsgFlags;
1223 U8 VP_ID;
1224 U8 VF_ID;
1225 U16 Reserved4;
1226 U32 Reserved5;
1227 U32 Reserved6;
1228 MPI2_MPI_SGE_UNION SGL;
1229} MPI2_FW_UPLOAD_REQUEST, MPI2_POINTER PTR_MPI2_FW_UPLOAD_REQUEST,
1230 Mpi2FWUploadRequest_t, MPI2_POINTER pMpi2FWUploadRequest_t;
1231
1232#define MPI2_FW_UPLOAD_ITYPE_FW_CURRENT (0x00)
1233#define MPI2_FW_UPLOAD_ITYPE_FW_FLASH (0x01)
1234#define MPI2_FW_UPLOAD_ITYPE_BIOS_FLASH (0x02)
1235#define MPI2_FW_UPLOAD_ITYPE_FW_BACKUP (0x05)
1236#define MPI2_FW_UPLOAD_ITYPE_MANUFACTURING (0x06)
1237#define MPI2_FW_UPLOAD_ITYPE_CONFIG_1 (0x07)
1238#define MPI2_FW_UPLOAD_ITYPE_CONFIG_2 (0x08)
1239#define MPI2_FW_UPLOAD_ITYPE_MEGARAID (0x09)
1240#define MPI2_FW_UPLOAD_ITYPE_COMPLETE (0x0A)
1241#define MPI2_FW_UPLOAD_ITYPE_COMMON_BOOT_BLOCK (0x0B)
1242
1243typedef struct _MPI2_FW_UPLOAD_TCSGE
1244{
1245 U8 Reserved1;
1246 U8 ContextSize;
1247 U8 DetailsLength;
1248 U8 Flags;
1249 U32 Reserved2;
1250 U32 ImageOffset;
1251 U32 ImageSize;
1252} MPI2_FW_UPLOAD_TCSGE, MPI2_POINTER PTR_MPI2_FW_UPLOAD_TCSGE,
1253 Mpi2FWUploadTCSGE_t, MPI2_POINTER pMpi2FWUploadTCSGE_t;
1254
1255
1256typedef struct _MPI2_FW_UPLOAD_REPLY
1257{
1258 U8 ImageType;
1259 U8 Reserved1;
1260 U8 MsgLength;
1261 U8 Function;
1262 U16 Reserved2;
1263 U8 Reserved3;
1264 U8 MsgFlags;
1265 U8 VP_ID;
1266 U8 VF_ID;
1267 U16 Reserved4;
1268 U16 Reserved5;
1269 U16 IOCStatus;
1270 U32 IOCLogInfo;
1271 U32 ActualImageSize;
1272} MPI2_FW_UPLOAD_REPLY, MPI2_POINTER PTR_MPI2_FW_UPLOAD_REPLY,
1273 Mpi2FWUploadReply_t, MPI2_POINTER pMPi2FWUploadReply_t;
1274
1275
1276
1277typedef struct _MPI2_FW_IMAGE_HEADER
1278{
1279 U32 Signature;
1280 U32 Signature0;
1281 U32 Signature1;
1282 U32 Signature2;
1283 MPI2_VERSION_UNION MPIVersion;
1284 MPI2_VERSION_UNION FWVersion;
1285 MPI2_VERSION_UNION NVDATAVersion;
1286 MPI2_VERSION_UNION PackageVersion;
1287 U16 VendorID;
1288 U16 ProductID;
1289 U16 ProtocolFlags;
1290 U16 Reserved26;
1291 U32 IOCCapabilities;
1292 U32 ImageSize;
1293 U32 NextImageHeaderOffset;
1294 U32 Checksum;
1295 U32 Reserved38;
1296 U32 Reserved3C;
1297 U32 Reserved40;
1298 U32 Reserved44;
1299 U32 Reserved48;
1300 U32 Reserved4C;
1301 U32 Reserved50;
1302 U32 Reserved54;
1303 U32 Reserved58;
1304 U32 Reserved5C;
1305 U32 Reserved60;
1306 U32 FirmwareVersionNameWhat;
1307 U8 FirmwareVersionName[32];
1308 U32 VendorNameWhat;
1309 U8 VendorName[32];
1310 U32 PackageNameWhat;
1311 U8 PackageName[32];
1312 U32 ReservedD0;
1313 U32 ReservedD4;
1314 U32 ReservedD8;
1315 U32 ReservedDC;
1316 U32 ReservedE0;
1317 U32 ReservedE4;
1318 U32 ReservedE8;
1319 U32 ReservedEC;
1320 U32 ReservedF0;
1321 U32 ReservedF4;
1322 U32 ReservedF8;
1323 U32 ReservedFC;
1324} MPI2_FW_IMAGE_HEADER, MPI2_POINTER PTR_MPI2_FW_IMAGE_HEADER,
1325 Mpi2FWImageHeader_t, MPI2_POINTER pMpi2FWImageHeader_t;
1326
1327
1328#define MPI2_FW_HEADER_SIGNATURE_OFFSET (0x00)
1329#define MPI2_FW_HEADER_SIGNATURE_MASK (0xFF000000)
1330#define MPI2_FW_HEADER_SIGNATURE (0xEA000000)
1331
1332
1333#define MPI2_FW_HEADER_SIGNATURE0_OFFSET (0x04)
1334#define MPI2_FW_HEADER_SIGNATURE0 (0x5AFAA55A)
1335
1336
1337#define MPI2_FW_HEADER_SIGNATURE1_OFFSET (0x08)
1338#define MPI2_FW_HEADER_SIGNATURE1 (0xA55AFAA5)
1339
1340
1341#define MPI2_FW_HEADER_SIGNATURE2_OFFSET (0x0C)
1342#define MPI2_FW_HEADER_SIGNATURE2 (0x5AA55AFA)
1343
1344
1345
1346#define MPI2_FW_HEADER_PID_TYPE_MASK (0xF000)
1347#define MPI2_FW_HEADER_PID_TYPE_SAS (0x2000)
1348
1349#define MPI2_FW_HEADER_PID_PROD_MASK (0x0F00)
1350#define MPI2_FW_HEADER_PID_PROD_A (0x0000)
1351#define MPI2_FW_HEADER_PID_PROD_TARGET_INITIATOR_SCSI (0x0200)
1352#define MPI2_FW_HEADER_PID_PROD_IR_SCSI (0x0700)
1353
1354
1355#define MPI2_FW_HEADER_PID_FAMILY_MASK (0x00FF)
1356
1357#define MPI2_FW_HEADER_PID_FAMILY_2108_SAS (0x0013)
1358#define MPI2_FW_HEADER_PID_FAMILY_2208_SAS (0x0014)
1359
1360
1361
1362
1363
1364
1365#define MPI2_FW_HEADER_IMAGESIZE_OFFSET (0x2C)
1366#define MPI2_FW_HEADER_NEXTIMAGE_OFFSET (0x30)
1367#define MPI2_FW_HEADER_VERNMHWAT_OFFSET (0x64)
1368
1369#define MPI2_FW_HEADER_WHAT_SIGNATURE (0x29232840)
1370
1371#define MPI2_FW_HEADER_SIZE (0x100)
1372
1373
1374
1375typedef struct _MPI2_EXT_IMAGE_HEADER
1376
1377{
1378 U8 ImageType;
1379 U8 Reserved1;
1380 U16 Reserved2;
1381 U32 Checksum;
1382 U32 ImageSize;
1383 U32 NextImageHeaderOffset;
1384 U32 PackageVersion;
1385 U32 Reserved3;
1386 U32 Reserved4;
1387 U32 Reserved5;
1388 U8 IdentifyString[32];
1389} MPI2_EXT_IMAGE_HEADER, MPI2_POINTER PTR_MPI2_EXT_IMAGE_HEADER,
1390 Mpi2ExtImageHeader_t, MPI2_POINTER pMpi2ExtImageHeader_t;
1391
1392
1393#define MPI2_EXT_IMAGE_IMAGETYPE_OFFSET (0x00)
1394#define MPI2_EXT_IMAGE_IMAGESIZE_OFFSET (0x08)
1395#define MPI2_EXT_IMAGE_NEXTIMAGE_OFFSET (0x0C)
1396
1397#define MPI2_EXT_IMAGE_HEADER_SIZE (0x40)
1398
1399
1400#define MPI2_EXT_IMAGE_TYPE_UNSPECIFIED (0x00)
1401#define MPI2_EXT_IMAGE_TYPE_FW (0x01)
1402#define MPI2_EXT_IMAGE_TYPE_NVDATA (0x03)
1403#define MPI2_EXT_IMAGE_TYPE_BOOTLOADER (0x04)
1404#define MPI2_EXT_IMAGE_TYPE_INITIALIZATION (0x05)
1405#define MPI2_EXT_IMAGE_TYPE_FLASH_LAYOUT (0x06)
1406#define MPI2_EXT_IMAGE_TYPE_SUPPORTED_DEVICES (0x07)
1407#define MPI2_EXT_IMAGE_TYPE_MEGARAID (0x08)
1408#define MPI2_EXT_IMAGE_TYPE_ENCRYPTED_HASH (0x09)
1409#define MPI2_EXT_IMAGE_TYPE_MIN_PRODUCT_SPECIFIC (0x80)
1410#define MPI2_EXT_IMAGE_TYPE_MAX_PRODUCT_SPECIFIC (0xFF)
1411#define MPI2_EXT_IMAGE_TYPE_MAX \
1412 (MPI2_EXT_IMAGE_TYPE_MAX_PRODUCT_SPECIFIC)
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422#ifndef MPI2_FLASH_NUMBER_OF_REGIONS
1423#define MPI2_FLASH_NUMBER_OF_REGIONS (1)
1424#endif
1425
1426
1427
1428
1429
1430#ifndef MPI2_FLASH_NUMBER_OF_LAYOUTS
1431#define MPI2_FLASH_NUMBER_OF_LAYOUTS (1)
1432#endif
1433
1434typedef struct _MPI2_FLASH_REGION
1435{
1436 U8 RegionType;
1437 U8 Reserved1;
1438 U16 Reserved2;
1439 U32 RegionOffset;
1440 U32 RegionSize;
1441 U32 Reserved3;
1442} MPI2_FLASH_REGION, MPI2_POINTER PTR_MPI2_FLASH_REGION,
1443 Mpi2FlashRegion_t, MPI2_POINTER pMpi2FlashRegion_t;
1444
1445typedef struct _MPI2_FLASH_LAYOUT
1446{
1447 U32 FlashSize;
1448 U32 Reserved1;
1449 U32 Reserved2;
1450 U32 Reserved3;
1451 MPI2_FLASH_REGION Region[MPI2_FLASH_NUMBER_OF_REGIONS];
1452} MPI2_FLASH_LAYOUT, MPI2_POINTER PTR_MPI2_FLASH_LAYOUT,
1453 Mpi2FlashLayout_t, MPI2_POINTER pMpi2FlashLayout_t;
1454
1455typedef struct _MPI2_FLASH_LAYOUT_DATA
1456{
1457 U8 ImageRevision;
1458 U8 Reserved1;
1459 U8 SizeOfRegion;
1460 U8 Reserved2;
1461 U16 NumberOfLayouts;
1462 U16 RegionsPerLayout;
1463 U16 MinimumSectorAlignment;
1464 U16 Reserved3;
1465 U32 Reserved4;
1466 MPI2_FLASH_LAYOUT Layout[MPI2_FLASH_NUMBER_OF_LAYOUTS];
1467} MPI2_FLASH_LAYOUT_DATA, MPI2_POINTER PTR_MPI2_FLASH_LAYOUT_DATA,
1468 Mpi2FlashLayoutData_t, MPI2_POINTER pMpi2FlashLayoutData_t;
1469
1470
1471#define MPI2_FLASH_REGION_UNUSED (0x00)
1472#define MPI2_FLASH_REGION_FIRMWARE (0x01)
1473#define MPI2_FLASH_REGION_BIOS (0x02)
1474#define MPI2_FLASH_REGION_NVDATA (0x03)
1475#define MPI2_FLASH_REGION_FIRMWARE_BACKUP (0x05)
1476#define MPI2_FLASH_REGION_MFG_INFORMATION (0x06)
1477#define MPI2_FLASH_REGION_CONFIG_1 (0x07)
1478#define MPI2_FLASH_REGION_CONFIG_2 (0x08)
1479#define MPI2_FLASH_REGION_MEGARAID (0x09)
1480#define MPI2_FLASH_REGION_INIT (0x0A)
1481
1482
1483#define MPI2_FLASH_LAYOUT_IMAGE_REVISION (0x00)
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493#ifndef MPI2_SUPPORTED_DEVICES_IMAGE_NUM_DEVICES
1494#define MPI2_SUPPORTED_DEVICES_IMAGE_NUM_DEVICES (1)
1495#endif
1496
1497typedef struct _MPI2_SUPPORTED_DEVICE
1498{
1499 U16 DeviceID;
1500 U16 VendorID;
1501 U16 DeviceIDMask;
1502 U16 Reserved1;
1503 U8 LowPCIRev;
1504 U8 HighPCIRev;
1505 U16 Reserved2;
1506 U32 Reserved3;
1507} MPI2_SUPPORTED_DEVICE, MPI2_POINTER PTR_MPI2_SUPPORTED_DEVICE,
1508 Mpi2SupportedDevice_t, MPI2_POINTER pMpi2SupportedDevice_t;
1509
1510typedef struct _MPI2_SUPPORTED_DEVICES_DATA
1511{
1512 U8 ImageRevision;
1513 U8 Reserved1;
1514 U8 NumberOfDevices;
1515 U8 Reserved2;
1516 U32 Reserved3;
1517 MPI2_SUPPORTED_DEVICE SupportedDevice[MPI2_SUPPORTED_DEVICES_IMAGE_NUM_DEVICES];
1518} MPI2_SUPPORTED_DEVICES_DATA, MPI2_POINTER PTR_MPI2_SUPPORTED_DEVICES_DATA,
1519 Mpi2SupportedDevicesData_t, MPI2_POINTER pMpi2SupportedDevicesData_t;
1520
1521
1522#define MPI2_SUPPORTED_DEVICES_IMAGE_REVISION (0x00)
1523
1524
1525
1526
1527typedef struct _MPI2_INIT_IMAGE_FOOTER
1528
1529{
1530 U32 BootFlags;
1531 U32 ImageSize;
1532 U32 Signature0;
1533 U32 Signature1;
1534 U32 Signature2;
1535 U32 ResetVector;
1536} MPI2_INIT_IMAGE_FOOTER, MPI2_POINTER PTR_MPI2_INIT_IMAGE_FOOTER,
1537 Mpi2InitImageFooter_t, MPI2_POINTER pMpi2InitImageFooter_t;
1538
1539
1540#define MPI2_INIT_IMAGE_BOOTFLAGS_OFFSET (0x00)
1541
1542
1543#define MPI2_INIT_IMAGE_IMAGESIZE_OFFSET (0x04)
1544
1545
1546#define MPI2_INIT_IMAGE_SIGNATURE0_OFFSET (0x08)
1547#define MPI2_INIT_IMAGE_SIGNATURE0 (0x5AA55AEA)
1548
1549
1550#define MPI2_INIT_IMAGE_SIGNATURE1_OFFSET (0x0C)
1551#define MPI2_INIT_IMAGE_SIGNATURE1 (0xA55AEAA5)
1552
1553
1554#define MPI2_INIT_IMAGE_SIGNATURE2_OFFSET (0x10)
1555#define MPI2_INIT_IMAGE_SIGNATURE2 (0x5AEAA55A)
1556
1557
1558#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_0 (0xEA)
1559#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_1 (0x5A)
1560#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_2 (0xA5)
1561#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_3 (0x5A)
1562
1563#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_4 (0xA5)
1564#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_5 (0xEA)
1565#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_6 (0x5A)
1566#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_7 (0xA5)
1567
1568#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_8 (0x5A)
1569#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_9 (0xA5)
1570#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_A (0xEA)
1571#define MPI2_INIT_IMAGE_SIGNATURE_BYTE_B (0x5A)
1572
1573
1574#define MPI2_INIT_IMAGE_RESETVECTOR_OFFSET (0x14)
1575
1576
1577
1578
1579typedef struct _MPI25_ENCRYPTED_HASH_ENTRY {
1580 U8 HashImageType;
1581 U8 HashAlgorithm;
1582 U8 EncryptionAlgorithm;
1583 U8 Reserved1;
1584 U32 Reserved2;
1585 U32 EncryptedHash[1];
1586} MPI25_ENCRYPTED_HASH_ENTRY, MPI2_POINTER PTR_MPI25_ENCRYPTED_HASH_ENTRY,
1587Mpi25EncryptedHashEntry_t, MPI2_POINTER pMpi25EncryptedHashEntry_t;
1588
1589
1590#define MPI25_HASH_IMAGE_TYPE_UNUSED (0x00)
1591#define MPI25_HASH_IMAGE_TYPE_FIRMWARE (0x01)
1592
1593
1594#define MPI25_HASH_ALGORITHM_UNUSED (0x00)
1595#define MPI25_HASH_ALGORITHM_SHA256 (0x01)
1596
1597
1598#define MPI25_ENCRYPTION_ALG_UNUSED (0x00)
1599#define MPI25_ENCRYPTION_ALG_RSA256 (0x01)
1600
1601typedef struct _MPI25_ENCRYPTED_HASH_DATA {
1602 U8 ImageVersion;
1603 U8 NumHash;
1604 U16 Reserved1;
1605 U32 Reserved2;
1606 MPI25_ENCRYPTED_HASH_ENTRY EncryptedHashEntry[1];
1607} MPI25_ENCRYPTED_HASH_DATA, MPI2_POINTER PTR_MPI25_ENCRYPTED_HASH_DATA,
1608Mpi25EncryptedHashData_t, MPI2_POINTER pMpi25EncryptedHashData_t;
1609
1610
1611
1612
1613
1614
1615typedef struct _MPI2_PWR_MGMT_CONTROL_REQUEST {
1616 U8 Feature;
1617 U8 Reserved1;
1618 U8 ChainOffset;
1619 U8 Function;
1620 U16 Reserved2;
1621 U8 Reserved3;
1622 U8 MsgFlags;
1623 U8 VP_ID;
1624 U8 VF_ID;
1625 U16 Reserved4;
1626 U8 Parameter1;
1627 U8 Parameter2;
1628 U8 Parameter3;
1629 U8 Parameter4;
1630 U32 Reserved5;
1631 U32 Reserved6;
1632} MPI2_PWR_MGMT_CONTROL_REQUEST, MPI2_POINTER PTR_MPI2_PWR_MGMT_CONTROL_REQUEST,
1633 Mpi2PwrMgmtControlRequest_t, MPI2_POINTER pMpi2PwrMgmtControlRequest_t;
1634
1635
1636#define MPI2_PM_CONTROL_FEATURE_DA_PHY_POWER_COND (0x01)
1637#define MPI2_PM_CONTROL_FEATURE_PORT_WIDTH_MODULATION (0x02)
1638#define MPI2_PM_CONTROL_FEATURE_PCIE_LINK (0x03)
1639#define MPI2_PM_CONTROL_FEATURE_IOC_SPEED (0x04)
1640#define MPI2_PM_CONTROL_FEATURE_MIN_PRODUCT_SPECIFIC (0x80)
1641#define MPI2_PM_CONTROL_FEATURE_MAX_PRODUCT_SPECIFIC (0xFF)
1642
1643
1644
1645
1646#define MPI2_PM_CONTROL_PARAM2_PARTIAL (0x01)
1647#define MPI2_PM_CONTROL_PARAM2_SLUMBER (0x02)
1648#define MPI2_PM_CONTROL_PARAM2_EXIT_PWR_MGMT (0x03)
1649
1650
1651
1652
1653
1654
1655#define MPI2_PM_CONTROL_PARAM2_REQUEST_OWNERSHIP (0x01)
1656#define MPI2_PM_CONTROL_PARAM2_CHANGE_MODULATION (0x02)
1657#define MPI2_PM_CONTROL_PARAM2_RELINQUISH_OWNERSHIP (0x03)
1658
1659#define MPI2_PM_CONTROL_PARAM3_25_PERCENT (0x00)
1660#define MPI2_PM_CONTROL_PARAM3_50_PERCENT (0x01)
1661#define MPI2_PM_CONTROL_PARAM3_75_PERCENT (0x02)
1662#define MPI2_PM_CONTROL_PARAM3_100_PERCENT (0x03)
1663
1664
1665
1666
1667#define MPI2_PM_CONTROL_PARAM1_PCIE_2_5_GBPS (0x00)
1668#define MPI2_PM_CONTROL_PARAM1_PCIE_5_0_GBPS (0x01)
1669#define MPI2_PM_CONTROL_PARAM1_PCIE_8_0_GBPS (0x02)
1670
1671#define MPI2_PM_CONTROL_PARAM2_WIDTH_X1 (0x01)
1672#define MPI2_PM_CONTROL_PARAM2_WIDTH_X2 (0x02)
1673#define MPI2_PM_CONTROL_PARAM2_WIDTH_X4 (0x04)
1674#define MPI2_PM_CONTROL_PARAM2_WIDTH_X8 (0x08)
1675
1676
1677
1678
1679#define MPI2_PM_CONTROL_PARAM1_FULL_IOC_SPEED (0x01)
1680#define MPI2_PM_CONTROL_PARAM1_HALF_IOC_SPEED (0x02)
1681#define MPI2_PM_CONTROL_PARAM1_QUARTER_IOC_SPEED (0x04)
1682#define MPI2_PM_CONTROL_PARAM1_EIGHTH_IOC_SPEED (0x08)
1683
1684
1685
1686
1687typedef struct _MPI2_PWR_MGMT_CONTROL_REPLY {
1688 U8 Feature;
1689 U8 Reserved1;
1690 U8 MsgLength;
1691 U8 Function;
1692 U16 Reserved2;
1693 U8 Reserved3;
1694 U8 MsgFlags;
1695 U8 VP_ID;
1696 U8 VF_ID;
1697 U16 Reserved4;
1698 U16 Reserved5;
1699 U16 IOCStatus;
1700 U32 IOCLogInfo;
1701} MPI2_PWR_MGMT_CONTROL_REPLY, MPI2_POINTER PTR_MPI2_PWR_MGMT_CONTROL_REPLY,
1702 Mpi2PwrMgmtControlReply_t, MPI2_POINTER pMpi2PwrMgmtControlReply_t;
1703
1704
1705#endif
1706
1707