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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329 #ifndef MPI_CNFG_H
330 #define MPI_CNFG_H
331
332
333
334
335
336
337
338
339 typedef struct _CONFIG_PAGE_HEADER
340 {
341 U8 PageVersion;
342 U8 PageLength;
343 U8 PageNumber;
344 U8 PageType;
345 } CONFIG_PAGE_HEADER, MPI_POINTER PTR_CONFIG_PAGE_HEADER,
346 ConfigPageHeader_t, MPI_POINTER pConfigPageHeader_t;
347
348 typedef union _CONFIG_PAGE_HEADER_UNION
349 {
350 ConfigPageHeader_t Struct;
351 U8 Bytes[4];
352 U16 Word16[2];
353 U32 Word32;
354 } ConfigPageHeaderUnion, MPI_POINTER pConfigPageHeaderUnion,
355 CONFIG_PAGE_HEADER_UNION, MPI_POINTER PTR_CONFIG_PAGE_HEADER_UNION;
356
357 typedef struct _CONFIG_EXTENDED_PAGE_HEADER
358 {
359 U8 PageVersion;
360 U8 Reserved1;
361 U8 PageNumber;
362 U8 PageType;
363 U16 ExtPageLength;
364 U8 ExtPageType;
365 U8 Reserved2;
366 } CONFIG_EXTENDED_PAGE_HEADER, MPI_POINTER PTR_CONFIG_EXTENDED_PAGE_HEADER,
367 ConfigExtendedPageHeader_t, MPI_POINTER pConfigExtendedPageHeader_t;
368
369
370
371
372
373
374 #define MPI_CONFIG_PAGEATTR_READ_ONLY (0x00)
375 #define MPI_CONFIG_PAGEATTR_CHANGEABLE (0x10)
376 #define MPI_CONFIG_PAGEATTR_PERSISTENT (0x20)
377 #define MPI_CONFIG_PAGEATTR_RO_PERSISTENT (0x30)
378 #define MPI_CONFIG_PAGEATTR_MASK (0xF0)
379
380 #define MPI_CONFIG_PAGETYPE_IO_UNIT (0x00)
381 #define MPI_CONFIG_PAGETYPE_IOC (0x01)
382 #define MPI_CONFIG_PAGETYPE_BIOS (0x02)
383 #define MPI_CONFIG_PAGETYPE_SCSI_PORT (0x03)
384 #define MPI_CONFIG_PAGETYPE_SCSI_DEVICE (0x04)
385 #define MPI_CONFIG_PAGETYPE_FC_PORT (0x05)
386 #define MPI_CONFIG_PAGETYPE_FC_DEVICE (0x06)
387 #define MPI_CONFIG_PAGETYPE_LAN (0x07)
388 #define MPI_CONFIG_PAGETYPE_RAID_VOLUME (0x08)
389 #define MPI_CONFIG_PAGETYPE_MANUFACTURING (0x09)
390 #define MPI_CONFIG_PAGETYPE_RAID_PHYSDISK (0x0A)
391 #define MPI_CONFIG_PAGETYPE_INBAND (0x0B)
392 #define MPI_CONFIG_PAGETYPE_EXTENDED (0x0F)
393 #define MPI_CONFIG_PAGETYPE_MASK (0x0F)
394
395 #define MPI_CONFIG_TYPENUM_MASK (0x0FFF)
396
397
398
399
400
401 #define MPI_CONFIG_EXTPAGETYPE_SAS_IO_UNIT (0x10)
402 #define MPI_CONFIG_EXTPAGETYPE_SAS_EXPANDER (0x11)
403 #define MPI_CONFIG_EXTPAGETYPE_SAS_DEVICE (0x12)
404 #define MPI_CONFIG_EXTPAGETYPE_SAS_PHY (0x13)
405 #define MPI_CONFIG_EXTPAGETYPE_LOG (0x14)
406 #define MPI_CONFIG_EXTPAGETYPE_ENCLOSURE (0x15)
407
408
409
410
411
412 #define MPI_SCSI_PORT_PGAD_PORT_MASK (0x000000FF)
413
414 #define MPI_SCSI_DEVICE_FORM_MASK (0xF0000000)
415 #define MPI_SCSI_DEVICE_FORM_BUS_TID (0x00000000)
416 #define MPI_SCSI_DEVICE_TARGET_ID_MASK (0x000000FF)
417 #define MPI_SCSI_DEVICE_TARGET_ID_SHIFT (0)
418 #define MPI_SCSI_DEVICE_BUS_MASK (0x0000FF00)
419 #define MPI_SCSI_DEVICE_BUS_SHIFT (8)
420 #define MPI_SCSI_DEVICE_FORM_TARGET_MODE (0x10000000)
421 #define MPI_SCSI_DEVICE_TM_RESPOND_ID_MASK (0x000000FF)
422 #define MPI_SCSI_DEVICE_TM_RESPOND_ID_SHIFT (0)
423 #define MPI_SCSI_DEVICE_TM_BUS_MASK (0x0000FF00)
424 #define MPI_SCSI_DEVICE_TM_BUS_SHIFT (8)
425 #define MPI_SCSI_DEVICE_TM_INIT_ID_MASK (0x00FF0000)
426 #define MPI_SCSI_DEVICE_TM_INIT_ID_SHIFT (16)
427
428 #define MPI_FC_PORT_PGAD_PORT_MASK (0xF0000000)
429 #define MPI_FC_PORT_PGAD_PORT_SHIFT (28)
430 #define MPI_FC_PORT_PGAD_FORM_MASK (0x0F000000)
431 #define MPI_FC_PORT_PGAD_FORM_INDEX (0x01000000)
432 #define MPI_FC_PORT_PGAD_INDEX_MASK (0x0000FFFF)
433 #define MPI_FC_PORT_PGAD_INDEX_SHIFT (0)
434
435 #define MPI_FC_DEVICE_PGAD_PORT_MASK (0xF0000000)
436 #define MPI_FC_DEVICE_PGAD_PORT_SHIFT (28)
437 #define MPI_FC_DEVICE_PGAD_FORM_MASK (0x0F000000)
438 #define MPI_FC_DEVICE_PGAD_FORM_NEXT_DID (0x00000000)
439 #define MPI_FC_DEVICE_PGAD_ND_PORT_MASK (0xF0000000)
440 #define MPI_FC_DEVICE_PGAD_ND_PORT_SHIFT (28)
441 #define MPI_FC_DEVICE_PGAD_ND_DID_MASK (0x00FFFFFF)
442 #define MPI_FC_DEVICE_PGAD_ND_DID_SHIFT (0)
443 #define MPI_FC_DEVICE_PGAD_FORM_BUS_TID (0x01000000)
444 #define MPI_FC_DEVICE_PGAD_BT_BUS_MASK (0x0000FF00)
445 #define MPI_FC_DEVICE_PGAD_BT_BUS_SHIFT (8)
446 #define MPI_FC_DEVICE_PGAD_BT_TID_MASK (0x000000FF)
447 #define MPI_FC_DEVICE_PGAD_BT_TID_SHIFT (0)
448
449 #define MPI_PHYSDISK_PGAD_PHYSDISKNUM_MASK (0x000000FF)
450 #define MPI_PHYSDISK_PGAD_PHYSDISKNUM_SHIFT (0)
451
452 #define MPI_SAS_EXPAND_PGAD_FORM_MASK (0xF0000000)
453 #define MPI_SAS_EXPAND_PGAD_FORM_SHIFT (28)
454 #define MPI_SAS_EXPAND_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
455 #define MPI_SAS_EXPAND_PGAD_FORM_HANDLE_PHY_NUM (0x00000001)
456 #define MPI_SAS_EXPAND_PGAD_FORM_HANDLE (0x00000002)
457 #define MPI_SAS_EXPAND_PGAD_GNH_MASK_HANDLE (0x0000FFFF)
458 #define MPI_SAS_EXPAND_PGAD_GNH_SHIFT_HANDLE (0)
459 #define MPI_SAS_EXPAND_PGAD_HPN_MASK_PHY (0x00FF0000)
460 #define MPI_SAS_EXPAND_PGAD_HPN_SHIFT_PHY (16)
461 #define MPI_SAS_EXPAND_PGAD_HPN_MASK_HANDLE (0x0000FFFF)
462 #define MPI_SAS_EXPAND_PGAD_HPN_SHIFT_HANDLE (0)
463 #define MPI_SAS_EXPAND_PGAD_H_MASK_HANDLE (0x0000FFFF)
464 #define MPI_SAS_EXPAND_PGAD_H_SHIFT_HANDLE (0)
465
466 #define MPI_SAS_DEVICE_PGAD_FORM_MASK (0xF0000000)
467 #define MPI_SAS_DEVICE_PGAD_FORM_SHIFT (28)
468 #define MPI_SAS_DEVICE_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
469 #define MPI_SAS_DEVICE_PGAD_FORM_BUS_TARGET_ID (0x00000001)
470 #define MPI_SAS_DEVICE_PGAD_FORM_HANDLE (0x00000002)
471 #define MPI_SAS_DEVICE_PGAD_GNH_HANDLE_MASK (0x0000FFFF)
472 #define MPI_SAS_DEVICE_PGAD_GNH_HANDLE_SHIFT (0)
473 #define MPI_SAS_DEVICE_PGAD_BT_BUS_MASK (0x0000FF00)
474 #define MPI_SAS_DEVICE_PGAD_BT_BUS_SHIFT (8)
475 #define MPI_SAS_DEVICE_PGAD_BT_TID_MASK (0x000000FF)
476 #define MPI_SAS_DEVICE_PGAD_BT_TID_SHIFT (0)
477 #define MPI_SAS_DEVICE_PGAD_H_HANDLE_MASK (0x0000FFFF)
478 #define MPI_SAS_DEVICE_PGAD_H_HANDLE_SHIFT (0)
479
480 #define MPI_SAS_PHY_PGAD_FORM_MASK (0xF0000000)
481 #define MPI_SAS_PHY_PGAD_FORM_SHIFT (28)
482 #define MPI_SAS_PHY_PGAD_FORM_PHY_NUMBER (0x0)
483 #define MPI_SAS_PHY_PGAD_FORM_PHY_TBL_INDEX (0x1)
484 #define MPI_SAS_PHY_PGAD_PHY_NUMBER_MASK (0x000000FF)
485 #define MPI_SAS_PHY_PGAD_PHY_NUMBER_SHIFT (0)
486 #define MPI_SAS_PHY_PGAD_PHY_TBL_INDEX_MASK (0x0000FFFF)
487 #define MPI_SAS_PHY_PGAD_PHY_TBL_INDEX_SHIFT (0)
488
489 #define MPI_SAS_ENCLOS_PGAD_FORM_MASK (0xF0000000)
490 #define MPI_SAS_ENCLOS_PGAD_FORM_SHIFT (28)
491 #define MPI_SAS_ENCLOS_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
492 #define MPI_SAS_ENCLOS_PGAD_FORM_HANDLE (0x00000001)
493 #define MPI_SAS_ENCLOS_PGAD_GNH_HANDLE_MASK (0x0000FFFF)
494 #define MPI_SAS_ENCLOS_PGAD_GNH_HANDLE_SHIFT (0)
495 #define MPI_SAS_ENCLOS_PGAD_H_HANDLE_MASK (0x0000FFFF)
496 #define MPI_SAS_ENCLOS_PGAD_H_HANDLE_SHIFT (0)
497
498
499
500
501
502
503 typedef struct _MSG_CONFIG
504 {
505 U8 Action;
506 U8 Reserved;
507 U8 ChainOffset;
508 U8 Function;
509 U16 ExtPageLength;
510 U8 ExtPageType;
511 U8 MsgFlags;
512 U32 MsgContext;
513 U8 Reserved2[8];
514 CONFIG_PAGE_HEADER Header;
515 U32 PageAddress;
516 SGE_IO_UNION PageBufferSGE;
517 } MSG_CONFIG, MPI_POINTER PTR_MSG_CONFIG,
518 Config_t, MPI_POINTER pConfig_t;
519
520
521
522
523
524 #define MPI_CONFIG_ACTION_PAGE_HEADER (0x00)
525 #define MPI_CONFIG_ACTION_PAGE_READ_CURRENT (0x01)
526 #define MPI_CONFIG_ACTION_PAGE_WRITE_CURRENT (0x02)
527 #define MPI_CONFIG_ACTION_PAGE_DEFAULT (0x03)
528 #define MPI_CONFIG_ACTION_PAGE_WRITE_NVRAM (0x04)
529 #define MPI_CONFIG_ACTION_PAGE_READ_DEFAULT (0x05)
530 #define MPI_CONFIG_ACTION_PAGE_READ_NVRAM (0x06)
531
532
533
534 typedef struct _MSG_CONFIG_REPLY
535 {
536 U8 Action;
537 U8 Reserved;
538 U8 MsgLength;
539 U8 Function;
540 U16 ExtPageLength;
541 U8 ExtPageType;
542 U8 MsgFlags;
543 U32 MsgContext;
544 U8 Reserved2[2];
545 U16 IOCStatus;
546 U32 IOCLogInfo;
547 CONFIG_PAGE_HEADER Header;
548 } MSG_CONFIG_REPLY, MPI_POINTER PTR_MSG_CONFIG_REPLY,
549 ConfigReply_t, MPI_POINTER pConfigReply_t;
550
551
552
553
554
555
556
557
558
559
560
561
562 #define MPI_MANUFACTPAGE_VENDORID_LSILOGIC (0x1000)
563
564 #define MPI_MANUFACTPAGE_DEVICEID_FC909 (0x0621)
565 #define MPI_MANUFACTPAGE_DEVICEID_FC919 (0x0624)
566 #define MPI_MANUFACTPAGE_DEVICEID_FC929 (0x0622)
567 #define MPI_MANUFACTPAGE_DEVICEID_FC919X (0x0628)
568 #define MPI_MANUFACTPAGE_DEVICEID_FC929X (0x0626)
569 #define MPI_MANUFACTPAGE_DEVICEID_FC939X (0x0642)
570 #define MPI_MANUFACTPAGE_DEVICEID_FC949X (0x0640)
571 #define MPI_MANUFACTPAGE_DEVICEID_FC949E (0x0646)
572
573 #define MPI_MANUFACTPAGE_DEVID_53C1030 (0x0030)
574 #define MPI_MANUFACTPAGE_DEVID_53C1030ZC (0x0031)
575 #define MPI_MANUFACTPAGE_DEVID_1030_53C1035 (0x0032)
576 #define MPI_MANUFACTPAGE_DEVID_1030ZC_53C1035 (0x0033)
577 #define MPI_MANUFACTPAGE_DEVID_53C1035 (0x0040)
578 #define MPI_MANUFACTPAGE_DEVID_53C1035ZC (0x0041)
579
580 #define MPI_MANUFACTPAGE_DEVID_SAS1064 (0x0050)
581 #define MPI_MANUFACTPAGE_DEVID_SAS1064A (0x005C)
582 #define MPI_MANUFACTPAGE_DEVID_SAS1064E (0x0056)
583 #define MPI_MANUFACTPAGE_DEVID_SAS1066 (0x005E)
584 #define MPI_MANUFACTPAGE_DEVID_SAS1066E (0x005A)
585 #define MPI_MANUFACTPAGE_DEVID_SAS1068 (0x0054)
586 #define MPI_MANUFACTPAGE_DEVID_SAS1068E (0x0058)
587 #define MPI_MANUFACTPAGE_DEVID_SAS1068_820XELP (0x0059)
588 #define MPI_MANUFACTPAGE_DEVID_SAS1078 (0x0062)
589
590
591 typedef struct _CONFIG_PAGE_MANUFACTURING_0
592 {
593 CONFIG_PAGE_HEADER Header;
594 U8 ChipName[16];
595 U8 ChipRevision[8];
596 U8 BoardName[16];
597 U8 BoardAssembly[16];
598 U8 BoardTracerNumber[16];
599
600 } CONFIG_PAGE_MANUFACTURING_0, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_0,
601 ManufacturingPage0_t, MPI_POINTER pManufacturingPage0_t;
602
603 #define MPI_MANUFACTURING0_PAGEVERSION (0x00)
604
605
606 typedef struct _CONFIG_PAGE_MANUFACTURING_1
607 {
608 CONFIG_PAGE_HEADER Header;
609 U8 VPD[256];
610 } CONFIG_PAGE_MANUFACTURING_1, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_1,
611 ManufacturingPage1_t, MPI_POINTER pManufacturingPage1_t;
612
613 #define MPI_MANUFACTURING1_PAGEVERSION (0x00)
614
615
616 typedef struct _MPI_CHIP_REVISION_ID
617 {
618 U16 DeviceID;
619 U8 PCIRevisionID;
620 U8 Reserved;
621 } MPI_CHIP_REVISION_ID, MPI_POINTER PTR_MPI_CHIP_REVISION_ID,
622 MpiChipRevisionId_t, MPI_POINTER pMpiChipRevisionId_t;
623
624
625
626
627
628
629 #ifndef MPI_MAN_PAGE_2_HW_SETTINGS_WORDS
630 #define MPI_MAN_PAGE_2_HW_SETTINGS_WORDS (1)
631 #endif
632
633 typedef struct _CONFIG_PAGE_MANUFACTURING_2
634 {
635 CONFIG_PAGE_HEADER Header;
636 MPI_CHIP_REVISION_ID ChipId;
637 U32 HwSettings[MPI_MAN_PAGE_2_HW_SETTINGS_WORDS];
638 } CONFIG_PAGE_MANUFACTURING_2, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_2,
639 ManufacturingPage2_t, MPI_POINTER pManufacturingPage2_t;
640
641 #define MPI_MANUFACTURING2_PAGEVERSION (0x00)
642
643
644
645
646
647
648 #ifndef MPI_MAN_PAGE_3_INFO_WORDS
649 #define MPI_MAN_PAGE_3_INFO_WORDS (1)
650 #endif
651
652 typedef struct _CONFIG_PAGE_MANUFACTURING_3
653 {
654 CONFIG_PAGE_HEADER Header;
655 MPI_CHIP_REVISION_ID ChipId;
656 U32 Info[MPI_MAN_PAGE_3_INFO_WORDS];
657 } CONFIG_PAGE_MANUFACTURING_3, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_3,
658 ManufacturingPage3_t, MPI_POINTER pManufacturingPage3_t;
659
660 #define MPI_MANUFACTURING3_PAGEVERSION (0x00)
661
662
663 typedef struct _CONFIG_PAGE_MANUFACTURING_4
664 {
665 CONFIG_PAGE_HEADER Header;
666 U32 Reserved1;
667 U8 InfoOffset0;
668 U8 InfoSize0;
669 U8 InfoOffset1;
670 U8 InfoSize1;
671 U8 InquirySize;
672 U8 Flags;
673 U16 ExtFlags;
674 U8 InquiryData[56];
675 U32 ISVolumeSettings;
676 U32 IMEVolumeSettings;
677 U32 IMVolumeSettings;
678 U32 Reserved3;
679 U32 Reserved4;
680 U32 Reserved5;
681 U8 IMEDataScrubRate;
682 U8 IMEResyncRate;
683 U16 Reserved6;
684 U8 IMDataScrubRate;
685 U8 IMResyncRate;
686 U16 Reserved7;
687 U32 Reserved8;
688 U32 Reserved9;
689 } CONFIG_PAGE_MANUFACTURING_4, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_4,
690 ManufacturingPage4_t, MPI_POINTER pManufacturingPage4_t;
691
692 #define MPI_MANUFACTURING4_PAGEVERSION (0x05)
693
694
695 #define MPI_MANPAGE4_FORCE_BAD_BLOCK_TABLE (0x80)
696 #define MPI_MANPAGE4_FORCE_OFFLINE_FAILOVER (0x40)
697 #define MPI_MANPAGE4_IME_DISABLE (0x20)
698 #define MPI_MANPAGE4_IM_DISABLE (0x10)
699 #define MPI_MANPAGE4_IS_DISABLE (0x08)
700 #define MPI_MANPAGE4_IR_MODEPAGE8_DISABLE (0x04)
701 #define MPI_MANPAGE4_IM_RESYNC_CACHE_ENABLE (0x02)
702 #define MPI_MANPAGE4_IR_NO_MIX_SAS_SATA (0x01)
703
704
705 #define MPI_MANPAGE4_EXTFLAGS_MASK_COERCION_SIZE (0x0180)
706 #define MPI_MANPAGE4_EXTFLAGS_SHIFT_COERCION_SIZE (7)
707 #define MPI_MANPAGE4_EXTFLAGS_1GB_COERCION_SIZE (0)
708 #define MPI_MANPAGE4_EXTFLAGS_128MB_COERCION_SIZE (1)
709
710 #define MPI_MANPAGE4_EXTFLAGS_NO_MIX_SSD_SAS_SATA (0x0040)
711 #define MPI_MANPAGE4_EXTFLAGS_MIX_SSD_AND_NON_SSD (0x0020)
712 #define MPI_MANPAGE4_EXTFLAGS_DUAL_PORT_SUPPORT (0x0010)
713 #define MPI_MANPAGE4_EXTFLAGS_HIDE_NON_IR_METADATA (0x0008)
714 #define MPI_MANPAGE4_EXTFLAGS_SAS_CACHE_DISABLE (0x0004)
715 #define MPI_MANPAGE4_EXTFLAGS_SATA_CACHE_DISABLE (0x0002)
716 #define MPI_MANPAGE4_EXTFLAGS_LEGACY_MODE (0x0001)
717
718
719 #ifndef MPI_MANPAGE5_NUM_FORCEWWID
720 #define MPI_MANPAGE5_NUM_FORCEWWID (1)
721 #endif
722
723 typedef struct _CONFIG_PAGE_MANUFACTURING_5
724 {
725 CONFIG_PAGE_HEADER Header;
726 U64 BaseWWID;
727 U8 Flags;
728 U8 NumForceWWID;
729 U16 Reserved2;
730 U32 Reserved3;
731 U32 Reserved4;
732 U64 ForceWWID[MPI_MANPAGE5_NUM_FORCEWWID];
733 } CONFIG_PAGE_MANUFACTURING_5, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_5,
734 ManufacturingPage5_t, MPI_POINTER pManufacturingPage5_t;
735
736 #define MPI_MANUFACTURING5_PAGEVERSION (0x02)
737
738
739 #define MPI_MANPAGE5_TWO_WWID_PER_PHY (0x01)
740
741
742 typedef struct _CONFIG_PAGE_MANUFACTURING_6
743 {
744 CONFIG_PAGE_HEADER Header;
745 U32 ProductSpecificInfo;
746 } CONFIG_PAGE_MANUFACTURING_6, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_6,
747 ManufacturingPage6_t, MPI_POINTER pManufacturingPage6_t;
748
749 #define MPI_MANUFACTURING6_PAGEVERSION (0x00)
750
751
752 typedef struct _MPI_MANPAGE7_CONNECTOR_INFO
753 {
754 U32 Pinout;
755 U8 Connector[16];
756 U8 Location;
757 U8 Reserved1;
758 U16 Slot;
759 U32 Reserved2;
760 } MPI_MANPAGE7_CONNECTOR_INFO, MPI_POINTER PTR_MPI_MANPAGE7_CONNECTOR_INFO,
761 MpiManPage7ConnectorInfo_t, MPI_POINTER pMpiManPage7ConnectorInfo_t;
762
763
764 #define MPI_MANPAGE7_PINOUT_SFF_8484_L4 (0x00080000)
765 #define MPI_MANPAGE7_PINOUT_SFF_8484_L3 (0x00040000)
766 #define MPI_MANPAGE7_PINOUT_SFF_8484_L2 (0x00020000)
767 #define MPI_MANPAGE7_PINOUT_SFF_8484_L1 (0x00010000)
768 #define MPI_MANPAGE7_PINOUT_SFF_8470_L4 (0x00000800)
769 #define MPI_MANPAGE7_PINOUT_SFF_8470_L3 (0x00000400)
770 #define MPI_MANPAGE7_PINOUT_SFF_8470_L2 (0x00000200)
771 #define MPI_MANPAGE7_PINOUT_SFF_8470_L1 (0x00000100)
772 #define MPI_MANPAGE7_PINOUT_SFF_8482 (0x00000002)
773 #define MPI_MANPAGE7_PINOUT_CONNECTION_UNKNOWN (0x00000001)
774
775
776 #define MPI_MANPAGE7_LOCATION_UNKNOWN (0x01)
777 #define MPI_MANPAGE7_LOCATION_INTERNAL (0x02)
778 #define MPI_MANPAGE7_LOCATION_EXTERNAL (0x04)
779 #define MPI_MANPAGE7_LOCATION_SWITCHABLE (0x08)
780 #define MPI_MANPAGE7_LOCATION_AUTO (0x10)
781 #define MPI_MANPAGE7_LOCATION_NOT_PRESENT (0x20)
782 #define MPI_MANPAGE7_LOCATION_NOT_CONNECTED (0x80)
783
784
785
786
787
788 #ifndef MPI_MANPAGE7_CONNECTOR_INFO_MAX
789 #define MPI_MANPAGE7_CONNECTOR_INFO_MAX (1)
790 #endif
791
792 typedef struct _CONFIG_PAGE_MANUFACTURING_7
793 {
794 CONFIG_PAGE_HEADER Header;
795 U32 Reserved1;
796 U32 Reserved2;
797 U32 Flags;
798 U8 EnclosureName[16];
799 U8 NumPhys;
800 U8 Reserved3;
801 U16 Reserved4;
802 MPI_MANPAGE7_CONNECTOR_INFO ConnectorInfo[MPI_MANPAGE7_CONNECTOR_INFO_MAX];
803 } CONFIG_PAGE_MANUFACTURING_7, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_7,
804 ManufacturingPage7_t, MPI_POINTER pManufacturingPage7_t;
805
806 #define MPI_MANUFACTURING7_PAGEVERSION (0x00)
807
808
809 #define MPI_MANPAGE7_FLAG_USE_SLOT_INFO (0x00000001)
810
811
812 typedef struct _CONFIG_PAGE_MANUFACTURING_8
813 {
814 CONFIG_PAGE_HEADER Header;
815 U32 ProductSpecificInfo;
816 } CONFIG_PAGE_MANUFACTURING_8, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_8,
817 ManufacturingPage8_t, MPI_POINTER pManufacturingPage8_t;
818
819 #define MPI_MANUFACTURING8_PAGEVERSION (0x00)
820
821
822 typedef struct _CONFIG_PAGE_MANUFACTURING_9
823 {
824 CONFIG_PAGE_HEADER Header;
825 U32 ProductSpecificInfo;
826 } CONFIG_PAGE_MANUFACTURING_9, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_9,
827 ManufacturingPage9_t, MPI_POINTER pManufacturingPage9_t;
828
829 #define MPI_MANUFACTURING9_PAGEVERSION (0x00)
830
831
832 typedef struct _CONFIG_PAGE_MANUFACTURING_10
833 {
834 CONFIG_PAGE_HEADER Header;
835 U32 ProductSpecificInfo;
836 } CONFIG_PAGE_MANUFACTURING_10, MPI_POINTER PTR_CONFIG_PAGE_MANUFACTURING_10,
837 ManufacturingPage10_t, MPI_POINTER pManufacturingPage10_t;
838
839 #define MPI_MANUFACTURING10_PAGEVERSION (0x00)
840
841
842
843
844
845
846 typedef struct _CONFIG_PAGE_IO_UNIT_0
847 {
848 CONFIG_PAGE_HEADER Header;
849 U64 UniqueValue;
850 } CONFIG_PAGE_IO_UNIT_0, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_0,
851 IOUnitPage0_t, MPI_POINTER pIOUnitPage0_t;
852
853 #define MPI_IOUNITPAGE0_PAGEVERSION (0x00)
854
855
856 typedef struct _CONFIG_PAGE_IO_UNIT_1
857 {
858 CONFIG_PAGE_HEADER Header;
859 U32 Flags;
860 } CONFIG_PAGE_IO_UNIT_1, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_1,
861 IOUnitPage1_t, MPI_POINTER pIOUnitPage1_t;
862
863 #define MPI_IOUNITPAGE1_PAGEVERSION (0x02)
864
865
866 #define MPI_IOUNITPAGE1_MULTI_FUNCTION (0x00000000)
867 #define MPI_IOUNITPAGE1_SINGLE_FUNCTION (0x00000001)
868 #define MPI_IOUNITPAGE1_MULTI_PATHING (0x00000002)
869 #define MPI_IOUNITPAGE1_SINGLE_PATHING (0x00000000)
870 #define MPI_IOUNITPAGE1_IR_USE_STATIC_VOLUME_ID (0x00000004)
871 #define MPI_IOUNITPAGE1_DISABLE_QUEUE_FULL_HANDLING (0x00000020)
872 #define MPI_IOUNITPAGE1_DISABLE_IR (0x00000040)
873 #define MPI_IOUNITPAGE1_FORCE_32 (0x00000080)
874 #define MPI_IOUNITPAGE1_NATIVE_COMMAND_Q_DISABLE (0x00000100)
875 #define MPI_IOUNITPAGE1_SATA_WRITE_CACHE_DISABLE (0x00000200)
876
877 typedef struct _MPI_ADAPTER_INFO
878 {
879 U8 PciBusNumber;
880 U8 PciDeviceAndFunctionNumber;
881 U16 AdapterFlags;
882 } MPI_ADAPTER_INFO, MPI_POINTER PTR_MPI_ADAPTER_INFO,
883 MpiAdapterInfo_t, MPI_POINTER pMpiAdapterInfo_t;
884
885 #define MPI_ADAPTER_INFO_FLAGS_EMBEDDED (0x0001)
886 #define MPI_ADAPTER_INFO_FLAGS_INIT_STATUS (0x0002)
887
888 typedef struct _CONFIG_PAGE_IO_UNIT_2
889 {
890 CONFIG_PAGE_HEADER Header;
891 U32 Flags;
892 U32 BiosVersion;
893 MPI_ADAPTER_INFO AdapterOrder[4];
894 U32 Reserved1;
895 } CONFIG_PAGE_IO_UNIT_2, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_2,
896 IOUnitPage2_t, MPI_POINTER pIOUnitPage2_t;
897
898 #define MPI_IOUNITPAGE2_PAGEVERSION (0x02)
899
900 #define MPI_IOUNITPAGE2_FLAGS_PAUSE_ON_ERROR (0x00000002)
901 #define MPI_IOUNITPAGE2_FLAGS_VERBOSE_ENABLE (0x00000004)
902 #define MPI_IOUNITPAGE2_FLAGS_COLOR_VIDEO_DISABLE (0x00000008)
903 #define MPI_IOUNITPAGE2_FLAGS_DONT_HOOK_INT_40 (0x00000010)
904
905 #define MPI_IOUNITPAGE2_FLAGS_DEV_LIST_DISPLAY_MASK (0x000000E0)
906 #define MPI_IOUNITPAGE2_FLAGS_INSTALLED_DEV_DISPLAY (0x00000000)
907 #define MPI_IOUNITPAGE2_FLAGS_ADAPTER_DISPLAY (0x00000020)
908 #define MPI_IOUNITPAGE2_FLAGS_ADAPTER_DEV_DISPLAY (0x00000040)
909
910
911
912
913
914
915 #ifndef MPI_IO_UNIT_PAGE_3_GPIO_VAL_MAX
916 #define MPI_IO_UNIT_PAGE_3_GPIO_VAL_MAX (1)
917 #endif
918
919 typedef struct _CONFIG_PAGE_IO_UNIT_3
920 {
921 CONFIG_PAGE_HEADER Header;
922 U8 GPIOCount;
923 U8 Reserved1;
924 U16 Reserved2;
925 U16 GPIOVal[MPI_IO_UNIT_PAGE_3_GPIO_VAL_MAX];
926 } CONFIG_PAGE_IO_UNIT_3, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_3,
927 IOUnitPage3_t, MPI_POINTER pIOUnitPage3_t;
928
929 #define MPI_IOUNITPAGE3_PAGEVERSION (0x01)
930
931 #define MPI_IOUNITPAGE3_GPIO_FUNCTION_MASK (0xFC)
932 #define MPI_IOUNITPAGE3_GPIO_FUNCTION_SHIFT (2)
933 #define MPI_IOUNITPAGE3_GPIO_SETTING_OFF (0x00)
934 #define MPI_IOUNITPAGE3_GPIO_SETTING_ON (0x01)
935
936
937 typedef struct _CONFIG_PAGE_IO_UNIT_4
938 {
939 CONFIG_PAGE_HEADER Header;
940 U32 Reserved1;
941 SGE_SIMPLE_UNION FWImageSGE;
942 } CONFIG_PAGE_IO_UNIT_4, MPI_POINTER PTR_CONFIG_PAGE_IO_UNIT_4,
943 IOUnitPage4_t, MPI_POINTER pIOUnitPage4_t;
944
945 #define MPI_IOUNITPAGE4_PAGEVERSION (0x00)
946
947
948
949
950
951
952 typedef struct _CONFIG_PAGE_IOC_0
953 {
954 CONFIG_PAGE_HEADER Header;
955 U32 TotalNVStore;
956 U32 FreeNVStore;
957 U16 VendorID;
958 U16 DeviceID;
959 U8 RevisionID;
960 U8 Reserved[3];
961 U32 ClassCode;
962 U16 SubsystemVendorID;
963 U16 SubsystemID;
964 } CONFIG_PAGE_IOC_0, MPI_POINTER PTR_CONFIG_PAGE_IOC_0,
965 IOCPage0_t, MPI_POINTER pIOCPage0_t;
966
967 #define MPI_IOCPAGE0_PAGEVERSION (0x01)
968
969
970 typedef struct _CONFIG_PAGE_IOC_1
971 {
972 CONFIG_PAGE_HEADER Header;
973 U32 Flags;
974 U32 CoalescingTimeout;
975 U8 CoalescingDepth;
976 U8 PCISlotNum;
977 U8 Reserved[2];
978 } CONFIG_PAGE_IOC_1, MPI_POINTER PTR_CONFIG_PAGE_IOC_1,
979 IOCPage1_t, MPI_POINTER pIOCPage1_t;
980
981 #define MPI_IOCPAGE1_PAGEVERSION (0x03)
982
983
984 #define MPI_IOCPAGE1_EEDP_MODE_MASK (0x07000000)
985 #define MPI_IOCPAGE1_EEDP_MODE_OFF (0x00000000)
986 #define MPI_IOCPAGE1_EEDP_MODE_T10 (0x01000000)
987 #define MPI_IOCPAGE1_EEDP_MODE_LSI_1 (0x02000000)
988 #define MPI_IOCPAGE1_INITIATOR_CONTEXT_REPLY_DISABLE (0x00000010)
989 #define MPI_IOCPAGE1_REPLY_COALESCING (0x00000001)
990
991 #define MPI_IOCPAGE1_PCISLOTNUM_UNKNOWN (0xFF)
992
993
994 typedef struct _CONFIG_PAGE_IOC_2_RAID_VOL
995 {
996 U8 VolumeID;
997 U8 VolumeBus;
998 U8 VolumeIOC;
999 U8 VolumePageNumber;
1000 U8 VolumeType;
1001 U8 Flags;
1002 U16 Reserved3;
1003 } CONFIG_PAGE_IOC_2_RAID_VOL, MPI_POINTER PTR_CONFIG_PAGE_IOC_2_RAID_VOL,
1004 ConfigPageIoc2RaidVol_t, MPI_POINTER pConfigPageIoc2RaidVol_t;
1005
1006
1007
1008 #define MPI_RAID_VOL_TYPE_IS (0x00)
1009 #define MPI_RAID_VOL_TYPE_IME (0x01)
1010 #define MPI_RAID_VOL_TYPE_IM (0x02)
1011 #define MPI_RAID_VOL_TYPE_RAID_5 (0x03)
1012 #define MPI_RAID_VOL_TYPE_RAID_6 (0x04)
1013 #define MPI_RAID_VOL_TYPE_RAID_10 (0x05)
1014 #define MPI_RAID_VOL_TYPE_RAID_50 (0x06)
1015 #define MPI_RAID_VOL_TYPE_UNKNOWN (0xFF)
1016
1017
1018
1019 #define MPI_IOCPAGE2_FLAG_VOLUME_INACTIVE (0x08)
1020
1021
1022
1023
1024
1025 #ifndef MPI_IOC_PAGE_2_RAID_VOLUME_MAX
1026 #define MPI_IOC_PAGE_2_RAID_VOLUME_MAX (1)
1027 #endif
1028
1029 typedef struct _CONFIG_PAGE_IOC_2
1030 {
1031 CONFIG_PAGE_HEADER Header;
1032 U32 CapabilitiesFlags;
1033 U8 NumActiveVolumes;
1034 U8 MaxVolumes;
1035 U8 NumActivePhysDisks;
1036 U8 MaxPhysDisks;
1037 CONFIG_PAGE_IOC_2_RAID_VOL RaidVolume[MPI_IOC_PAGE_2_RAID_VOLUME_MAX];
1038 } CONFIG_PAGE_IOC_2, MPI_POINTER PTR_CONFIG_PAGE_IOC_2,
1039 IOCPage2_t, MPI_POINTER pIOCPage2_t;
1040
1041 #define MPI_IOCPAGE2_PAGEVERSION (0x04)
1042
1043
1044
1045 #define MPI_IOCPAGE2_CAP_FLAGS_IS_SUPPORT (0x00000001)
1046 #define MPI_IOCPAGE2_CAP_FLAGS_IME_SUPPORT (0x00000002)
1047 #define MPI_IOCPAGE2_CAP_FLAGS_IM_SUPPORT (0x00000004)
1048 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_5_SUPPORT (0x00000008)
1049 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_6_SUPPORT (0x00000010)
1050 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_10_SUPPORT (0x00000020)
1051 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_50_SUPPORT (0x00000040)
1052 #define MPI_IOCPAGE2_CAP_FLAGS_RAID_64_BIT_ADDRESSING (0x10000000)
1053 #define MPI_IOCPAGE2_CAP_FLAGS_SES_SUPPORT (0x20000000)
1054 #define MPI_IOCPAGE2_CAP_FLAGS_SAFTE_SUPPORT (0x40000000)
1055 #define MPI_IOCPAGE2_CAP_FLAGS_CROSS_CHANNEL_SUPPORT (0x80000000)
1056
1057
1058 typedef struct _IOC_3_PHYS_DISK
1059 {
1060 U8 PhysDiskID;
1061 U8 PhysDiskBus;
1062 U8 PhysDiskIOC;
1063 U8 PhysDiskNum;
1064 } IOC_3_PHYS_DISK, MPI_POINTER PTR_IOC_3_PHYS_DISK,
1065 Ioc3PhysDisk_t, MPI_POINTER pIoc3PhysDisk_t;
1066
1067
1068
1069
1070
1071 #ifndef MPI_IOC_PAGE_3_PHYSDISK_MAX
1072 #define MPI_IOC_PAGE_3_PHYSDISK_MAX (1)
1073 #endif
1074
1075 typedef struct _CONFIG_PAGE_IOC_3
1076 {
1077 CONFIG_PAGE_HEADER Header;
1078 U8 NumPhysDisks;
1079 U8 Reserved1;
1080 U16 Reserved2;
1081 IOC_3_PHYS_DISK PhysDisk[MPI_IOC_PAGE_3_PHYSDISK_MAX];
1082 } CONFIG_PAGE_IOC_3, MPI_POINTER PTR_CONFIG_PAGE_IOC_3,
1083 IOCPage3_t, MPI_POINTER pIOCPage3_t;
1084
1085 #define MPI_IOCPAGE3_PAGEVERSION (0x00)
1086
1087
1088 typedef struct _IOC_4_SEP
1089 {
1090 U8 SEPTargetID;
1091 U8 SEPBus;
1092 U16 Reserved;
1093 } IOC_4_SEP, MPI_POINTER PTR_IOC_4_SEP,
1094 Ioc4Sep_t, MPI_POINTER pIoc4Sep_t;
1095
1096
1097
1098
1099
1100 #ifndef MPI_IOC_PAGE_4_SEP_MAX
1101 #define MPI_IOC_PAGE_4_SEP_MAX (1)
1102 #endif
1103
1104 typedef struct _CONFIG_PAGE_IOC_4
1105 {
1106 CONFIG_PAGE_HEADER Header;
1107 U8 ActiveSEP;
1108 U8 MaxSEP;
1109 U16 Reserved1;
1110 IOC_4_SEP SEP[MPI_IOC_PAGE_4_SEP_MAX];
1111 } CONFIG_PAGE_IOC_4, MPI_POINTER PTR_CONFIG_PAGE_IOC_4,
1112 IOCPage4_t, MPI_POINTER pIOCPage4_t;
1113
1114 #define MPI_IOCPAGE4_PAGEVERSION (0x00)
1115
1116
1117 typedef struct _IOC_5_HOT_SPARE
1118 {
1119 U8 PhysDiskNum;
1120 U8 Reserved;
1121 U8 HotSparePool;
1122 U8 Flags;
1123 } IOC_5_HOT_SPARE, MPI_POINTER PTR_IOC_5_HOT_SPARE,
1124 Ioc5HotSpare_t, MPI_POINTER pIoc5HotSpare_t;
1125
1126
1127 #define MPI_IOC_PAGE_5_HOT_SPARE_ACTIVE (0x01)
1128
1129
1130
1131
1132
1133 #ifndef MPI_IOC_PAGE_5_HOT_SPARE_MAX
1134 #define MPI_IOC_PAGE_5_HOT_SPARE_MAX (1)
1135 #endif
1136
1137 typedef struct _CONFIG_PAGE_IOC_5
1138 {
1139 CONFIG_PAGE_HEADER Header;
1140 U32 Reserved1;
1141 U8 NumHotSpares;
1142 U8 Reserved2;
1143 U16 Reserved3;
1144 IOC_5_HOT_SPARE HotSpare[MPI_IOC_PAGE_5_HOT_SPARE_MAX];
1145 } CONFIG_PAGE_IOC_5, MPI_POINTER PTR_CONFIG_PAGE_IOC_5,
1146 IOCPage5_t, MPI_POINTER pIOCPage5_t;
1147
1148 #define MPI_IOCPAGE5_PAGEVERSION (0x00)
1149
1150 typedef struct _CONFIG_PAGE_IOC_6
1151 {
1152 CONFIG_PAGE_HEADER Header;
1153 U32 CapabilitiesFlags;
1154 U8 MaxDrivesIS;
1155 U8 MaxDrivesIM;
1156 U8 MaxDrivesIME;
1157 U8 Reserved1;
1158 U8 MinDrivesIS;
1159 U8 MinDrivesIM;
1160 U8 MinDrivesIME;
1161 U8 Reserved2;
1162 U8 MaxGlobalHotSpares;
1163 U8 Reserved3;
1164 U16 Reserved4;
1165 U32 Reserved5;
1166 U32 SupportedStripeSizeMapIS;
1167 U32 SupportedStripeSizeMapIME;
1168 U32 Reserved6;
1169 U8 MetadataSize;
1170 U8 Reserved7;
1171 U16 Reserved8;
1172 U16 MaxBadBlockTableEntries;
1173 U16 Reserved9;
1174 U16 IRNvsramUsage;
1175 U16 Reserved10;
1176 U32 IRNvsramVersion;
1177 U32 Reserved11;
1178 U32 Reserved12;
1179 } CONFIG_PAGE_IOC_6, MPI_POINTER PTR_CONFIG_PAGE_IOC_6,
1180 IOCPage6_t, MPI_POINTER pIOCPage6_t;
1181
1182 #define MPI_IOCPAGE6_PAGEVERSION (0x01)
1183
1184
1185
1186 #define MPI_IOCPAGE6_CAP_FLAGS_SSD_SUPPORT (0x00000020)
1187 #define MPI_IOCPAGE6_CAP_FLAGS_MULTIPORT_DRIVE_SUPPORT (0x00000010)
1188 #define MPI_IOCPAGE6_CAP_FLAGS_DISABLE_SMART_POLLING (0x00000008)
1189
1190 #define MPI_IOCPAGE6_CAP_FLAGS_MASK_METADATA_SIZE (0x00000006)
1191 #define MPI_IOCPAGE6_CAP_FLAGS_64MB_METADATA_SIZE (0x00000000)
1192 #define MPI_IOCPAGE6_CAP_FLAGS_512MB_METADATA_SIZE (0x00000002)
1193
1194 #define MPI_IOCPAGE6_CAP_FLAGS_GLOBAL_HOT_SPARE (0x00000001)
1195
1196
1197
1198
1199
1200
1201 typedef struct _CONFIG_PAGE_BIOS_1
1202 {
1203 CONFIG_PAGE_HEADER Header;
1204 U32 BiosOptions;
1205 U32 IOCSettings;
1206 U32 Reserved1;
1207 U32 DeviceSettings;
1208 U16 NumberOfDevices;
1209 U8 ExpanderSpinup;
1210 U8 Reserved2;
1211 U16 IOTimeoutBlockDevicesNonRM;
1212 U16 IOTimeoutSequential;
1213 U16 IOTimeoutOther;
1214 U16 IOTimeoutBlockDevicesRM;
1215 } CONFIG_PAGE_BIOS_1, MPI_POINTER PTR_CONFIG_PAGE_BIOS_1,
1216 BIOSPage1_t, MPI_POINTER pBIOSPage1_t;
1217
1218 #define MPI_BIOSPAGE1_PAGEVERSION (0x03)
1219
1220
1221 #define MPI_BIOSPAGE1_OPTIONS_SPI_ENABLE (0x00000400)
1222 #define MPI_BIOSPAGE1_OPTIONS_FC_ENABLE (0x00000200)
1223 #define MPI_BIOSPAGE1_OPTIONS_SAS_ENABLE (0x00000100)
1224 #define MPI_BIOSPAGE1_OPTIONS_DISABLE_BIOS (0x00000001)
1225
1226
1227 #define MPI_BIOSPAGE1_IOCSET_MASK_INITIAL_SPINUP_DELAY (0x0F000000)
1228 #define MPI_BIOSPAGE1_IOCSET_SHIFT_INITIAL_SPINUP_DELAY (24)
1229
1230 #define MPI_BIOSPAGE1_IOCSET_MASK_PORT_ENABLE_DELAY (0x00F00000)
1231 #define MPI_BIOSPAGE1_IOCSET_SHIFT_PORT_ENABLE_DELAY (20)
1232
1233 #define MPI_BIOSPAGE1_IOCSET_AUTO_PORT_ENABLE (0x00080000)
1234 #define MPI_BIOSPAGE1_IOCSET_DIRECT_ATTACH_SPINUP_MODE (0x00040000)
1235
1236 #define MPI_BIOSPAGE1_IOCSET_MASK_BOOT_PREFERENCE (0x00030000)
1237 #define MPI_BIOSPAGE1_IOCSET_ENCLOSURE_SLOT_BOOT (0x00000000)
1238 #define MPI_BIOSPAGE1_IOCSET_SAS_ADDRESS_BOOT (0x00010000)
1239
1240 #define MPI_BIOSPAGE1_IOCSET_MASK_MAX_TARGET_SPIN_UP (0x0000F000)
1241 #define MPI_BIOSPAGE1_IOCSET_SHIFT_MAX_TARGET_SPIN_UP (12)
1242
1243 #define MPI_BIOSPAGE1_IOCSET_MASK_SPINUP_DELAY (0x00000F00)
1244 #define MPI_BIOSPAGE1_IOCSET_SHIFT_SPINUP_DELAY (8)
1245
1246 #define MPI_BIOSPAGE1_IOCSET_MASK_RM_SETTING (0x000000C0)
1247 #define MPI_BIOSPAGE1_IOCSET_NONE_RM_SETTING (0x00000000)
1248 #define MPI_BIOSPAGE1_IOCSET_BOOT_RM_SETTING (0x00000040)
1249 #define MPI_BIOSPAGE1_IOCSET_MEDIA_RM_SETTING (0x00000080)
1250
1251 #define MPI_BIOSPAGE1_IOCSET_MASK_ADAPTER_SUPPORT (0x00000030)
1252 #define MPI_BIOSPAGE1_IOCSET_NO_SUPPORT (0x00000000)
1253 #define MPI_BIOSPAGE1_IOCSET_BIOS_SUPPORT (0x00000010)
1254 #define MPI_BIOSPAGE1_IOCSET_OS_SUPPORT (0x00000020)
1255 #define MPI_BIOSPAGE1_IOCSET_ALL_SUPPORT (0x00000030)
1256
1257 #define MPI_BIOSPAGE1_IOCSET_ALTERNATE_CHS (0x00000008)
1258
1259
1260 #define MPI_BIOSPAGE1_DEVSET_DISABLE_SMART_POLLING (0x00000010)
1261 #define MPI_BIOSPAGE1_DEVSET_DISABLE_SEQ_LUN (0x00000008)
1262 #define MPI_BIOSPAGE1_DEVSET_DISABLE_RM_LUN (0x00000004)
1263 #define MPI_BIOSPAGE1_DEVSET_DISABLE_NON_RM_LUN (0x00000002)
1264 #define MPI_BIOSPAGE1_DEVSET_DISABLE_OTHER_LUN (0x00000001)
1265
1266
1267 #define MPI_BIOSPAGE1_EXPSPINUP_MASK_MAX_TARGET (0xF0)
1268 #define MPI_BIOSPAGE1_EXPSPINUP_SHIFT_MAX_TARGET (4)
1269 #define MPI_BIOSPAGE1_EXPSPINUP_MASK_DELAY (0x0F)
1270
1271 typedef struct _MPI_BOOT_DEVICE_ADAPTER_ORDER
1272 {
1273 U32 Reserved1;
1274 U32 Reserved2;
1275 U32 Reserved3;
1276 U32 Reserved4;
1277 U32 Reserved5;
1278 U32 Reserved6;
1279 U32 Reserved7;
1280 U32 Reserved8;
1281 U32 Reserved9;
1282 U32 Reserved10;
1283 U32 Reserved11;
1284 U32 Reserved12;
1285 U32 Reserved13;
1286 U32 Reserved14;
1287 U32 Reserved15;
1288 U32 Reserved16;
1289 U32 Reserved17;
1290 } MPI_BOOT_DEVICE_ADAPTER_ORDER, MPI_POINTER PTR_MPI_BOOT_DEVICE_ADAPTER_ORDER;
1291
1292 typedef struct _MPI_BOOT_DEVICE_ADAPTER_NUMBER
1293 {
1294 U8 TargetID;
1295 U8 Bus;
1296 U8 AdapterNumber;
1297 U8 Reserved1;
1298 U32 Reserved2;
1299 U32 Reserved3;
1300 U32 Reserved4;
1301 U8 LUN[8];
1302 U32 Reserved5;
1303 U32 Reserved6;
1304 U32 Reserved7;
1305 U32 Reserved8;
1306 U32 Reserved9;
1307 U32 Reserved10;
1308 U32 Reserved11;
1309 U32 Reserved12;
1310 U32 Reserved13;
1311 U32 Reserved14;
1312 U32 Reserved15;
1313 } MPI_BOOT_DEVICE_ADAPTER_NUMBER, MPI_POINTER PTR_MPI_BOOT_DEVICE_ADAPTER_NUMBER;
1314
1315 typedef struct _MPI_BOOT_DEVICE_PCI_ADDRESS
1316 {
1317 U8 TargetID;
1318 U8 Bus;
1319 U16 PCIAddress;
1320 U32 Reserved1;
1321 U32 Reserved2;
1322 U32 Reserved3;
1323 U8 LUN[8];
1324 U32 Reserved4;
1325 U32 Reserved5;
1326 U32 Reserved6;
1327 U32 Reserved7;
1328 U32 Reserved8;
1329 U32 Reserved9;
1330 U32 Reserved10;
1331 U32 Reserved11;
1332 U32 Reserved12;
1333 U32 Reserved13;
1334 U32 Reserved14;
1335 } MPI_BOOT_DEVICE_PCI_ADDRESS, MPI_POINTER PTR_MPI_BOOT_DEVICE_PCI_ADDRESS;
1336
1337 typedef struct _MPI_BOOT_DEVICE_SLOT_NUMBER
1338 {
1339 U8 TargetID;
1340 U8 Bus;
1341 U8 PCISlotNumber;
1342 U8 Reserved1;
1343 U32 Reserved2;
1344 U32 Reserved3;
1345 U32 Reserved4;
1346 U8 LUN[8];
1347 U32 Reserved5;
1348 U32 Reserved6;
1349 U32 Reserved7;
1350 U32 Reserved8;
1351 U32 Reserved9;
1352 U32 Reserved10;
1353 U32 Reserved11;
1354 U32 Reserved12;
1355 U32 Reserved13;
1356 U32 Reserved14;
1357 U32 Reserved15;
1358 } MPI_BOOT_DEVICE_PCI_SLOT_NUMBER, MPI_POINTER PTR_MPI_BOOT_DEVICE_PCI_SLOT_NUMBER;
1359
1360 typedef struct _MPI_BOOT_DEVICE_FC_WWN
1361 {
1362 U64 WWPN;
1363 U32 Reserved1;
1364 U32 Reserved2;
1365 U8 LUN[8];
1366 U32 Reserved3;
1367 U32 Reserved4;
1368 U32 Reserved5;
1369 U32 Reserved6;
1370 U32 Reserved7;
1371 U32 Reserved8;
1372 U32 Reserved9;
1373 U32 Reserved10;
1374 U32 Reserved11;
1375 U32 Reserved12;
1376 U32 Reserved13;
1377 } MPI_BOOT_DEVICE_FC_WWN, MPI_POINTER PTR_MPI_BOOT_DEVICE_FC_WWN;
1378
1379 typedef struct _MPI_BOOT_DEVICE_SAS_WWN
1380 {
1381 U64 SASAddress;
1382 U32 Reserved1;
1383 U32 Reserved2;
1384 U8 LUN[8];
1385 U32 Reserved3;
1386 U32 Reserved4;
1387 U32 Reserved5;
1388 U32 Reserved6;
1389 U32 Reserved7;
1390 U32 Reserved8;
1391 U32 Reserved9;
1392 U32 Reserved10;
1393 U32 Reserved11;
1394 U32 Reserved12;
1395 U32 Reserved13;
1396 } MPI_BOOT_DEVICE_SAS_WWN, MPI_POINTER PTR_MPI_BOOT_DEVICE_SAS_WWN;
1397
1398 typedef struct _MPI_BOOT_DEVICE_ENCLOSURE_SLOT
1399 {
1400 U64 EnclosureLogicalID;
1401 U32 Reserved1;
1402 U32 Reserved2;
1403 U8 LUN[8];
1404 U16 SlotNumber;
1405 U16 Reserved3;
1406 U32 Reserved4;
1407 U32 Reserved5;
1408 U32 Reserved6;
1409 U32 Reserved7;
1410 U32 Reserved8;
1411 U32 Reserved9;
1412 U32 Reserved10;
1413 U32 Reserved11;
1414 U32 Reserved12;
1415 U32 Reserved13;
1416 } MPI_BOOT_DEVICE_ENCLOSURE_SLOT,
1417 MPI_POINTER PTR_MPI_BOOT_DEVICE_ENCLOSURE_SLOT;
1418
1419 typedef union _MPI_BIOSPAGE2_BOOT_DEVICE
1420 {
1421 MPI_BOOT_DEVICE_ADAPTER_ORDER AdapterOrder;
1422 MPI_BOOT_DEVICE_ADAPTER_NUMBER AdapterNumber;
1423 MPI_BOOT_DEVICE_PCI_ADDRESS PCIAddress;
1424 MPI_BOOT_DEVICE_PCI_SLOT_NUMBER PCISlotNumber;
1425 MPI_BOOT_DEVICE_FC_WWN FcWwn;
1426 MPI_BOOT_DEVICE_SAS_WWN SasWwn;
1427 MPI_BOOT_DEVICE_ENCLOSURE_SLOT EnclosureSlot;
1428 } MPI_BIOSPAGE2_BOOT_DEVICE, MPI_POINTER PTR_MPI_BIOSPAGE2_BOOT_DEVICE;
1429
1430 typedef struct _CONFIG_PAGE_BIOS_2
1431 {
1432 CONFIG_PAGE_HEADER Header;
1433 U32 Reserved1;
1434 U32 Reserved2;
1435 U32 Reserved3;
1436 U32 Reserved4;
1437 U32 Reserved5;
1438 U32 Reserved6;
1439 U8 BootDeviceForm;
1440 U8 PrevBootDeviceForm;
1441 U16 Reserved8;
1442 MPI_BIOSPAGE2_BOOT_DEVICE BootDevice;
1443 } CONFIG_PAGE_BIOS_2, MPI_POINTER PTR_CONFIG_PAGE_BIOS_2,
1444 BIOSPage2_t, MPI_POINTER pBIOSPage2_t;
1445
1446 #define MPI_BIOSPAGE2_PAGEVERSION (0x02)
1447
1448 #define MPI_BIOSPAGE2_FORM_MASK (0x0F)
1449 #define MPI_BIOSPAGE2_FORM_ADAPTER_ORDER (0x00)
1450 #define MPI_BIOSPAGE2_FORM_ADAPTER_NUMBER (0x01)
1451 #define MPI_BIOSPAGE2_FORM_PCI_ADDRESS (0x02)
1452 #define MPI_BIOSPAGE2_FORM_PCI_SLOT_NUMBER (0x03)
1453 #define MPI_BIOSPAGE2_FORM_FC_WWN (0x04)
1454 #define MPI_BIOSPAGE2_FORM_SAS_WWN (0x05)
1455 #define MPI_BIOSPAGE2_FORM_ENCLOSURE_SLOT (0x06)
1456
1457 typedef struct _CONFIG_PAGE_BIOS_4
1458 {
1459 CONFIG_PAGE_HEADER Header;
1460 U64 ReassignmentBaseWWID;
1461 } CONFIG_PAGE_BIOS_4, MPI_POINTER PTR_CONFIG_PAGE_BIOS_4,
1462 BIOSPage4_t, MPI_POINTER pBIOSPage4_t;
1463
1464 #define MPI_BIOSPAGE4_PAGEVERSION (0x00)
1465
1466
1467
1468
1469
1470
1471 typedef struct _CONFIG_PAGE_SCSI_PORT_0
1472 {
1473 CONFIG_PAGE_HEADER Header;
1474 U32 Capabilities;
1475 U32 PhysicalInterface;
1476 } CONFIG_PAGE_SCSI_PORT_0, MPI_POINTER PTR_CONFIG_PAGE_SCSI_PORT_0,
1477 SCSIPortPage0_t, MPI_POINTER pSCSIPortPage0_t;
1478
1479 #define MPI_SCSIPORTPAGE0_PAGEVERSION (0x02)
1480
1481 #define MPI_SCSIPORTPAGE0_CAP_IU (0x00000001)
1482 #define MPI_SCSIPORTPAGE0_CAP_DT (0x00000002)
1483 #define MPI_SCSIPORTPAGE0_CAP_QAS (0x00000004)
1484 #define MPI_SCSIPORTPAGE0_CAP_MIN_SYNC_PERIOD_MASK (0x0000FF00)
1485 #define MPI_SCSIPORTPAGE0_SYNC_ASYNC (0x00)
1486 #define MPI_SCSIPORTPAGE0_SYNC_5 (0x32)
1487 #define MPI_SCSIPORTPAGE0_SYNC_10 (0x19)
1488 #define MPI_SCSIPORTPAGE0_SYNC_20 (0x0C)
1489 #define MPI_SCSIPORTPAGE0_SYNC_33_33 (0x0B)
1490 #define MPI_SCSIPORTPAGE0_SYNC_40 (0x0A)
1491 #define MPI_SCSIPORTPAGE0_SYNC_80 (0x09)
1492 #define MPI_SCSIPORTPAGE0_SYNC_160 (0x08)
1493 #define MPI_SCSIPORTPAGE0_SYNC_UNKNOWN (0xFF)
1494
1495 #define MPI_SCSIPORTPAGE0_CAP_SHIFT_MIN_SYNC_PERIOD (8)
1496 #define MPI_SCSIPORTPAGE0_CAP_GET_MIN_SYNC_PERIOD(Cap) \
1497 ( ((Cap) & MPI_SCSIPORTPAGE0_CAP_MIN_SYNC_PERIOD_MASK) \
1498 >> MPI_SCSIPORTPAGE0_CAP_SHIFT_MIN_SYNC_PERIOD \
1499 )
1500 #define MPI_SCSIPORTPAGE0_CAP_MAX_SYNC_OFFSET_MASK (0x00FF0000)
1501 #define MPI_SCSIPORTPAGE0_CAP_SHIFT_MAX_SYNC_OFFSET (16)
1502 #define MPI_SCSIPORTPAGE0_CAP_GET_MAX_SYNC_OFFSET(Cap) \
1503 ( ((Cap) & MPI_SCSIPORTPAGE0_CAP_MAX_SYNC_OFFSET_MASK) \
1504 >> MPI_SCSIPORTPAGE0_CAP_SHIFT_MAX_SYNC_OFFSET \
1505 )
1506 #define MPI_SCSIPORTPAGE0_CAP_IDP (0x08000000)
1507 #define MPI_SCSIPORTPAGE0_CAP_WIDE (0x20000000)
1508 #define MPI_SCSIPORTPAGE0_CAP_AIP (0x80000000)
1509
1510 #define MPI_SCSIPORTPAGE0_PHY_SIGNAL_TYPE_MASK (0x00000003)
1511 #define MPI_SCSIPORTPAGE0_PHY_SIGNAL_HVD (0x01)
1512 #define MPI_SCSIPORTPAGE0_PHY_SIGNAL_SE (0x02)
1513 #define MPI_SCSIPORTPAGE0_PHY_SIGNAL_LVD (0x03)
1514 #define MPI_SCSIPORTPAGE0_PHY_MASK_CONNECTED_ID (0xFF000000)
1515 #define MPI_SCSIPORTPAGE0_PHY_SHIFT_CONNECTED_ID (24)
1516 #define MPI_SCSIPORTPAGE0_PHY_BUS_FREE_CONNECTED_ID (0xFE)
1517 #define MPI_SCSIPORTPAGE0_PHY_UNKNOWN_CONNECTED_ID (0xFF)
1518
1519
1520 typedef struct _CONFIG_PAGE_SCSI_PORT_1
1521 {
1522 CONFIG_PAGE_HEADER Header;
1523 U32 Configuration;
1524 U32 OnBusTimerValue;
1525 U8 TargetConfig;
1526 U8 Reserved1;
1527 U16 IDConfig;
1528 } CONFIG_PAGE_SCSI_PORT_1, MPI_POINTER PTR_CONFIG_PAGE_SCSI_PORT_1,
1529 SCSIPortPage1_t, MPI_POINTER pSCSIPortPage1_t;
1530
1531 #define MPI_SCSIPORTPAGE1_PAGEVERSION (0x03)
1532
1533
1534 #define MPI_SCSIPORTPAGE1_CFG_PORT_SCSI_ID_MASK (0x000000FF)
1535 #define MPI_SCSIPORTPAGE1_CFG_PORT_RESPONSE_ID_MASK (0xFFFF0000)
1536 #define MPI_SCSIPORTPAGE1_CFG_SHIFT_PORT_RESPONSE_ID (16)
1537
1538
1539 #define MPI_SCSIPORTPAGE1_TARGCONFIG_TARG_ONLY (0x01)
1540 #define MPI_SCSIPORTPAGE1_TARGCONFIG_INIT_TARG (0x02)
1541
1542
1543 typedef struct _MPI_DEVICE_INFO
1544 {
1545 U8 Timeout;
1546 U8 SyncFactor;
1547 U16 DeviceFlags;
1548 } MPI_DEVICE_INFO, MPI_POINTER PTR_MPI_DEVICE_INFO,
1549 MpiDeviceInfo_t, MPI_POINTER pMpiDeviceInfo_t;
1550
1551 typedef struct _CONFIG_PAGE_SCSI_PORT_2
1552 {
1553 CONFIG_PAGE_HEADER Header;
1554 U32 PortFlags;
1555 U32 PortSettings;
1556 MPI_DEVICE_INFO DeviceSettings[16];
1557 } CONFIG_PAGE_SCSI_PORT_2, MPI_POINTER PTR_CONFIG_PAGE_SCSI_PORT_2,
1558 SCSIPortPage2_t, MPI_POINTER pSCSIPortPage2_t;
1559
1560 #define MPI_SCSIPORTPAGE2_PAGEVERSION (0x02)
1561
1562
1563 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_SCAN_HIGH_TO_LOW (0x00000001)
1564 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_AVOID_SCSI_RESET (0x00000004)
1565 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_ALTERNATE_CHS (0x00000008)
1566 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_TERMINATION_DISABLE (0x00000010)
1567
1568 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_DV_MASK (0x00000060)
1569 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_FULL_DV (0x00000000)
1570 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_BASIC_DV_ONLY (0x00000020)
1571 #define MPI_SCSIPORTPAGE2_PORT_FLAGS_OFF_DV (0x00000060)
1572
1573
1574
1575 #define MPI_SCSIPORTPAGE2_PORT_HOST_ID_MASK (0x0000000F)
1576 #define MPI_SCSIPORTPAGE2_PORT_MASK_INIT_HBA (0x00000030)
1577 #define MPI_SCSIPORTPAGE2_PORT_DISABLE_INIT_HBA (0x00000000)
1578 #define MPI_SCSIPORTPAGE2_PORT_BIOS_INIT_HBA (0x00000010)
1579 #define MPI_SCSIPORTPAGE2_PORT_OS_INIT_HBA (0x00000020)
1580 #define MPI_SCSIPORTPAGE2_PORT_BIOS_OS_INIT_HBA (0x00000030)
1581 #define MPI_SCSIPORTPAGE2_PORT_REMOVABLE_MEDIA (0x000000C0)
1582 #define MPI_SCSIPORTPAGE2_PORT_RM_NONE (0x00000000)
1583 #define MPI_SCSIPORTPAGE2_PORT_RM_BOOT_ONLY (0x00000040)
1584 #define MPI_SCSIPORTPAGE2_PORT_RM_WITH_MEDIA (0x00000080)
1585 #define MPI_SCSIPORTPAGE2_PORT_SPINUP_DELAY_MASK (0x00000F00)
1586 #define MPI_SCSIPORTPAGE2_PORT_SHIFT_SPINUP_DELAY (8)
1587 #define MPI_SCSIPORTPAGE2_PORT_MASK_NEGO_MASTER_SETTINGS (0x00003000)
1588 #define MPI_SCSIPORTPAGE2_PORT_NEGO_MASTER_SETTINGS (0x00000000)
1589 #define MPI_SCSIPORTPAGE2_PORT_NONE_MASTER_SETTINGS (0x00001000)
1590 #define MPI_SCSIPORTPAGE2_PORT_ALL_MASTER_SETTINGS (0x00003000)
1591
1592 #define MPI_SCSIPORTPAGE2_DEVICE_DISCONNECT_ENABLE (0x0001)
1593 #define MPI_SCSIPORTPAGE2_DEVICE_ID_SCAN_ENABLE (0x0002)
1594 #define MPI_SCSIPORTPAGE2_DEVICE_LUN_SCAN_ENABLE (0x0004)
1595 #define MPI_SCSIPORTPAGE2_DEVICE_TAG_QUEUE_ENABLE (0x0008)
1596 #define MPI_SCSIPORTPAGE2_DEVICE_WIDE_DISABLE (0x0010)
1597 #define MPI_SCSIPORTPAGE2_DEVICE_BOOT_CHOICE (0x0020)
1598
1599
1600
1601
1602
1603
1604 typedef struct _CONFIG_PAGE_SCSI_DEVICE_0
1605 {
1606 CONFIG_PAGE_HEADER Header;
1607 U32 NegotiatedParameters;
1608 U32 Information;
1609 } CONFIG_PAGE_SCSI_DEVICE_0, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_0,
1610 SCSIDevicePage0_t, MPI_POINTER pSCSIDevicePage0_t;
1611
1612 #define MPI_SCSIDEVPAGE0_PAGEVERSION (0x04)
1613
1614 #define MPI_SCSIDEVPAGE0_NP_IU (0x00000001)
1615 #define MPI_SCSIDEVPAGE0_NP_DT (0x00000002)
1616 #define MPI_SCSIDEVPAGE0_NP_QAS (0x00000004)
1617 #define MPI_SCSIDEVPAGE0_NP_HOLD_MCS (0x00000008)
1618 #define MPI_SCSIDEVPAGE0_NP_WR_FLOW (0x00000010)
1619 #define MPI_SCSIDEVPAGE0_NP_RD_STRM (0x00000020)
1620 #define MPI_SCSIDEVPAGE0_NP_RTI (0x00000040)
1621 #define MPI_SCSIDEVPAGE0_NP_PCOMP_EN (0x00000080)
1622 #define MPI_SCSIDEVPAGE0_NP_NEG_SYNC_PERIOD_MASK (0x0000FF00)
1623 #define MPI_SCSIDEVPAGE0_NP_SHIFT_SYNC_PERIOD (8)
1624 #define MPI_SCSIDEVPAGE0_NP_NEG_SYNC_OFFSET_MASK (0x00FF0000)
1625 #define MPI_SCSIDEVPAGE0_NP_SHIFT_SYNC_OFFSET (16)
1626 #define MPI_SCSIDEVPAGE0_NP_IDP (0x08000000)
1627 #define MPI_SCSIDEVPAGE0_NP_WIDE (0x20000000)
1628 #define MPI_SCSIDEVPAGE0_NP_AIP (0x80000000)
1629
1630 #define MPI_SCSIDEVPAGE0_INFO_PARAMS_NEGOTIATED (0x00000001)
1631 #define MPI_SCSIDEVPAGE0_INFO_SDTR_REJECTED (0x00000002)
1632 #define MPI_SCSIDEVPAGE0_INFO_WDTR_REJECTED (0x00000004)
1633 #define MPI_SCSIDEVPAGE0_INFO_PPR_REJECTED (0x00000008)
1634
1635
1636 typedef struct _CONFIG_PAGE_SCSI_DEVICE_1
1637 {
1638 CONFIG_PAGE_HEADER Header;
1639 U32 RequestedParameters;
1640 U32 Reserved;
1641 U32 Configuration;
1642 } CONFIG_PAGE_SCSI_DEVICE_1, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_1,
1643 SCSIDevicePage1_t, MPI_POINTER pSCSIDevicePage1_t;
1644
1645 #define MPI_SCSIDEVPAGE1_PAGEVERSION (0x05)
1646
1647 #define MPI_SCSIDEVPAGE1_RP_IU (0x00000001)
1648 #define MPI_SCSIDEVPAGE1_RP_DT (0x00000002)
1649 #define MPI_SCSIDEVPAGE1_RP_QAS (0x00000004)
1650 #define MPI_SCSIDEVPAGE1_RP_HOLD_MCS (0x00000008)
1651 #define MPI_SCSIDEVPAGE1_RP_WR_FLOW (0x00000010)
1652 #define MPI_SCSIDEVPAGE1_RP_RD_STRM (0x00000020)
1653 #define MPI_SCSIDEVPAGE1_RP_RTI (0x00000040)
1654 #define MPI_SCSIDEVPAGE1_RP_PCOMP_EN (0x00000080)
1655 #define MPI_SCSIDEVPAGE1_RP_MIN_SYNC_PERIOD_MASK (0x0000FF00)
1656 #define MPI_SCSIDEVPAGE1_RP_SHIFT_MIN_SYNC_PERIOD (8)
1657 #define MPI_SCSIDEVPAGE1_RP_MAX_SYNC_OFFSET_MASK (0x00FF0000)
1658 #define MPI_SCSIDEVPAGE1_RP_SHIFT_MAX_SYNC_OFFSET (16)
1659 #define MPI_SCSIDEVPAGE1_RP_IDP (0x08000000)
1660 #define MPI_SCSIDEVPAGE1_RP_WIDE (0x20000000)
1661 #define MPI_SCSIDEVPAGE1_RP_AIP (0x80000000)
1662
1663 #define MPI_SCSIDEVPAGE1_CONF_WDTR_DISALLOWED (0x00000002)
1664 #define MPI_SCSIDEVPAGE1_CONF_SDTR_DISALLOWED (0x00000004)
1665 #define MPI_SCSIDEVPAGE1_CONF_EXTENDED_PARAMS_ENABLE (0x00000008)
1666 #define MPI_SCSIDEVPAGE1_CONF_FORCE_PPR_MSG (0x00000010)
1667
1668
1669 typedef struct _CONFIG_PAGE_SCSI_DEVICE_2
1670 {
1671 CONFIG_PAGE_HEADER Header;
1672 U32 DomainValidation;
1673 U32 ParityPipeSelect;
1674 U32 DataPipeSelect;
1675 } CONFIG_PAGE_SCSI_DEVICE_2, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_2,
1676 SCSIDevicePage2_t, MPI_POINTER pSCSIDevicePage2_t;
1677
1678 #define MPI_SCSIDEVPAGE2_PAGEVERSION (0x01)
1679
1680 #define MPI_SCSIDEVPAGE2_DV_ISI_ENABLE (0x00000010)
1681 #define MPI_SCSIDEVPAGE2_DV_SECONDARY_DRIVER_ENABLE (0x00000020)
1682 #define MPI_SCSIDEVPAGE2_DV_SLEW_RATE_CTRL (0x00000380)
1683 #define MPI_SCSIDEVPAGE2_DV_PRIM_DRIVE_STR_CTRL (0x00001C00)
1684 #define MPI_SCSIDEVPAGE2_DV_SECOND_DRIVE_STR_CTRL (0x0000E000)
1685 #define MPI_SCSIDEVPAGE2_DV_XCLKH_ST (0x10000000)
1686 #define MPI_SCSIDEVPAGE2_DV_XCLKS_ST (0x20000000)
1687 #define MPI_SCSIDEVPAGE2_DV_XCLKH_DT (0x40000000)
1688 #define MPI_SCSIDEVPAGE2_DV_XCLKS_DT (0x80000000)
1689
1690 #define MPI_SCSIDEVPAGE2_PPS_PPS_MASK (0x00000003)
1691
1692 #define MPI_SCSIDEVPAGE2_DPS_BIT_0_PL_SELECT_MASK (0x00000003)
1693 #define MPI_SCSIDEVPAGE2_DPS_BIT_1_PL_SELECT_MASK (0x0000000C)
1694 #define MPI_SCSIDEVPAGE2_DPS_BIT_2_PL_SELECT_MASK (0x00000030)
1695 #define MPI_SCSIDEVPAGE2_DPS_BIT_3_PL_SELECT_MASK (0x000000C0)
1696 #define MPI_SCSIDEVPAGE2_DPS_BIT_4_PL_SELECT_MASK (0x00000300)
1697 #define MPI_SCSIDEVPAGE2_DPS_BIT_5_PL_SELECT_MASK (0x00000C00)
1698 #define MPI_SCSIDEVPAGE2_DPS_BIT_6_PL_SELECT_MASK (0x00003000)
1699 #define MPI_SCSIDEVPAGE2_DPS_BIT_7_PL_SELECT_MASK (0x0000C000)
1700 #define MPI_SCSIDEVPAGE2_DPS_BIT_8_PL_SELECT_MASK (0x00030000)
1701 #define MPI_SCSIDEVPAGE2_DPS_BIT_9_PL_SELECT_MASK (0x000C0000)
1702 #define MPI_SCSIDEVPAGE2_DPS_BIT_10_PL_SELECT_MASK (0x00300000)
1703 #define MPI_SCSIDEVPAGE2_DPS_BIT_11_PL_SELECT_MASK (0x00C00000)
1704 #define MPI_SCSIDEVPAGE2_DPS_BIT_12_PL_SELECT_MASK (0x03000000)
1705 #define MPI_SCSIDEVPAGE2_DPS_BIT_13_PL_SELECT_MASK (0x0C000000)
1706 #define MPI_SCSIDEVPAGE2_DPS_BIT_14_PL_SELECT_MASK (0x30000000)
1707 #define MPI_SCSIDEVPAGE2_DPS_BIT_15_PL_SELECT_MASK (0xC0000000)
1708
1709
1710 typedef struct _CONFIG_PAGE_SCSI_DEVICE_3
1711 {
1712 CONFIG_PAGE_HEADER Header;
1713 U16 MsgRejectCount;
1714 U16 PhaseErrorCount;
1715 U16 ParityErrorCount;
1716 U16 Reserved;
1717 } CONFIG_PAGE_SCSI_DEVICE_3, MPI_POINTER PTR_CONFIG_PAGE_SCSI_DEVICE_3,
1718 SCSIDevicePage3_t, MPI_POINTER pSCSIDevicePage3_t;
1719
1720 #define MPI_SCSIDEVPAGE3_PAGEVERSION (0x00)
1721
1722 #define MPI_SCSIDEVPAGE3_MAX_COUNTER (0xFFFE)
1723 #define MPI_SCSIDEVPAGE3_UNSUPPORTED_COUNTER (0xFFFF)
1724
1725
1726
1727
1728
1729
1730 typedef struct _CONFIG_PAGE_FC_PORT_0
1731 {
1732 CONFIG_PAGE_HEADER Header;
1733 U32 Flags;
1734 U8 MPIPortNumber;
1735 U8 LinkType;
1736 U8 PortState;
1737 U8 Reserved;
1738 U32 PortIdentifier;
1739 U64 WWNN;
1740 U64 WWPN;
1741 U32 SupportedServiceClass;
1742 U32 SupportedSpeeds;
1743 U32 CurrentSpeed;
1744 U32 MaxFrameSize;
1745 U64 FabricWWNN;
1746 U64 FabricWWPN;
1747 U32 DiscoveredPortsCount;
1748 U32 MaxInitiators;
1749 U8 MaxAliasesSupported;
1750 U8 MaxHardAliasesSupported;
1751 U8 NumCurrentAliases;
1752 U8 Reserved1;
1753 } CONFIG_PAGE_FC_PORT_0, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_0,
1754 FCPortPage0_t, MPI_POINTER pFCPortPage0_t;
1755
1756 #define MPI_FCPORTPAGE0_PAGEVERSION (0x02)
1757
1758 #define MPI_FCPORTPAGE0_FLAGS_PROT_MASK (0x0000000F)
1759 #define MPI_FCPORTPAGE0_FLAGS_PROT_FCP_INIT (MPI_PORTFACTS_PROTOCOL_INITIATOR)
1760 #define MPI_FCPORTPAGE0_FLAGS_PROT_FCP_TARG (MPI_PORTFACTS_PROTOCOL_TARGET)
1761 #define MPI_FCPORTPAGE0_FLAGS_PROT_LAN (MPI_PORTFACTS_PROTOCOL_LAN)
1762 #define MPI_FCPORTPAGE0_FLAGS_PROT_LOGBUSADDR (MPI_PORTFACTS_PROTOCOL_LOGBUSADDR)
1763
1764 #define MPI_FCPORTPAGE0_FLAGS_ALIAS_ALPA_SUPPORTED (0x00000010)
1765 #define MPI_FCPORTPAGE0_FLAGS_ALIAS_WWN_SUPPORTED (0x00000020)
1766 #define MPI_FCPORTPAGE0_FLAGS_FABRIC_WWN_VALID (0x00000040)
1767
1768 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_TYPE_MASK (0x00000F00)
1769 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_NO_INIT (0x00000000)
1770 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_POINT_TO_POINT (0x00000100)
1771 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_PRIVATE_LOOP (0x00000200)
1772 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_FABRIC_DIRECT (0x00000400)
1773 #define MPI_FCPORTPAGE0_FLAGS_ATTACH_PUBLIC_LOOP (0x00000800)
1774
1775 #define MPI_FCPORTPAGE0_LTYPE_RESERVED (0x00)
1776 #define MPI_FCPORTPAGE0_LTYPE_OTHER (0x01)
1777 #define MPI_FCPORTPAGE0_LTYPE_UNKNOWN (0x02)
1778 #define MPI_FCPORTPAGE0_LTYPE_COPPER (0x03)
1779 #define MPI_FCPORTPAGE0_LTYPE_SINGLE_1300 (0x04)
1780 #define MPI_FCPORTPAGE0_LTYPE_SINGLE_1500 (0x05)
1781 #define MPI_FCPORTPAGE0_LTYPE_50_LASER_MULTI (0x06)
1782 #define MPI_FCPORTPAGE0_LTYPE_50_LED_MULTI (0x07)
1783 #define MPI_FCPORTPAGE0_LTYPE_62_LASER_MULTI (0x08)
1784 #define MPI_FCPORTPAGE0_LTYPE_62_LED_MULTI (0x09)
1785 #define MPI_FCPORTPAGE0_LTYPE_MULTI_LONG_WAVE (0x0A)
1786 #define MPI_FCPORTPAGE0_LTYPE_MULTI_SHORT_WAVE (0x0B)
1787 #define MPI_FCPORTPAGE0_LTYPE_LASER_SHORT_WAVE (0x0C)
1788 #define MPI_FCPORTPAGE0_LTYPE_LED_SHORT_WAVE (0x0D)
1789 #define MPI_FCPORTPAGE0_LTYPE_1300_LONG_WAVE (0x0E)
1790 #define MPI_FCPORTPAGE0_LTYPE_1500_LONG_WAVE (0x0F)
1791
1792 #define MPI_FCPORTPAGE0_PORTSTATE_UNKNOWN (0x01)
1793 #define MPI_FCPORTPAGE0_PORTSTATE_ONLINE (0x02)
1794 #define MPI_FCPORTPAGE0_PORTSTATE_OFFLINE (0x03)
1795 #define MPI_FCPORTPAGE0_PORTSTATE_BYPASSED (0x04)
1796 #define MPI_FCPORTPAGE0_PORTSTATE_DIAGNOST (0x05)
1797 #define MPI_FCPORTPAGE0_PORTSTATE_LINKDOWN (0x06)
1798 #define MPI_FCPORTPAGE0_PORTSTATE_ERROR (0x07)
1799 #define MPI_FCPORTPAGE0_PORTSTATE_LOOPBACK (0x08)
1800
1801 #define MPI_FCPORTPAGE0_SUPPORT_CLASS_1 (0x00000001)
1802 #define MPI_FCPORTPAGE0_SUPPORT_CLASS_2 (0x00000002)
1803 #define MPI_FCPORTPAGE0_SUPPORT_CLASS_3 (0x00000004)
1804
1805 #define MPI_FCPORTPAGE0_SUPPORT_SPEED_UNKNOWN (0x00000000)
1806 #define MPI_FCPORTPAGE0_SUPPORT_1GBIT_SPEED (0x00000001)
1807 #define MPI_FCPORTPAGE0_SUPPORT_2GBIT_SPEED (0x00000002)
1808 #define MPI_FCPORTPAGE0_SUPPORT_10GBIT_SPEED (0x00000004)
1809 #define MPI_FCPORTPAGE0_SUPPORT_4GBIT_SPEED (0x00000008)
1810
1811 #define MPI_FCPORTPAGE0_CURRENT_SPEED_UNKNOWN MPI_FCPORTPAGE0_SUPPORT_SPEED_UNKNOWN
1812 #define MPI_FCPORTPAGE0_CURRENT_SPEED_1GBIT MPI_FCPORTPAGE0_SUPPORT_1GBIT_SPEED
1813 #define MPI_FCPORTPAGE0_CURRENT_SPEED_2GBIT MPI_FCPORTPAGE0_SUPPORT_2GBIT_SPEED
1814 #define MPI_FCPORTPAGE0_CURRENT_SPEED_10GBIT MPI_FCPORTPAGE0_SUPPORT_10GBIT_SPEED
1815 #define MPI_FCPORTPAGE0_CURRENT_SPEED_4GBIT MPI_FCPORTPAGE0_SUPPORT_4GBIT_SPEED
1816 #define MPI_FCPORTPAGE0_CURRENT_SPEED_NOT_NEGOTIATED (0x00008000)
1817
1818
1819 typedef struct _CONFIG_PAGE_FC_PORT_1
1820 {
1821 CONFIG_PAGE_HEADER Header;
1822 U32 Flags;
1823 U64 NoSEEPROMWWNN;
1824 U64 NoSEEPROMWWPN;
1825 U8 HardALPA;
1826 U8 LinkConfig;
1827 U8 TopologyConfig;
1828 U8 AltConnector;
1829 U8 NumRequestedAliases;
1830 U8 RR_TOV;
1831 U8 InitiatorDeviceTimeout;
1832 U8 InitiatorIoPendTimeout;
1833 } CONFIG_PAGE_FC_PORT_1, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_1,
1834 FCPortPage1_t, MPI_POINTER pFCPortPage1_t;
1835
1836 #define MPI_FCPORTPAGE1_PAGEVERSION (0x06)
1837
1838 #define MPI_FCPORTPAGE1_FLAGS_EXT_FCP_STATUS_EN (0x08000000)
1839 #define MPI_FCPORTPAGE1_FLAGS_IMMEDIATE_ERROR_REPLY (0x04000000)
1840 #define MPI_FCPORTPAGE1_FLAGS_FORCE_USE_NOSEEPROM_WWNS (0x02000000)
1841 #define MPI_FCPORTPAGE1_FLAGS_VERBOSE_RESCAN_EVENTS (0x01000000)
1842 #define MPI_FCPORTPAGE1_FLAGS_TARGET_MODE_OXID (0x00800000)
1843 #define MPI_FCPORTPAGE1_FLAGS_PORT_OFFLINE (0x00400000)
1844 #define MPI_FCPORTPAGE1_FLAGS_SOFT_ALPA_FALLBACK (0x00200000)
1845 #define MPI_FCPORTPAGE1_FLAGS_TARGET_LARGE_CDB_ENABLE (0x00000080)
1846 #define MPI_FCPORTPAGE1_FLAGS_MASK_RR_TOV_UNITS (0x00000070)
1847 #define MPI_FCPORTPAGE1_FLAGS_SUPPRESS_PROT_REG (0x00000008)
1848 #define MPI_FCPORTPAGE1_FLAGS_PLOGI_ON_LOGO (0x00000004)
1849 #define MPI_FCPORTPAGE1_FLAGS_MAINTAIN_LOGINS (0x00000002)
1850 #define MPI_FCPORTPAGE1_FLAGS_SORT_BY_DID (0x00000001)
1851 #define MPI_FCPORTPAGE1_FLAGS_SORT_BY_WWN (0x00000000)
1852
1853 #define MPI_FCPORTPAGE1_FLAGS_PROT_MASK (0xF0000000)
1854 #define MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT (28)
1855 #define MPI_FCPORTPAGE1_FLAGS_PROT_FCP_INIT ((U32)MPI_PORTFACTS_PROTOCOL_INITIATOR << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT)
1856 #define MPI_FCPORTPAGE1_FLAGS_PROT_FCP_TARG ((U32)MPI_PORTFACTS_PROTOCOL_TARGET << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT)
1857 #define MPI_FCPORTPAGE1_FLAGS_PROT_LAN ((U32)MPI_PORTFACTS_PROTOCOL_LAN << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT)
1858 #define MPI_FCPORTPAGE1_FLAGS_PROT_LOGBUSADDR ((U32)MPI_PORTFACTS_PROTOCOL_LOGBUSADDR << MPI_FCPORTPAGE1_FLAGS_PROT_SHIFT)
1859
1860 #define MPI_FCPORTPAGE1_FLAGS_NONE_RR_TOV_UNITS (0x00000000)
1861 #define MPI_FCPORTPAGE1_FLAGS_THOUSANDTH_RR_TOV_UNITS (0x00000010)
1862 #define MPI_FCPORTPAGE1_FLAGS_TENTH_RR_TOV_UNITS (0x00000030)
1863 #define MPI_FCPORTPAGE1_FLAGS_TEN_RR_TOV_UNITS (0x00000050)
1864
1865 #define MPI_FCPORTPAGE1_HARD_ALPA_NOT_USED (0xFF)
1866
1867 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_MASK (0x0F)
1868 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_1GIG (0x00)
1869 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_2GIG (0x01)
1870 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_4GIG (0x02)
1871 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_10GIG (0x03)
1872 #define MPI_FCPORTPAGE1_LCONFIG_SPEED_AUTO (0x0F)
1873
1874 #define MPI_FCPORTPAGE1_TOPOLOGY_MASK (0x0F)
1875 #define MPI_FCPORTPAGE1_TOPOLOGY_NLPORT (0x01)
1876 #define MPI_FCPORTPAGE1_TOPOLOGY_NPORT (0x02)
1877 #define MPI_FCPORTPAGE1_TOPOLOGY_AUTO (0x0F)
1878
1879 #define MPI_FCPORTPAGE1_ALT_CONN_UNKNOWN (0x00)
1880
1881 #define MPI_FCPORTPAGE1_INITIATOR_DEV_TIMEOUT_MASK (0x7F)
1882 #define MPI_FCPORTPAGE1_INITIATOR_DEV_UNIT_16 (0x80)
1883
1884
1885 typedef struct _CONFIG_PAGE_FC_PORT_2
1886 {
1887 CONFIG_PAGE_HEADER Header;
1888 U8 NumberActive;
1889 U8 ALPA[127];
1890 } CONFIG_PAGE_FC_PORT_2, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_2,
1891 FCPortPage2_t, MPI_POINTER pFCPortPage2_t;
1892
1893 #define MPI_FCPORTPAGE2_PAGEVERSION (0x01)
1894
1895
1896 typedef struct _WWN_FORMAT
1897 {
1898 U64 WWNN;
1899 U64 WWPN;
1900 } WWN_FORMAT, MPI_POINTER PTR_WWN_FORMAT,
1901 WWNFormat, MPI_POINTER pWWNFormat;
1902
1903 typedef union _FC_PORT_PERSISTENT_PHYSICAL_ID
1904 {
1905 WWN_FORMAT WWN;
1906 U32 Did;
1907 } FC_PORT_PERSISTENT_PHYSICAL_ID, MPI_POINTER PTR_FC_PORT_PERSISTENT_PHYSICAL_ID,
1908 PersistentPhysicalId_t, MPI_POINTER pPersistentPhysicalId_t;
1909
1910 typedef struct _FC_PORT_PERSISTENT
1911 {
1912 FC_PORT_PERSISTENT_PHYSICAL_ID PhysicalIdentifier;
1913 U8 TargetID;
1914 U8 Bus;
1915 U16 Flags;
1916 } FC_PORT_PERSISTENT, MPI_POINTER PTR_FC_PORT_PERSISTENT,
1917 PersistentData_t, MPI_POINTER pPersistentData_t;
1918
1919 #define MPI_PERSISTENT_FLAGS_SHIFT (16)
1920 #define MPI_PERSISTENT_FLAGS_ENTRY_VALID (0x0001)
1921 #define MPI_PERSISTENT_FLAGS_SCAN_ID (0x0002)
1922 #define MPI_PERSISTENT_FLAGS_SCAN_LUNS (0x0004)
1923 #define MPI_PERSISTENT_FLAGS_BOOT_DEVICE (0x0008)
1924 #define MPI_PERSISTENT_FLAGS_BY_DID (0x0080)
1925
1926
1927
1928
1929
1930 #ifndef MPI_FC_PORT_PAGE_3_ENTRY_MAX
1931 #define MPI_FC_PORT_PAGE_3_ENTRY_MAX (1)
1932 #endif
1933
1934 typedef struct _CONFIG_PAGE_FC_PORT_3
1935 {
1936 CONFIG_PAGE_HEADER Header;
1937 FC_PORT_PERSISTENT Entry[MPI_FC_PORT_PAGE_3_ENTRY_MAX];
1938 } CONFIG_PAGE_FC_PORT_3, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_3,
1939 FCPortPage3_t, MPI_POINTER pFCPortPage3_t;
1940
1941 #define MPI_FCPORTPAGE3_PAGEVERSION (0x01)
1942
1943
1944 typedef struct _CONFIG_PAGE_FC_PORT_4
1945 {
1946 CONFIG_PAGE_HEADER Header;
1947 U32 PortFlags;
1948 U32 PortSettings;
1949 } CONFIG_PAGE_FC_PORT_4, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_4,
1950 FCPortPage4_t, MPI_POINTER pFCPortPage4_t;
1951
1952 #define MPI_FCPORTPAGE4_PAGEVERSION (0x00)
1953
1954 #define MPI_FCPORTPAGE4_PORT_FLAGS_ALTERNATE_CHS (0x00000008)
1955
1956 #define MPI_FCPORTPAGE4_PORT_MASK_INIT_HBA (0x00000030)
1957 #define MPI_FCPORTPAGE4_PORT_DISABLE_INIT_HBA (0x00000000)
1958 #define MPI_FCPORTPAGE4_PORT_BIOS_INIT_HBA (0x00000010)
1959 #define MPI_FCPORTPAGE4_PORT_OS_INIT_HBA (0x00000020)
1960 #define MPI_FCPORTPAGE4_PORT_BIOS_OS_INIT_HBA (0x00000030)
1961 #define MPI_FCPORTPAGE4_PORT_REMOVABLE_MEDIA (0x000000C0)
1962 #define MPI_FCPORTPAGE4_PORT_SPINUP_DELAY_MASK (0x00000F00)
1963
1964
1965 typedef struct _CONFIG_PAGE_FC_PORT_5_ALIAS_INFO
1966 {
1967 U8 Flags;
1968 U8 AliasAlpa;
1969 U16 Reserved;
1970 U64 AliasWWNN;
1971 U64 AliasWWPN;
1972 } CONFIG_PAGE_FC_PORT_5_ALIAS_INFO,
1973 MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_5_ALIAS_INFO,
1974 FcPortPage5AliasInfo_t, MPI_POINTER pFcPortPage5AliasInfo_t;
1975
1976 typedef struct _CONFIG_PAGE_FC_PORT_5
1977 {
1978 CONFIG_PAGE_HEADER Header;
1979 CONFIG_PAGE_FC_PORT_5_ALIAS_INFO AliasInfo;
1980 } CONFIG_PAGE_FC_PORT_5, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_5,
1981 FCPortPage5_t, MPI_POINTER pFCPortPage5_t;
1982
1983 #define MPI_FCPORTPAGE5_PAGEVERSION (0x02)
1984
1985 #define MPI_FCPORTPAGE5_FLAGS_ALPA_ACQUIRED (0x01)
1986 #define MPI_FCPORTPAGE5_FLAGS_HARD_ALPA (0x02)
1987 #define MPI_FCPORTPAGE5_FLAGS_HARD_WWNN (0x04)
1988 #define MPI_FCPORTPAGE5_FLAGS_HARD_WWPN (0x08)
1989 #define MPI_FCPORTPAGE5_FLAGS_DISABLE (0x10)
1990
1991 typedef struct _CONFIG_PAGE_FC_PORT_6
1992 {
1993 CONFIG_PAGE_HEADER Header;
1994 U32 Reserved;
1995 U64 TimeSinceReset;
1996 U64 TxFrames;
1997 U64 RxFrames;
1998 U64 TxWords;
1999 U64 RxWords;
2000 U64 LipCount;
2001 U64 NosCount;
2002 U64 ErrorFrames;
2003 U64 DumpedFrames;
2004 U64 LinkFailureCount;
2005 U64 LossOfSyncCount;
2006 U64 LossOfSignalCount;
2007 U64 PrimitiveSeqErrCount;
2008 U64 InvalidTxWordCount;
2009 U64 InvalidCrcCount;
2010 U64 FcpInitiatorIoCount;
2011 } CONFIG_PAGE_FC_PORT_6, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_6,
2012 FCPortPage6_t, MPI_POINTER pFCPortPage6_t;
2013
2014 #define MPI_FCPORTPAGE6_PAGEVERSION (0x00)
2015
2016
2017 typedef struct _CONFIG_PAGE_FC_PORT_7
2018 {
2019 CONFIG_PAGE_HEADER Header;
2020 U32 Reserved;
2021 U8 PortSymbolicName[256];
2022 } CONFIG_PAGE_FC_PORT_7, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_7,
2023 FCPortPage7_t, MPI_POINTER pFCPortPage7_t;
2024
2025 #define MPI_FCPORTPAGE7_PAGEVERSION (0x00)
2026
2027
2028 typedef struct _CONFIG_PAGE_FC_PORT_8
2029 {
2030 CONFIG_PAGE_HEADER Header;
2031 U32 BitVector[8];
2032 } CONFIG_PAGE_FC_PORT_8, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_8,
2033 FCPortPage8_t, MPI_POINTER pFCPortPage8_t;
2034
2035 #define MPI_FCPORTPAGE8_PAGEVERSION (0x00)
2036
2037
2038 typedef struct _CONFIG_PAGE_FC_PORT_9
2039 {
2040 CONFIG_PAGE_HEADER Header;
2041 U32 Reserved;
2042 U64 GlobalWWPN;
2043 U64 GlobalWWNN;
2044 U32 UnitType;
2045 U32 PhysicalPortNumber;
2046 U32 NumAttachedNodes;
2047 U16 IPVersion;
2048 U16 UDPPortNumber;
2049 U8 IPAddress[16];
2050 U16 Reserved1;
2051 U16 TopologyDiscoveryFlags;
2052 } CONFIG_PAGE_FC_PORT_9, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_9,
2053 FCPortPage9_t, MPI_POINTER pFCPortPage9_t;
2054
2055 #define MPI_FCPORTPAGE9_PAGEVERSION (0x00)
2056
2057
2058 typedef struct _CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA
2059 {
2060 U8 Id;
2061 U8 ExtId;
2062 U8 Connector;
2063 U8 Transceiver[8];
2064 U8 Encoding;
2065 U8 BitRate_100mbs;
2066 U8 Reserved1;
2067 U8 Length9u_km;
2068 U8 Length9u_100m;
2069 U8 Length50u_10m;
2070 U8 Length62p5u_10m;
2071 U8 LengthCopper_m;
2072 U8 Reseverved2;
2073 U8 VendorName[16];
2074 U8 Reserved3;
2075 U8 VendorOUI[3];
2076 U8 VendorPN[16];
2077 U8 VendorRev[4];
2078 U16 Wavelength;
2079 U8 Reserved4;
2080 U8 CC_BASE;
2081 } CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA,
2082 MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA,
2083 FCPortPage10BaseSfpData_t, MPI_POINTER pFCPortPage10BaseSfpData_t;
2084
2085 #define MPI_FCPORT10_BASE_ID_UNKNOWN (0x00)
2086 #define MPI_FCPORT10_BASE_ID_GBIC (0x01)
2087 #define MPI_FCPORT10_BASE_ID_FIXED (0x02)
2088 #define MPI_FCPORT10_BASE_ID_SFP (0x03)
2089 #define MPI_FCPORT10_BASE_ID_SFP_MIN (0x04)
2090 #define MPI_FCPORT10_BASE_ID_SFP_MAX (0x7F)
2091 #define MPI_FCPORT10_BASE_ID_VEND_SPEC_MASK (0x80)
2092
2093 #define MPI_FCPORT10_BASE_EXTID_UNKNOWN (0x00)
2094 #define MPI_FCPORT10_BASE_EXTID_MODDEF1 (0x01)
2095 #define MPI_FCPORT10_BASE_EXTID_MODDEF2 (0x02)
2096 #define MPI_FCPORT10_BASE_EXTID_MODDEF3 (0x03)
2097 #define MPI_FCPORT10_BASE_EXTID_SEEPROM (0x04)
2098 #define MPI_FCPORT10_BASE_EXTID_MODDEF5 (0x05)
2099 #define MPI_FCPORT10_BASE_EXTID_MODDEF6 (0x06)
2100 #define MPI_FCPORT10_BASE_EXTID_MODDEF7 (0x07)
2101 #define MPI_FCPORT10_BASE_EXTID_VNDSPC_MASK (0x80)
2102
2103 #define MPI_FCPORT10_BASE_CONN_UNKNOWN (0x00)
2104 #define MPI_FCPORT10_BASE_CONN_SC (0x01)
2105 #define MPI_FCPORT10_BASE_CONN_COPPER1 (0x02)
2106 #define MPI_FCPORT10_BASE_CONN_COPPER2 (0x03)
2107 #define MPI_FCPORT10_BASE_CONN_BNC_TNC (0x04)
2108 #define MPI_FCPORT10_BASE_CONN_COAXIAL (0x05)
2109 #define MPI_FCPORT10_BASE_CONN_FIBERJACK (0x06)
2110 #define MPI_FCPORT10_BASE_CONN_LC (0x07)
2111 #define MPI_FCPORT10_BASE_CONN_MT_RJ (0x08)
2112 #define MPI_FCPORT10_BASE_CONN_MU (0x09)
2113 #define MPI_FCPORT10_BASE_CONN_SG (0x0A)
2114 #define MPI_FCPORT10_BASE_CONN_OPT_PIGT (0x0B)
2115 #define MPI_FCPORT10_BASE_CONN_RSV1_MIN (0x0C)
2116 #define MPI_FCPORT10_BASE_CONN_RSV1_MAX (0x1F)
2117 #define MPI_FCPORT10_BASE_CONN_HSSDC_II (0x20)
2118 #define MPI_FCPORT10_BASE_CONN_CPR_PIGT (0x21)
2119 #define MPI_FCPORT10_BASE_CONN_RSV2_MIN (0x22)
2120 #define MPI_FCPORT10_BASE_CONN_RSV2_MAX (0x7F)
2121 #define MPI_FCPORT10_BASE_CONN_VNDSPC_MASK (0x80)
2122
2123 #define MPI_FCPORT10_BASE_ENCODE_UNSPEC (0x00)
2124 #define MPI_FCPORT10_BASE_ENCODE_8B10B (0x01)
2125 #define MPI_FCPORT10_BASE_ENCODE_4B5B (0x02)
2126 #define MPI_FCPORT10_BASE_ENCODE_NRZ (0x03)
2127 #define MPI_FCPORT10_BASE_ENCODE_MANCHESTER (0x04)
2128
2129
2130 typedef struct _CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA
2131 {
2132 U8 Options[2];
2133 U8 BitRateMax;
2134 U8 BitRateMin;
2135 U8 VendorSN[16];
2136 U8 DateCode[8];
2137 U8 DiagMonitoringType;
2138 U8 EnhancedOptions;
2139 U8 SFF8472Compliance;
2140 U8 CC_EXT;
2141 } CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA,
2142 MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA,
2143 FCPortPage10ExtendedSfpData_t, MPI_POINTER pFCPortPage10ExtendedSfpData_t;
2144
2145 #define MPI_FCPORT10_EXT_OPTION1_RATESEL (0x20)
2146 #define MPI_FCPORT10_EXT_OPTION1_TX_DISABLE (0x10)
2147 #define MPI_FCPORT10_EXT_OPTION1_TX_FAULT (0x08)
2148 #define MPI_FCPORT10_EXT_OPTION1_LOS_INVERT (0x04)
2149 #define MPI_FCPORT10_EXT_OPTION1_LOS (0x02)
2150
2151
2152 typedef struct _CONFIG_PAGE_FC_PORT_10
2153 {
2154 CONFIG_PAGE_HEADER Header;
2155 U8 Flags;
2156 U8 Reserved1;
2157 U16 Reserved2;
2158 U32 HwConfig1;
2159 U32 HwConfig2;
2160 CONFIG_PAGE_FC_PORT_10_BASE_SFP_DATA Base;
2161 CONFIG_PAGE_FC_PORT_10_EXTENDED_SFP_DATA Extended;
2162 U8 VendorSpecific[32];
2163 } CONFIG_PAGE_FC_PORT_10, MPI_POINTER PTR_CONFIG_PAGE_FC_PORT_10,
2164 FCPortPage10_t, MPI_POINTER pFCPortPage10_t;
2165
2166 #define MPI_FCPORTPAGE10_PAGEVERSION (0x01)
2167
2168
2169 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_MASK (0x00000007)
2170 #define MPI_FCPORTPAGE10_FLAGS_MODDEF2 (0x00000001)
2171 #define MPI_FCPORTPAGE10_FLAGS_MODDEF1 (0x00000002)
2172 #define MPI_FCPORTPAGE10_FLAGS_MODDEF0 (0x00000004)
2173 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_NOGBIC (0x00000007)
2174 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_CPR_IEEE_CX (0x00000006)
2175 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_COPPER (0x00000005)
2176 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_OPTICAL_LW (0x00000004)
2177 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_SEEPROM (0x00000003)
2178 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_SW_OPTICAL (0x00000002)
2179 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_LX_IEEE_OPT_LW (0x00000001)
2180 #define MPI_FCPORTPAGE10_FLAGS_MODDEF_SX_IEEE_OPT_SW (0x00000000)
2181
2182 #define MPI_FCPORTPAGE10_FLAGS_CC_BASE_OK (0x00000010)
2183 #define MPI_FCPORTPAGE10_FLAGS_CC_EXT_OK (0x00000020)
2184
2185
2186
2187
2188
2189
2190 typedef struct _CONFIG_PAGE_FC_DEVICE_0
2191 {
2192 CONFIG_PAGE_HEADER Header;
2193 U64 WWNN;
2194 U64 WWPN;
2195 U32 PortIdentifier;
2196 U8 Protocol;
2197 U8 Flags;
2198 U16 BBCredit;
2199 U16 MaxRxFrameSize;
2200 U8 ADISCHardALPA;
2201 U8 PortNumber;
2202 U8 FcPhLowestVersion;
2203 U8 FcPhHighestVersion;
2204 U8 CurrentTargetID;
2205 U8 CurrentBus;
2206 } CONFIG_PAGE_FC_DEVICE_0, MPI_POINTER PTR_CONFIG_PAGE_FC_DEVICE_0,
2207 FCDevicePage0_t, MPI_POINTER pFCDevicePage0_t;
2208
2209 #define MPI_FC_DEVICE_PAGE0_PAGEVERSION (0x03)
2210
2211 #define MPI_FC_DEVICE_PAGE0_FLAGS_TARGETID_BUS_VALID (0x01)
2212 #define MPI_FC_DEVICE_PAGE0_FLAGS_PLOGI_INVALID (0x02)
2213 #define MPI_FC_DEVICE_PAGE0_FLAGS_PRLI_INVALID (0x04)
2214
2215 #define MPI_FC_DEVICE_PAGE0_PROT_IP (0x01)
2216 #define MPI_FC_DEVICE_PAGE0_PROT_FCP_TARGET (0x02)
2217 #define MPI_FC_DEVICE_PAGE0_PROT_FCP_INITIATOR (0x04)
2218 #define MPI_FC_DEVICE_PAGE0_PROT_FCP_RETRY (0x08)
2219
2220 #define MPI_FC_DEVICE_PAGE0_PGAD_PORT_MASK (MPI_FC_DEVICE_PGAD_PORT_MASK)
2221 #define MPI_FC_DEVICE_PAGE0_PGAD_FORM_MASK (MPI_FC_DEVICE_PGAD_FORM_MASK)
2222 #define MPI_FC_DEVICE_PAGE0_PGAD_FORM_NEXT_DID (MPI_FC_DEVICE_PGAD_FORM_NEXT_DID)
2223 #define MPI_FC_DEVICE_PAGE0_PGAD_FORM_BUS_TID (MPI_FC_DEVICE_PGAD_FORM_BUS_TID)
2224 #define MPI_FC_DEVICE_PAGE0_PGAD_DID_MASK (MPI_FC_DEVICE_PGAD_ND_DID_MASK)
2225 #define MPI_FC_DEVICE_PAGE0_PGAD_BUS_MASK (MPI_FC_DEVICE_PGAD_BT_BUS_MASK)
2226 #define MPI_FC_DEVICE_PAGE0_PGAD_BUS_SHIFT (MPI_FC_DEVICE_PGAD_BT_BUS_SHIFT)
2227 #define MPI_FC_DEVICE_PAGE0_PGAD_TID_MASK (MPI_FC_DEVICE_PGAD_BT_TID_MASK)
2228
2229 #define MPI_FC_DEVICE_PAGE0_HARD_ALPA_UNKNOWN (0xFF)
2230
2231
2232
2233
2234
2235 typedef struct _RAID_VOL0_PHYS_DISK
2236 {
2237 U16 Reserved;
2238 U8 PhysDiskMap;
2239 U8 PhysDiskNum;
2240 } RAID_VOL0_PHYS_DISK, MPI_POINTER PTR_RAID_VOL0_PHYS_DISK,
2241 RaidVol0PhysDisk_t, MPI_POINTER pRaidVol0PhysDisk_t;
2242
2243 #define MPI_RAIDVOL0_PHYSDISK_PRIMARY (0x01)
2244 #define MPI_RAIDVOL0_PHYSDISK_SECONDARY (0x02)
2245
2246 typedef struct _RAID_VOL0_STATUS
2247 {
2248 U8 Flags;
2249 U8 State;
2250 U16 Reserved;
2251 } RAID_VOL0_STATUS, MPI_POINTER PTR_RAID_VOL0_STATUS,
2252 RaidVol0Status_t, MPI_POINTER pRaidVol0Status_t;
2253
2254
2255 #define MPI_RAIDVOL0_STATUS_FLAG_ENABLED (0x01)
2256 #define MPI_RAIDVOL0_STATUS_FLAG_QUIESCED (0x02)
2257 #define MPI_RAIDVOL0_STATUS_FLAG_RESYNC_IN_PROGRESS (0x04)
2258 #define MPI_RAIDVOL0_STATUS_FLAG_VOLUME_INACTIVE (0x08)
2259 #define MPI_RAIDVOL0_STATUS_FLAG_BAD_BLOCK_TABLE_FULL (0x10)
2260
2261 #define MPI_RAIDVOL0_STATUS_STATE_OPTIMAL (0x00)
2262 #define MPI_RAIDVOL0_STATUS_STATE_DEGRADED (0x01)
2263 #define MPI_RAIDVOL0_STATUS_STATE_FAILED (0x02)
2264 #define MPI_RAIDVOL0_STATUS_STATE_MISSING (0x03)
2265
2266 typedef struct _RAID_VOL0_SETTINGS
2267 {
2268 U16 Settings;
2269 U8 HotSparePool;
2270 U8 Reserved;
2271 } RAID_VOL0_SETTINGS, MPI_POINTER PTR_RAID_VOL0_SETTINGS,
2272 RaidVol0Settings, MPI_POINTER pRaidVol0Settings;
2273
2274
2275 #define MPI_RAIDVOL0_SETTING_WRITE_CACHING_ENABLE (0x0001)
2276 #define MPI_RAIDVOL0_SETTING_OFFLINE_ON_SMART (0x0002)
2277 #define MPI_RAIDVOL0_SETTING_AUTO_CONFIGURE (0x0004)
2278 #define MPI_RAIDVOL0_SETTING_PRIORITY_RESYNC (0x0008)
2279 #define MPI_RAIDVOL0_SETTING_FAST_DATA_SCRUBBING_0102 (0x0020)
2280
2281 #define MPI_RAIDVOL0_SETTING_MASK_METADATA_SIZE (0x00C0)
2282 #define MPI_RAIDVOL0_SETTING_64MB_METADATA_SIZE (0x0000)
2283 #define MPI_RAIDVOL0_SETTING_512MB_METADATA_SIZE (0x0040)
2284
2285 #define MPI_RAIDVOL0_SETTING_USE_PRODUCT_ID_SUFFIX (0x0010)
2286 #define MPI_RAIDVOL0_SETTING_USE_DEFAULTS (0x8000)
2287
2288
2289 #define MPI_RAID_HOT_SPARE_POOL_0 (0x01)
2290 #define MPI_RAID_HOT_SPARE_POOL_1 (0x02)
2291 #define MPI_RAID_HOT_SPARE_POOL_2 (0x04)
2292 #define MPI_RAID_HOT_SPARE_POOL_3 (0x08)
2293 #define MPI_RAID_HOT_SPARE_POOL_4 (0x10)
2294 #define MPI_RAID_HOT_SPARE_POOL_5 (0x20)
2295 #define MPI_RAID_HOT_SPARE_POOL_6 (0x40)
2296 #define MPI_RAID_HOT_SPARE_POOL_7 (0x80)
2297
2298
2299
2300
2301
2302 #ifndef MPI_RAID_VOL_PAGE_0_PHYSDISK_MAX
2303 #define MPI_RAID_VOL_PAGE_0_PHYSDISK_MAX (1)
2304 #endif
2305
2306 typedef struct _CONFIG_PAGE_RAID_VOL_0
2307 {
2308 CONFIG_PAGE_HEADER Header;
2309 U8 VolumeID;
2310 U8 VolumeBus;
2311 U8 VolumeIOC;
2312 U8 VolumeType;
2313 RAID_VOL0_STATUS VolumeStatus;
2314 RAID_VOL0_SETTINGS VolumeSettings;
2315 U32 MaxLBA;
2316 U32 MaxLBAHigh;
2317 U32 StripeSize;
2318 U32 Reserved2;
2319 U32 Reserved3;
2320 U8 NumPhysDisks;
2321 U8 DataScrubRate;
2322 U8 ResyncRate;
2323 U8 InactiveStatus;
2324 RAID_VOL0_PHYS_DISK PhysDisk[MPI_RAID_VOL_PAGE_0_PHYSDISK_MAX];
2325 } CONFIG_PAGE_RAID_VOL_0, MPI_POINTER PTR_CONFIG_PAGE_RAID_VOL_0,
2326 RaidVolumePage0_t, MPI_POINTER pRaidVolumePage0_t;
2327
2328 #define MPI_RAIDVOLPAGE0_PAGEVERSION (0x07)
2329
2330
2331 #define MPI_RAIDVOLPAGE0_UNKNOWN_INACTIVE (0x00)
2332 #define MPI_RAIDVOLPAGE0_STALE_METADATA_INACTIVE (0x01)
2333 #define MPI_RAIDVOLPAGE0_FOREIGN_VOLUME_INACTIVE (0x02)
2334 #define MPI_RAIDVOLPAGE0_INSUFFICIENT_RESOURCE_INACTIVE (0x03)
2335 #define MPI_RAIDVOLPAGE0_CLONE_VOLUME_INACTIVE (0x04)
2336 #define MPI_RAIDVOLPAGE0_INSUFFICIENT_METADATA_INACTIVE (0x05)
2337 #define MPI_RAIDVOLPAGE0_PREVIOUSLY_DELETED (0x06)
2338
2339
2340 typedef struct _CONFIG_PAGE_RAID_VOL_1
2341 {
2342 CONFIG_PAGE_HEADER Header;
2343 U8 VolumeID;
2344 U8 VolumeBus;
2345 U8 VolumeIOC;
2346 U8 Reserved0;
2347 U8 GUID[24];
2348 U8 Name[32];
2349 U64 WWID;
2350 U32 Reserved1;
2351 U32 Reserved2;
2352 } CONFIG_PAGE_RAID_VOL_1, MPI_POINTER PTR_CONFIG_PAGE_RAID_VOL_1,
2353 RaidVolumePage1_t, MPI_POINTER pRaidVolumePage1_t;
2354
2355 #define MPI_RAIDVOLPAGE1_PAGEVERSION (0x01)
2356
2357
2358
2359
2360
2361
2362 typedef struct _RAID_PHYS_DISK0_ERROR_DATA
2363 {
2364 U8 ErrorCdbByte;
2365 U8 ErrorSenseKey;
2366 U16 Reserved;
2367 U16 ErrorCount;
2368 U8 ErrorASC;
2369 U8 ErrorASCQ;
2370 U16 SmartCount;
2371 U8 SmartASC;
2372 U8 SmartASCQ;
2373 } RAID_PHYS_DISK0_ERROR_DATA, MPI_POINTER PTR_RAID_PHYS_DISK0_ERROR_DATA,
2374 RaidPhysDisk0ErrorData_t, MPI_POINTER pRaidPhysDisk0ErrorData_t;
2375
2376 typedef struct _RAID_PHYS_DISK_INQUIRY_DATA
2377 {
2378 U8 VendorID[8];
2379 U8 ProductID[16];
2380 U8 ProductRevLevel[4];
2381 U8 Info[32];
2382 } RAID_PHYS_DISK0_INQUIRY_DATA, MPI_POINTER PTR_RAID_PHYS_DISK0_INQUIRY_DATA,
2383 RaidPhysDisk0InquiryData, MPI_POINTER pRaidPhysDisk0InquiryData;
2384
2385 typedef struct _RAID_PHYS_DISK0_SETTINGS
2386 {
2387 U8 SepID;
2388 U8 SepBus;
2389 U8 HotSparePool;
2390 U8 PhysDiskSettings;
2391 } RAID_PHYS_DISK0_SETTINGS, MPI_POINTER PTR_RAID_PHYS_DISK0_SETTINGS,
2392 RaidPhysDiskSettings_t, MPI_POINTER pRaidPhysDiskSettings_t;
2393
2394 typedef struct _RAID_PHYS_DISK0_STATUS
2395 {
2396 U8 Flags;
2397 U8 State;
2398 U16 Reserved;
2399 } RAID_PHYS_DISK0_STATUS, MPI_POINTER PTR_RAID_PHYS_DISK0_STATUS,
2400 RaidPhysDiskStatus_t, MPI_POINTER pRaidPhysDiskStatus_t;
2401
2402
2403
2404 #define MPI_PHYSDISK0_STATUS_FLAG_OUT_OF_SYNC (0x01)
2405 #define MPI_PHYSDISK0_STATUS_FLAG_QUIESCED (0x02)
2406 #define MPI_PHYSDISK0_STATUS_FLAG_INACTIVE_VOLUME (0x04)
2407 #define MPI_PHYSDISK0_STATUS_FLAG_OPTIMAL_PREVIOUS (0x00)
2408 #define MPI_PHYSDISK0_STATUS_FLAG_NOT_OPTIMAL_PREVIOUS (0x08)
2409
2410 #define MPI_PHYSDISK0_STATUS_ONLINE (0x00)
2411 #define MPI_PHYSDISK0_STATUS_MISSING (0x01)
2412 #define MPI_PHYSDISK0_STATUS_NOT_COMPATIBLE (0x02)
2413 #define MPI_PHYSDISK0_STATUS_FAILED (0x03)
2414 #define MPI_PHYSDISK0_STATUS_INITIALIZING (0x04)
2415 #define MPI_PHYSDISK0_STATUS_OFFLINE_REQUESTED (0x05)
2416 #define MPI_PHYSDISK0_STATUS_FAILED_REQUESTED (0x06)
2417 #define MPI_PHYSDISK0_STATUS_OTHER_OFFLINE (0xFF)
2418
2419 typedef struct _CONFIG_PAGE_RAID_PHYS_DISK_0
2420 {
2421 CONFIG_PAGE_HEADER Header;
2422 U8 PhysDiskID;
2423 U8 PhysDiskBus;
2424 U8 PhysDiskIOC;
2425 U8 PhysDiskNum;
2426 RAID_PHYS_DISK0_SETTINGS PhysDiskSettings;
2427 U32 Reserved1;
2428 U8 ExtDiskIdentifier[8];
2429 U8 DiskIdentifier[16];
2430 RAID_PHYS_DISK0_INQUIRY_DATA InquiryData;
2431 RAID_PHYS_DISK0_STATUS PhysDiskStatus;
2432 U32 MaxLBA;
2433 RAID_PHYS_DISK0_ERROR_DATA ErrorData;
2434 } CONFIG_PAGE_RAID_PHYS_DISK_0, MPI_POINTER PTR_CONFIG_PAGE_RAID_PHYS_DISK_0,
2435 RaidPhysDiskPage0_t, MPI_POINTER pRaidPhysDiskPage0_t;
2436
2437 #define MPI_RAIDPHYSDISKPAGE0_PAGEVERSION (0x02)
2438
2439
2440 typedef struct _RAID_PHYS_DISK1_PATH
2441 {
2442 U8 PhysDiskID;
2443 U8 PhysDiskBus;
2444 U16 Reserved1;
2445 U64 WWID;
2446 U64 OwnerWWID;
2447 U8 OwnerIdentifier;
2448 U8 Reserved2;
2449 U16 Flags;
2450 } RAID_PHYS_DISK1_PATH, MPI_POINTER PTR_RAID_PHYS_DISK1_PATH,
2451 RaidPhysDisk1Path_t, MPI_POINTER pRaidPhysDisk1Path_t;
2452
2453
2454 #define MPI_RAID_PHYSDISK1_FLAG_BROKEN (0x0002)
2455 #define MPI_RAID_PHYSDISK1_FLAG_INVALID (0x0001)
2456
2457
2458
2459
2460
2461
2462 #ifndef MPI_RAID_PHYS_DISK1_PATH_MAX
2463 #define MPI_RAID_PHYS_DISK1_PATH_MAX (1)
2464 #endif
2465
2466 typedef struct _CONFIG_PAGE_RAID_PHYS_DISK_1
2467 {
2468 CONFIG_PAGE_HEADER Header;
2469 U8 NumPhysDiskPaths;
2470 U8 PhysDiskNum;
2471 U16 Reserved2;
2472 U32 Reserved1;
2473 RAID_PHYS_DISK1_PATH Path[MPI_RAID_PHYS_DISK1_PATH_MAX];
2474 } CONFIG_PAGE_RAID_PHYS_DISK_1, MPI_POINTER PTR_CONFIG_PAGE_RAID_PHYS_DISK_1,
2475 RaidPhysDiskPage1_t, MPI_POINTER pRaidPhysDiskPage1_t;
2476
2477 #define MPI_RAIDPHYSDISKPAGE1_PAGEVERSION (0x00)
2478
2479
2480
2481
2482
2483
2484 typedef struct _CONFIG_PAGE_LAN_0
2485 {
2486 ConfigPageHeader_t Header;
2487 U16 TxRxModes;
2488 U16 Reserved;
2489 U32 PacketPrePad;
2490 } CONFIG_PAGE_LAN_0, MPI_POINTER PTR_CONFIG_PAGE_LAN_0,
2491 LANPage0_t, MPI_POINTER pLANPage0_t;
2492
2493 #define MPI_LAN_PAGE0_PAGEVERSION (0x01)
2494
2495 #define MPI_LAN_PAGE0_RETURN_LOOPBACK (0x0000)
2496 #define MPI_LAN_PAGE0_SUPPRESS_LOOPBACK (0x0001)
2497 #define MPI_LAN_PAGE0_LOOPBACK_MASK (0x0001)
2498
2499 typedef struct _CONFIG_PAGE_LAN_1
2500 {
2501 ConfigPageHeader_t Header;
2502 U16 Reserved;
2503 U8 CurrentDeviceState;
2504 U8 Reserved1;
2505 U32 MinPacketSize;
2506 U32 MaxPacketSize;
2507 U32 HardwareAddressLow;
2508 U32 HardwareAddressHigh;
2509 U32 MaxWireSpeedLow;
2510 U32 MaxWireSpeedHigh;
2511 U32 BucketsRemaining;
2512 U32 MaxReplySize;
2513 U32 NegWireSpeedLow;
2514 U32 NegWireSpeedHigh;
2515 } CONFIG_PAGE_LAN_1, MPI_POINTER PTR_CONFIG_PAGE_LAN_1,
2516 LANPage1_t, MPI_POINTER pLANPage1_t;
2517
2518 #define MPI_LAN_PAGE1_PAGEVERSION (0x03)
2519
2520 #define MPI_LAN_PAGE1_DEV_STATE_RESET (0x00)
2521 #define MPI_LAN_PAGE1_DEV_STATE_OPERATIONAL (0x01)
2522
2523
2524
2525
2526
2527
2528 typedef struct _CONFIG_PAGE_INBAND_0
2529 {
2530 CONFIG_PAGE_HEADER Header;
2531 MPI_VERSION_FORMAT InbandVersion;
2532 U16 MaximumBuffers;
2533 U16 Reserved1;
2534 } CONFIG_PAGE_INBAND_0, MPI_POINTER PTR_CONFIG_PAGE_INBAND_0,
2535 InbandPage0_t, MPI_POINTER pInbandPage0_t;
2536
2537 #define MPI_INBAND_PAGEVERSION (0x00)
2538
2539
2540
2541
2542
2543
2544
2545 typedef struct _MPI_SAS_IO_UNIT0_PHY_DATA
2546 {
2547 U8 Port;
2548 U8 PortFlags;
2549 U8 PhyFlags;
2550 U8 NegotiatedLinkRate;
2551 U32 ControllerPhyDeviceInfo;
2552 U16 AttachedDeviceHandle;
2553 U16 ControllerDevHandle;
2554 U32 DiscoveryStatus;
2555 } MPI_SAS_IO_UNIT0_PHY_DATA, MPI_POINTER PTR_MPI_SAS_IO_UNIT0_PHY_DATA,
2556 SasIOUnit0PhyData, MPI_POINTER pSasIOUnit0PhyData;
2557
2558
2559
2560
2561
2562 #ifndef MPI_SAS_IOUNIT0_PHY_MAX
2563 #define MPI_SAS_IOUNIT0_PHY_MAX (1)
2564 #endif
2565
2566 typedef struct _CONFIG_PAGE_SAS_IO_UNIT_0
2567 {
2568 CONFIG_EXTENDED_PAGE_HEADER Header;
2569 U16 NvdataVersionDefault;
2570 U16 NvdataVersionPersistent;
2571 U8 NumPhys;
2572 U8 Reserved2;
2573 U16 Reserved3;
2574 MPI_SAS_IO_UNIT0_PHY_DATA PhyData[MPI_SAS_IOUNIT0_PHY_MAX];
2575 } CONFIG_PAGE_SAS_IO_UNIT_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_0,
2576 SasIOUnitPage0_t, MPI_POINTER pSasIOUnitPage0_t;
2577
2578 #define MPI_SASIOUNITPAGE0_PAGEVERSION (0x04)
2579
2580
2581 #define MPI_SAS_IOUNIT0_PORT_FLAGS_DISCOVERY_IN_PROGRESS (0x08)
2582 #define MPI_SAS_IOUNIT0_PORT_FLAGS_0_TARGET_IOC_NUM (0x00)
2583 #define MPI_SAS_IOUNIT0_PORT_FLAGS_1_TARGET_IOC_NUM (0x04)
2584 #define MPI_SAS_IOUNIT0_PORT_FLAGS_AUTO_PORT_CONFIG (0x01)
2585
2586
2587 #define MPI_SAS_IOUNIT0_PHY_FLAGS_PHY_DISABLED (0x04)
2588 #define MPI_SAS_IOUNIT0_PHY_FLAGS_TX_INVERT (0x02)
2589 #define MPI_SAS_IOUNIT0_PHY_FLAGS_RX_INVERT (0x01)
2590
2591
2592 #define MPI_SAS_IOUNIT0_RATE_UNKNOWN (0x00)
2593 #define MPI_SAS_IOUNIT0_RATE_PHY_DISABLED (0x01)
2594 #define MPI_SAS_IOUNIT0_RATE_FAILED_SPEED_NEGOTIATION (0x02)
2595 #define MPI_SAS_IOUNIT0_RATE_SATA_OOB_COMPLETE (0x03)
2596 #define MPI_SAS_IOUNIT0_RATE_1_5 (0x08)
2597 #define MPI_SAS_IOUNIT0_RATE_3_0 (0x09)
2598 #define MPI_SAS_IOUNIT0_RATE_6_0 (0x0A)
2599
2600
2601
2602
2603 #define MPI_SAS_IOUNIT0_DS_LOOP_DETECTED (0x00000001)
2604 #define MPI_SAS_IOUNIT0_DS_UNADDRESSABLE_DEVICE (0x00000002)
2605 #define MPI_SAS_IOUNIT0_DS_MULTIPLE_PORTS (0x00000004)
2606 #define MPI_SAS_IOUNIT0_DS_EXPANDER_ERR (0x00000008)
2607 #define MPI_SAS_IOUNIT0_DS_SMP_TIMEOUT (0x00000010)
2608 #define MPI_SAS_IOUNIT0_DS_OUT_ROUTE_ENTRIES (0x00000020)
2609 #define MPI_SAS_IOUNIT0_DS_INDEX_NOT_EXIST (0x00000040)
2610 #define MPI_SAS_IOUNIT0_DS_SMP_FUNCTION_FAILED (0x00000080)
2611 #define MPI_SAS_IOUNIT0_DS_SMP_CRC_ERROR (0x00000100)
2612 #define MPI_SAS_IOUNIT0_DS_SUBTRACTIVE_LINK (0x00000200)
2613 #define MPI_SAS_IOUNIT0_DS_TABLE_LINK (0x00000400)
2614 #define MPI_SAS_IOUNIT0_DS_UNSUPPORTED_DEVICE (0x00000800)
2615 #define MPI_SAS_IOUNIT0_DS_MAX_SATA_TARGETS (0x00001000)
2616 #define MPI_SAS_IOUNIT0_DS_MULTI_PORT_DOMAIN (0x00002000)
2617
2618
2619 typedef struct _MPI_SAS_IO_UNIT1_PHY_DATA
2620 {
2621 U8 Port;
2622 U8 PortFlags;
2623 U8 PhyFlags;
2624 U8 MaxMinLinkRate;
2625 U32 ControllerPhyDeviceInfo;
2626 U16 MaxTargetPortConnectTime;
2627 U16 Reserved1;
2628 } MPI_SAS_IO_UNIT1_PHY_DATA, MPI_POINTER PTR_MPI_SAS_IO_UNIT1_PHY_DATA,
2629 SasIOUnit1PhyData, MPI_POINTER pSasIOUnit1PhyData;
2630
2631
2632
2633
2634
2635 #ifndef MPI_SAS_IOUNIT1_PHY_MAX
2636 #define MPI_SAS_IOUNIT1_PHY_MAX (1)
2637 #endif
2638
2639 typedef struct _CONFIG_PAGE_SAS_IO_UNIT_1
2640 {
2641 CONFIG_EXTENDED_PAGE_HEADER Header;
2642 U16 ControlFlags;
2643 U16 MaxNumSATATargets;
2644 U16 AdditionalControlFlags;
2645 U16 Reserved1;
2646 U8 NumPhys;
2647 U8 SATAMaxQDepth;
2648 U8 ReportDeviceMissingDelay;
2649 U8 IODeviceMissingDelay;
2650 MPI_SAS_IO_UNIT1_PHY_DATA PhyData[MPI_SAS_IOUNIT1_PHY_MAX];
2651 } CONFIG_PAGE_SAS_IO_UNIT_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_1,
2652 SasIOUnitPage1_t, MPI_POINTER pSasIOUnitPage1_t;
2653
2654 #define MPI_SASIOUNITPAGE1_PAGEVERSION (0x07)
2655
2656
2657 #define MPI_SAS_IOUNIT1_CONTROL_DEVICE_SELF_TEST (0x8000)
2658 #define MPI_SAS_IOUNIT1_CONTROL_SATA_3_0_MAX (0x4000)
2659 #define MPI_SAS_IOUNIT1_CONTROL_SATA_1_5_MAX (0x2000)
2660 #define MPI_SAS_IOUNIT1_CONTROL_SATA_SW_PRESERVE (0x1000)
2661 #define MPI_SAS_IOUNIT1_CONTROL_DISABLE_SAS_HASH (0x0800)
2662
2663 #define MPI_SAS_IOUNIT1_CONTROL_MASK_DEV_SUPPORT (0x0600)
2664 #define MPI_SAS_IOUNIT1_CONTROL_SHIFT_DEV_SUPPORT (9)
2665 #define MPI_SAS_IOUNIT1_CONTROL_DEV_SUPPORT_BOTH (0x00)
2666 #define MPI_SAS_IOUNIT1_CONTROL_DEV_SAS_SUPPORT (0x01)
2667 #define MPI_SAS_IOUNIT1_CONTROL_DEV_SATA_SUPPORT (0x02)
2668
2669 #define MPI_SAS_IOUNIT1_CONTROL_POSTPONE_SATA_INIT (0x0100)
2670 #define MPI_SAS_IOUNIT1_CONTROL_SATA_48BIT_LBA_REQUIRED (0x0080)
2671 #define MPI_SAS_IOUNIT1_CONTROL_SATA_SMART_REQUIRED (0x0040)
2672 #define MPI_SAS_IOUNIT1_CONTROL_SATA_NCQ_REQUIRED (0x0020)
2673 #define MPI_SAS_IOUNIT1_CONTROL_SATA_FUA_REQUIRED (0x0010)
2674 #define MPI_SAS_IOUNIT1_CONTROL_PHY_ENABLE_ORDER_HIGH (0x0008)
2675 #define MPI_SAS_IOUNIT1_CONTROL_SUBTRACTIVE_ILLEGAL (0x0004)
2676 #define MPI_SAS_IOUNIT1_CONTROL_FIRST_LVL_DISC_ONLY (0x0002)
2677 #define MPI_SAS_IOUNIT1_CONTROL_CLEAR_AFFILIATION (0x0001)
2678
2679
2680 #define MPI_SAS_IOUNIT1_ACONTROL_MULTI_PORT_DOMAIN_ILLEGAL (0x0080)
2681 #define MPI_SAS_IOUNIT1_ACONTROL_SATA_ASYNCHROUNOUS_NOTIFICATION (0x0040)
2682 #define MPI_SAS_IOUNIT1_ACONTROL_HIDE_NONZERO_ATTACHED_PHY_IDENT (0x0020)
2683 #define MPI_SAS_IOUNIT1_ACONTROL_PORT_ENABLE_ONLY_SATA_LINK_RESET (0x0010)
2684 #define MPI_SAS_IOUNIT1_ACONTROL_OTHER_AFFILIATION_SATA_LINK_RESET (0x0008)
2685 #define MPI_SAS_IOUNIT1_ACONTROL_SELF_AFFILIATION_SATA_LINK_RESET (0x0004)
2686 #define MPI_SAS_IOUNIT1_ACONTROL_NO_AFFILIATION_SATA_LINK_RESET (0x0002)
2687 #define MPI_SAS_IOUNIT1_ACONTROL_ALLOW_TABLE_TO_TABLE (0x0001)
2688
2689
2690 #define MPI_SAS_IOUNIT1_REPORT_MISSING_TIMEOUT_MASK (0x7F)
2691 #define MPI_SAS_IOUNIT1_REPORT_MISSING_UNIT_16 (0x80)
2692
2693
2694 #define MPI_SAS_IOUNIT1_PORT_FLAGS_0_TARGET_IOC_NUM (0x00)
2695 #define MPI_SAS_IOUNIT1_PORT_FLAGS_1_TARGET_IOC_NUM (0x04)
2696 #define MPI_SAS_IOUNIT1_PORT_FLAGS_AUTO_PORT_CONFIG (0x01)
2697
2698
2699 #define MPI_SAS_IOUNIT1_PHY_FLAGS_PHY_DISABLE (0x04)
2700 #define MPI_SAS_IOUNIT1_PHY_FLAGS_TX_INVERT (0x02)
2701 #define MPI_SAS_IOUNIT1_PHY_FLAGS_RX_INVERT (0x01)
2702
2703
2704 #define MPI_SAS_IOUNIT1_MAX_RATE_MASK (0xF0)
2705 #define MPI_SAS_IOUNIT1_MAX_RATE_1_5 (0x80)
2706 #define MPI_SAS_IOUNIT1_MAX_RATE_3_0 (0x90)
2707 #define MPI_SAS_IOUNIT1_MIN_RATE_MASK (0x0F)
2708 #define MPI_SAS_IOUNIT1_MIN_RATE_1_5 (0x08)
2709 #define MPI_SAS_IOUNIT1_MIN_RATE_3_0 (0x09)
2710
2711
2712
2713
2714 typedef struct _CONFIG_PAGE_SAS_IO_UNIT_2
2715 {
2716 CONFIG_EXTENDED_PAGE_HEADER Header;
2717 U8 NumDevsPerEnclosure;
2718 U8 Reserved1;
2719 U16 Reserved2;
2720 U16 MaxPersistentIDs;
2721 U16 NumPersistentIDsUsed;
2722 U8 Status;
2723 U8 Flags;
2724 U16 MaxNumPhysicalMappedIDs;
2725 } CONFIG_PAGE_SAS_IO_UNIT_2, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_2,
2726 SasIOUnitPage2_t, MPI_POINTER pSasIOUnitPage2_t;
2727
2728 #define MPI_SASIOUNITPAGE2_PAGEVERSION (0x06)
2729
2730
2731 #define MPI_SAS_IOUNIT2_STATUS_DEVICE_LIMIT_EXCEEDED (0x08)
2732 #define MPI_SAS_IOUNIT2_STATUS_ENCLOSURE_DEVICES_UNMAPPED (0x04)
2733 #define MPI_SAS_IOUNIT2_STATUS_DISABLED_PERSISTENT_MAPPINGS (0x02)
2734 #define MPI_SAS_IOUNIT2_STATUS_FULL_PERSISTENT_MAPPINGS (0x01)
2735
2736
2737 #define MPI_SAS_IOUNIT2_FLAGS_DISABLE_PERSISTENT_MAPPINGS (0x01)
2738
2739 #define MPI_SAS_IOUNIT2_FLAGS_MASK_PHYS_MAP_MODE (0x0E)
2740 #define MPI_SAS_IOUNIT2_FLAGS_SHIFT_PHYS_MAP_MODE (1)
2741 #define MPI_SAS_IOUNIT2_FLAGS_NO_PHYS_MAP (0x00)
2742 #define MPI_SAS_IOUNIT2_FLAGS_DIRECT_ATTACH_PHYS_MAP (0x01)
2743 #define MPI_SAS_IOUNIT2_FLAGS_ENCLOSURE_SLOT_PHYS_MAP (0x02)
2744 #define MPI_SAS_IOUNIT2_FLAGS_HOST_ASSIGNED_PHYS_MAP (0x07)
2745
2746 #define MPI_SAS_IOUNIT2_FLAGS_RESERVE_ID_0_FOR_BOOT (0x10)
2747 #define MPI_SAS_IOUNIT2_FLAGS_DA_STARTING_SLOT (0x20)
2748
2749
2750 typedef struct _CONFIG_PAGE_SAS_IO_UNIT_3
2751 {
2752 CONFIG_EXTENDED_PAGE_HEADER Header;
2753 U32 Reserved1;
2754 U32 MaxInvalidDwordCount;
2755 U32 InvalidDwordCountTime;
2756 U32 MaxRunningDisparityErrorCount;
2757 U32 RunningDisparityErrorTime;
2758 U32 MaxLossDwordSynchCount;
2759 U32 LossDwordSynchCountTime;
2760 U32 MaxPhyResetProblemCount;
2761 U32 PhyResetProblemTime;
2762 } CONFIG_PAGE_SAS_IO_UNIT_3, MPI_POINTER PTR_CONFIG_PAGE_SAS_IO_UNIT_3,
2763 SasIOUnitPage3_t, MPI_POINTER pSasIOUnitPage3_t;
2764
2765 #define MPI_SASIOUNITPAGE3_PAGEVERSION (0x00)
2766
2767
2768
2769
2770
2771
2772 typedef struct _CONFIG_PAGE_SAS_EXPANDER_0
2773 {
2774 CONFIG_EXTENDED_PAGE_HEADER Header;
2775 U8 PhysicalPort;
2776 U8 Reserved1;
2777 U16 EnclosureHandle;
2778 U64 SASAddress;
2779 U32 DiscoveryStatus;
2780 U16 DevHandle;
2781 U16 ParentDevHandle;
2782 U16 ExpanderChangeCount;
2783 U16 ExpanderRouteIndexes;
2784 U8 NumPhys;
2785 U8 SASLevel;
2786 U8 Flags;
2787 U8 Reserved3;
2788 } CONFIG_PAGE_SAS_EXPANDER_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_EXPANDER_0,
2789 SasExpanderPage0_t, MPI_POINTER pSasExpanderPage0_t;
2790
2791 #define MPI_SASEXPANDER0_PAGEVERSION (0x03)
2792
2793
2794 #define MPI_SAS_EXPANDER0_DS_LOOP_DETECTED (0x00000001)
2795 #define MPI_SAS_EXPANDER0_DS_UNADDRESSABLE_DEVICE (0x00000002)
2796 #define MPI_SAS_EXPANDER0_DS_MULTIPLE_PORTS (0x00000004)
2797 #define MPI_SAS_EXPANDER0_DS_EXPANDER_ERR (0x00000008)
2798 #define MPI_SAS_EXPANDER0_DS_SMP_TIMEOUT (0x00000010)
2799 #define MPI_SAS_EXPANDER0_DS_OUT_ROUTE_ENTRIES (0x00000020)
2800 #define MPI_SAS_EXPANDER0_DS_INDEX_NOT_EXIST (0x00000040)
2801 #define MPI_SAS_EXPANDER0_DS_SMP_FUNCTION_FAILED (0x00000080)
2802 #define MPI_SAS_EXPANDER0_DS_SMP_CRC_ERROR (0x00000100)
2803 #define MPI_SAS_EXPANDER0_DS_SUBTRACTIVE_LINK (0x00000200)
2804 #define MPI_SAS_EXPANDER0_DS_TABLE_LINK (0x00000400)
2805 #define MPI_SAS_EXPANDER0_DS_UNSUPPORTED_DEVICE (0x00000800)
2806
2807
2808 #define MPI_SAS_EXPANDER0_FLAGS_CONNECTOR_END_DEVICE (0x04)
2809 #define MPI_SAS_EXPANDER0_FLAGS_ROUTE_TABLE_CONFIG (0x02)
2810 #define MPI_SAS_EXPANDER0_FLAGS_CONFIG_IN_PROGRESS (0x01)
2811
2812
2813 typedef struct _CONFIG_PAGE_SAS_EXPANDER_1
2814 {
2815 CONFIG_EXTENDED_PAGE_HEADER Header;
2816 U8 PhysicalPort;
2817 U8 Reserved1;
2818 U16 Reserved2;
2819 U8 NumPhys;
2820 U8 Phy;
2821 U16 NumTableEntriesProgrammed;
2822 U8 ProgrammedLinkRate;
2823 U8 HwLinkRate;
2824 U16 AttachedDevHandle;
2825 U32 PhyInfo;
2826 U32 AttachedDeviceInfo;
2827 U16 OwnerDevHandle;
2828 U8 ChangeCount;
2829 U8 NegotiatedLinkRate;
2830 U8 PhyIdentifier;
2831 U8 AttachedPhyIdentifier;
2832 U8 Reserved3;
2833 U8 DiscoveryInfo;
2834 U32 Reserved4;
2835 } CONFIG_PAGE_SAS_EXPANDER_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_EXPANDER_1,
2836 SasExpanderPage1_t, MPI_POINTER pSasExpanderPage1_t;
2837
2838 #define MPI_SASEXPANDER1_PAGEVERSION (0x01)
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849 #define MPI_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED (0x04)
2850 #define MPI_SAS_EXPANDER1_DISCINFO_LINK_STATUS_CHANGE (0x02)
2851 #define MPI_SAS_EXPANDER1_DISCINFO_NO_ROUTING_ENTRIES (0x01)
2852
2853
2854 #define MPI_SAS_EXPANDER1_NEG_RATE_UNKNOWN (0x00)
2855 #define MPI_SAS_EXPANDER1_NEG_RATE_PHY_DISABLED (0x01)
2856 #define MPI_SAS_EXPANDER1_NEG_RATE_FAILED_NEGOTIATION (0x02)
2857 #define MPI_SAS_EXPANDER1_NEG_RATE_SATA_OOB_COMPLETE (0x03)
2858 #define MPI_SAS_EXPANDER1_NEG_RATE_1_5 (0x08)
2859 #define MPI_SAS_EXPANDER1_NEG_RATE_3_0 (0x09)
2860
2861
2862
2863
2864
2865
2866 typedef struct _CONFIG_PAGE_SAS_DEVICE_0
2867 {
2868 CONFIG_EXTENDED_PAGE_HEADER Header;
2869 U16 Slot;
2870 U16 EnclosureHandle;
2871 U64 SASAddress;
2872 U16 ParentDevHandle;
2873 U8 PhyNum;
2874 U8 AccessStatus;
2875 U16 DevHandle;
2876 U8 TargetID;
2877 U8 Bus;
2878 U32 DeviceInfo;
2879 U16 Flags;
2880 U8 PhysicalPort;
2881 U8 Reserved2;
2882 } CONFIG_PAGE_SAS_DEVICE_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_DEVICE_0,
2883 SasDevicePage0_t, MPI_POINTER pSasDevicePage0_t;
2884
2885 #define MPI_SASDEVICE0_PAGEVERSION (0x05)
2886
2887
2888 #define MPI_SAS_DEVICE0_ASTATUS_NO_ERRORS (0x00)
2889 #define MPI_SAS_DEVICE0_ASTATUS_SATA_INIT_FAILED (0x01)
2890 #define MPI_SAS_DEVICE0_ASTATUS_SATA_CAPABILITY_FAILED (0x02)
2891 #define MPI_SAS_DEVICE0_ASTATUS_SATA_AFFILIATION_CONFLICT (0x03)
2892 #define MPI_SAS_DEVICE0_ASTATUS_SATA_NEEDS_INITIALIZATION (0x04)
2893
2894 #define MPI_SAS_DEVICE0_ASTATUS_SIF_UNKNOWN (0x10)
2895 #define MPI_SAS_DEVICE0_ASTATUS_SIF_AFFILIATION_CONFLICT (0x11)
2896 #define MPI_SAS_DEVICE0_ASTATUS_SIF_DIAG (0x12)
2897 #define MPI_SAS_DEVICE0_ASTATUS_SIF_IDENTIFICATION (0x13)
2898 #define MPI_SAS_DEVICE0_ASTATUS_SIF_CHECK_POWER (0x14)
2899 #define MPI_SAS_DEVICE0_ASTATUS_SIF_PIO_SN (0x15)
2900 #define MPI_SAS_DEVICE0_ASTATUS_SIF_MDMA_SN (0x16)
2901 #define MPI_SAS_DEVICE0_ASTATUS_SIF_UDMA_SN (0x17)
2902 #define MPI_SAS_DEVICE0_ASTATUS_SIF_ZONING_VIOLATION (0x18)
2903 #define MPI_SAS_DEVICE0_ASTATUS_SIF_NOT_ADDRESSABLE (0x19)
2904 #define MPI_SAS_DEVICE0_ASTATUS_SIF_MAX (0x1F)
2905
2906
2907 #define MPI_SAS_DEVICE0_FLAGS_SATA_ASYNCHRONOUS_NOTIFY (0x0400)
2908 #define MPI_SAS_DEVICE0_FLAGS_SATA_SW_PRESERVE (0x0200)
2909 #define MPI_SAS_DEVICE0_FLAGS_UNSUPPORTED_DEVICE (0x0100)
2910 #define MPI_SAS_DEVICE0_FLAGS_SATA_48BIT_LBA_SUPPORTED (0x0080)
2911 #define MPI_SAS_DEVICE0_FLAGS_SATA_SMART_SUPPORTED (0x0040)
2912 #define MPI_SAS_DEVICE0_FLAGS_SATA_NCQ_SUPPORTED (0x0020)
2913 #define MPI_SAS_DEVICE0_FLAGS_SATA_FUA_SUPPORTED (0x0010)
2914 #define MPI_SAS_DEVICE0_FLAGS_PORT_SELECTOR_ATTACH (0x0008)
2915 #define MPI_SAS_DEVICE0_FLAGS_MAPPING_PERSISTENT (0x0004)
2916 #define MPI_SAS_DEVICE0_FLAGS_DEVICE_MAPPED (0x0002)
2917 #define MPI_SAS_DEVICE0_FLAGS_DEVICE_PRESENT (0x0001)
2918
2919
2920
2921
2922 typedef struct _CONFIG_PAGE_SAS_DEVICE_1
2923 {
2924 CONFIG_EXTENDED_PAGE_HEADER Header;
2925 U32 Reserved1;
2926 U64 SASAddress;
2927 U32 Reserved2;
2928 U16 DevHandle;
2929 U8 TargetID;
2930 U8 Bus;
2931 U8 InitialRegDeviceFIS[20];
2932 } CONFIG_PAGE_SAS_DEVICE_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_DEVICE_1,
2933 SasDevicePage1_t, MPI_POINTER pSasDevicePage1_t;
2934
2935 #define MPI_SASDEVICE1_PAGEVERSION (0x00)
2936
2937
2938 typedef struct _CONFIG_PAGE_SAS_DEVICE_2
2939 {
2940 CONFIG_EXTENDED_PAGE_HEADER Header;
2941 U64 PhysicalIdentifier;
2942 U32 EnclosureMapping;
2943 } CONFIG_PAGE_SAS_DEVICE_2, MPI_POINTER PTR_CONFIG_PAGE_SAS_DEVICE_2,
2944 SasDevicePage2_t, MPI_POINTER pSasDevicePage2_t;
2945
2946 #define MPI_SASDEVICE2_PAGEVERSION (0x01)
2947
2948
2949 #define MPI_SASDEVICE2_ENC_MAP_MASK_MISSING_COUNT (0x0000000F)
2950 #define MPI_SASDEVICE2_ENC_MAP_SHIFT_MISSING_COUNT (0)
2951 #define MPI_SASDEVICE2_ENC_MAP_MASK_NUM_SLOTS (0x000007F0)
2952 #define MPI_SASDEVICE2_ENC_MAP_SHIFT_NUM_SLOTS (4)
2953 #define MPI_SASDEVICE2_ENC_MAP_MASK_START_INDEX (0x001FF800)
2954 #define MPI_SASDEVICE2_ENC_MAP_SHIFT_START_INDEX (11)
2955
2956
2957
2958
2959
2960
2961 typedef struct _CONFIG_PAGE_SAS_PHY_0
2962 {
2963 CONFIG_EXTENDED_PAGE_HEADER Header;
2964 U16 OwnerDevHandle;
2965 U16 Reserved1;
2966 U64 SASAddress;
2967 U16 AttachedDevHandle;
2968 U8 AttachedPhyIdentifier;
2969 U8 Reserved2;
2970 U32 AttachedDeviceInfo;
2971 U8 ProgrammedLinkRate;
2972 U8 HwLinkRate;
2973 U8 ChangeCount;
2974 U8 Flags;
2975 U32 PhyInfo;
2976 } CONFIG_PAGE_SAS_PHY_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_PHY_0,
2977 SasPhyPage0_t, MPI_POINTER pSasPhyPage0_t;
2978
2979 #define MPI_SASPHY0_PAGEVERSION (0x01)
2980
2981
2982 #define MPI_SAS_PHY0_PRATE_MAX_RATE_MASK (0xF0)
2983 #define MPI_SAS_PHY0_PRATE_MAX_RATE_NOT_PROGRAMMABLE (0x00)
2984 #define MPI_SAS_PHY0_PRATE_MAX_RATE_1_5 (0x80)
2985 #define MPI_SAS_PHY0_PRATE_MAX_RATE_3_0 (0x90)
2986 #define MPI_SAS_PHY0_PRATE_MIN_RATE_MASK (0x0F)
2987 #define MPI_SAS_PHY0_PRATE_MIN_RATE_NOT_PROGRAMMABLE (0x00)
2988 #define MPI_SAS_PHY0_PRATE_MIN_RATE_1_5 (0x08)
2989 #define MPI_SAS_PHY0_PRATE_MIN_RATE_3_0 (0x09)
2990
2991
2992 #define MPI_SAS_PHY0_HWRATE_MAX_RATE_MASK (0xF0)
2993 #define MPI_SAS_PHY0_HWRATE_MAX_RATE_1_5 (0x80)
2994 #define MPI_SAS_PHY0_HWRATE_MAX_RATE_3_0 (0x90)
2995 #define MPI_SAS_PHY0_HWRATE_MIN_RATE_MASK (0x0F)
2996 #define MPI_SAS_PHY0_HWRATE_MIN_RATE_1_5 (0x08)
2997 #define MPI_SAS_PHY0_HWRATE_MIN_RATE_3_0 (0x09)
2998
2999
3000 #define MPI_SAS_PHY0_FLAGS_SGPIO_DIRECT_ATTACH_ENC (0x01)
3001
3002
3003 #define MPI_SAS_PHY0_PHYINFO_SATA_PORT_ACTIVE (0x00004000)
3004 #define MPI_SAS_PHY0_PHYINFO_SATA_PORT_SELECTOR (0x00002000)
3005 #define MPI_SAS_PHY0_PHYINFO_VIRTUAL_PHY (0x00001000)
3006
3007 #define MPI_SAS_PHY0_PHYINFO_MASK_PARTIAL_PATHWAY_TIME (0x00000F00)
3008 #define MPI_SAS_PHY0_PHYINFO_SHIFT_PARTIAL_PATHWAY_TIME (8)
3009
3010 #define MPI_SAS_PHY0_PHYINFO_MASK_ROUTING_ATTRIBUTE (0x000000F0)
3011 #define MPI_SAS_PHY0_PHYINFO_DIRECT_ROUTING (0x00000000)
3012 #define MPI_SAS_PHY0_PHYINFO_SUBTRACTIVE_ROUTING (0x00000010)
3013 #define MPI_SAS_PHY0_PHYINFO_TABLE_ROUTING (0x00000020)
3014
3015 #define MPI_SAS_PHY0_PHYINFO_MASK_LINK_RATE (0x0000000F)
3016 #define MPI_SAS_PHY0_PHYINFO_UNKNOWN_LINK_RATE (0x00000000)
3017 #define MPI_SAS_PHY0_PHYINFO_PHY_DISABLED (0x00000001)
3018 #define MPI_SAS_PHY0_PHYINFO_NEGOTIATION_FAILED (0x00000002)
3019 #define MPI_SAS_PHY0_PHYINFO_SATA_OOB_COMPLETE (0x00000003)
3020 #define MPI_SAS_PHY0_PHYINFO_RATE_1_5 (0x00000008)
3021 #define MPI_SAS_PHY0_PHYINFO_RATE_3_0 (0x00000009)
3022
3023
3024 typedef struct _CONFIG_PAGE_SAS_PHY_1
3025 {
3026 CONFIG_EXTENDED_PAGE_HEADER Header;
3027 U32 Reserved1;
3028 U32 InvalidDwordCount;
3029 U32 RunningDisparityErrorCount;
3030 U32 LossDwordSynchCount;
3031 U32 PhyResetProblemCount;
3032 } CONFIG_PAGE_SAS_PHY_1, MPI_POINTER PTR_CONFIG_PAGE_SAS_PHY_1,
3033 SasPhyPage1_t, MPI_POINTER pSasPhyPage1_t;
3034
3035 #define MPI_SASPHY1_PAGEVERSION (0x00)
3036
3037
3038
3039
3040
3041
3042 typedef struct _CONFIG_PAGE_SAS_ENCLOSURE_0
3043 {
3044 CONFIG_EXTENDED_PAGE_HEADER Header;
3045 U32 Reserved1;
3046 U64 EnclosureLogicalID;
3047 U16 Flags;
3048 U16 EnclosureHandle;
3049 U16 NumSlots;
3050 U16 StartSlot;
3051 U8 StartTargetID;
3052 U8 StartBus;
3053 U8 SEPTargetID;
3054 U8 SEPBus;
3055 U32 Reserved2;
3056 U32 Reserved3;
3057 } CONFIG_PAGE_SAS_ENCLOSURE_0, MPI_POINTER PTR_CONFIG_PAGE_SAS_ENCLOSURE_0,
3058 SasEnclosurePage0_t, MPI_POINTER pSasEnclosurePage0_t;
3059
3060 #define MPI_SASENCLOSURE0_PAGEVERSION (0x01)
3061
3062
3063 #define MPI_SAS_ENCLS0_FLAGS_SEP_BUS_ID_VALID (0x0020)
3064 #define MPI_SAS_ENCLS0_FLAGS_START_BUS_ID_VALID (0x0010)
3065
3066 #define MPI_SAS_ENCLS0_FLAGS_MNG_MASK (0x000F)
3067 #define MPI_SAS_ENCLS0_FLAGS_MNG_UNKNOWN (0x0000)
3068 #define MPI_SAS_ENCLS0_FLAGS_MNG_IOC_SES (0x0001)
3069 #define MPI_SAS_ENCLS0_FLAGS_MNG_IOC_SGPIO (0x0002)
3070 #define MPI_SAS_ENCLS0_FLAGS_MNG_EXP_SGPIO (0x0003)
3071 #define MPI_SAS_ENCLS0_FLAGS_MNG_SES_ENCLOSURE (0x0004)
3072 #define MPI_SAS_ENCLS0_FLAGS_MNG_IOC_GPIO (0x0005)
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082 #ifndef MPI_LOG_0_NUM_LOG_ENTRIES
3083 #define MPI_LOG_0_NUM_LOG_ENTRIES (1)
3084 #endif
3085
3086 #define MPI_LOG_0_LOG_DATA_LENGTH (0x1C)
3087
3088 typedef struct _MPI_LOG_0_ENTRY
3089 {
3090 U32 TimeStamp;
3091 U32 Reserved1;
3092 U16 LogSequence;
3093 U16 LogEntryQualifier;
3094 U8 LogData[MPI_LOG_0_LOG_DATA_LENGTH];
3095 } MPI_LOG_0_ENTRY, MPI_POINTER PTR_MPI_LOG_0_ENTRY,
3096 MpiLog0Entry_t, MPI_POINTER pMpiLog0Entry_t;
3097
3098
3099 #define MPI_LOG_0_ENTRY_QUAL_ENTRY_UNUSED (0x0000)
3100 #define MPI_LOG_0_ENTRY_QUAL_POWER_ON_RESET (0x0001)
3101
3102 typedef struct _CONFIG_PAGE_LOG_0
3103 {
3104 CONFIG_EXTENDED_PAGE_HEADER Header;
3105 U32 Reserved1;
3106 U32 Reserved2;
3107 U16 NumLogEntries;
3108 U16 Reserved3;
3109 MPI_LOG_0_ENTRY LogEntry[MPI_LOG_0_NUM_LOG_ENTRIES];
3110 } CONFIG_PAGE_LOG_0, MPI_POINTER PTR_CONFIG_PAGE_LOG_0,
3111 LogPage0_t, MPI_POINTER pLogPage0_t;
3112
3113 #define MPI_LOG_0_PAGEVERSION (0x01)
3114
3115
3116 #endif
3117