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#ifndef MPI2_CNFG_H
156#define MPI2_CNFG_H
157
158
159
160
161
162
163typedef struct _MPI2_CONFIG_PAGE_HEADER
164{
165 U8 PageVersion;
166 U8 PageLength;
167 U8 PageNumber;
168 U8 PageType;
169} MPI2_CONFIG_PAGE_HEADER, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_HEADER,
170 Mpi2ConfigPageHeader_t, MPI2_POINTER pMpi2ConfigPageHeader_t;
171
172typedef union _MPI2_CONFIG_PAGE_HEADER_UNION
173{
174 MPI2_CONFIG_PAGE_HEADER Struct;
175 U8 Bytes[4];
176 U16 Word16[2];
177 U32 Word32;
178} MPI2_CONFIG_PAGE_HEADER_UNION, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_HEADER_UNION,
179 Mpi2ConfigPageHeaderUnion, MPI2_POINTER pMpi2ConfigPageHeaderUnion;
180
181
182typedef struct _MPI2_CONFIG_EXTENDED_PAGE_HEADER
183{
184 U8 PageVersion;
185 U8 Reserved1;
186 U8 PageNumber;
187 U8 PageType;
188 U16 ExtPageLength;
189 U8 ExtPageType;
190 U8 Reserved2;
191} MPI2_CONFIG_EXTENDED_PAGE_HEADER,
192 MPI2_POINTER PTR_MPI2_CONFIG_EXTENDED_PAGE_HEADER,
193 Mpi2ConfigExtendedPageHeader_t, MPI2_POINTER pMpi2ConfigExtendedPageHeader_t;
194
195typedef union _MPI2_CONFIG_EXT_PAGE_HEADER_UNION
196{
197 MPI2_CONFIG_PAGE_HEADER Struct;
198 MPI2_CONFIG_EXTENDED_PAGE_HEADER Ext;
199 U8 Bytes[8];
200 U16 Word16[4];
201 U32 Word32[2];
202} MPI2_CONFIG_EXT_PAGE_HEADER_UNION, MPI2_POINTER PTR_MPI2_CONFIG_EXT_PAGE_HEADER_UNION,
203 Mpi2ConfigPageExtendedHeaderUnion, MPI2_POINTER pMpi2ConfigPageExtendedHeaderUnion;
204
205
206
207#define MPI2_CONFIG_PAGEATTR_READ_ONLY (0x00)
208#define MPI2_CONFIG_PAGEATTR_CHANGEABLE (0x10)
209#define MPI2_CONFIG_PAGEATTR_PERSISTENT (0x20)
210#define MPI2_CONFIG_PAGEATTR_MASK (0xF0)
211
212#define MPI2_CONFIG_PAGETYPE_IO_UNIT (0x00)
213#define MPI2_CONFIG_PAGETYPE_IOC (0x01)
214#define MPI2_CONFIG_PAGETYPE_BIOS (0x02)
215#define MPI2_CONFIG_PAGETYPE_RAID_VOLUME (0x08)
216#define MPI2_CONFIG_PAGETYPE_MANUFACTURING (0x09)
217#define MPI2_CONFIG_PAGETYPE_RAID_PHYSDISK (0x0A)
218#define MPI2_CONFIG_PAGETYPE_EXTENDED (0x0F)
219#define MPI2_CONFIG_PAGETYPE_MASK (0x0F)
220
221#define MPI2_CONFIG_TYPENUM_MASK (0x0FFF)
222
223
224
225#define MPI2_CONFIG_EXTPAGETYPE_SAS_IO_UNIT (0x10)
226#define MPI2_CONFIG_EXTPAGETYPE_SAS_EXPANDER (0x11)
227#define MPI2_CONFIG_EXTPAGETYPE_SAS_DEVICE (0x12)
228#define MPI2_CONFIG_EXTPAGETYPE_SAS_PHY (0x13)
229#define MPI2_CONFIG_EXTPAGETYPE_LOG (0x14)
230#define MPI2_CONFIG_EXTPAGETYPE_ENCLOSURE (0x15)
231#define MPI2_CONFIG_EXTPAGETYPE_RAID_CONFIG (0x16)
232#define MPI2_CONFIG_EXTPAGETYPE_DRIVER_MAPPING (0x17)
233#define MPI2_CONFIG_EXTPAGETYPE_SAS_PORT (0x18)
234#define MPI2_CONFIG_EXTPAGETYPE_ETHERNET (0x19)
235#define MPI2_CONFIG_EXTPAGETYPE_EXT_MANUFACTURING (0x1A)
236
237
238
239
240
241
242
243#define MPI2_RAID_VOLUME_PGAD_FORM_MASK (0xF0000000)
244#define MPI2_RAID_VOLUME_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
245#define MPI2_RAID_VOLUME_PGAD_FORM_HANDLE (0x10000000)
246
247#define MPI2_RAID_VOLUME_PGAD_HANDLE_MASK (0x0000FFFF)
248
249
250
251#define MPI2_PHYSDISK_PGAD_FORM_MASK (0xF0000000)
252#define MPI2_PHYSDISK_PGAD_FORM_GET_NEXT_PHYSDISKNUM (0x00000000)
253#define MPI2_PHYSDISK_PGAD_FORM_PHYSDISKNUM (0x10000000)
254#define MPI2_PHYSDISK_PGAD_FORM_DEVHANDLE (0x20000000)
255
256#define MPI2_PHYSDISK_PGAD_PHYSDISKNUM_MASK (0x000000FF)
257#define MPI2_PHYSDISK_PGAD_DEVHANDLE_MASK (0x0000FFFF)
258
259
260
261#define MPI2_SAS_EXPAND_PGAD_FORM_MASK (0xF0000000)
262#define MPI2_SAS_EXPAND_PGAD_FORM_GET_NEXT_HNDL (0x00000000)
263#define MPI2_SAS_EXPAND_PGAD_FORM_HNDL_PHY_NUM (0x10000000)
264#define MPI2_SAS_EXPAND_PGAD_FORM_HNDL (0x20000000)
265
266#define MPI2_SAS_EXPAND_PGAD_HANDLE_MASK (0x0000FFFF)
267#define MPI2_SAS_EXPAND_PGAD_PHYNUM_MASK (0x00FF0000)
268#define MPI2_SAS_EXPAND_PGAD_PHYNUM_SHIFT (16)
269
270
271
272#define MPI2_SAS_DEVICE_PGAD_FORM_MASK (0xF0000000)
273#define MPI2_SAS_DEVICE_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
274#define MPI2_SAS_DEVICE_PGAD_FORM_HANDLE (0x20000000)
275
276#define MPI2_SAS_DEVICE_PGAD_HANDLE_MASK (0x0000FFFF)
277
278
279
280#define MPI2_SAS_PHY_PGAD_FORM_MASK (0xF0000000)
281#define MPI2_SAS_PHY_PGAD_FORM_PHY_NUMBER (0x00000000)
282#define MPI2_SAS_PHY_PGAD_FORM_PHY_TBL_INDEX (0x10000000)
283
284#define MPI2_SAS_PHY_PGAD_PHY_NUMBER_MASK (0x000000FF)
285#define MPI2_SAS_PHY_PGAD_PHY_TBL_INDEX_MASK (0x0000FFFF)
286
287
288
289#define MPI2_SASPORT_PGAD_FORM_MASK (0xF0000000)
290#define MPI2_SASPORT_PGAD_FORM_GET_NEXT_PORT (0x00000000)
291#define MPI2_SASPORT_PGAD_FORM_PORT_NUM (0x10000000)
292
293#define MPI2_SASPORT_PGAD_PORTNUMBER_MASK (0x00000FFF)
294
295
296
297#define MPI2_SAS_ENCLOS_PGAD_FORM_MASK (0xF0000000)
298#define MPI2_SAS_ENCLOS_PGAD_FORM_GET_NEXT_HANDLE (0x00000000)
299#define MPI2_SAS_ENCLOS_PGAD_FORM_HANDLE (0x10000000)
300
301#define MPI2_SAS_ENCLOS_PGAD_HANDLE_MASK (0x0000FFFF)
302
303
304
305#define MPI2_RAID_PGAD_FORM_MASK (0xF0000000)
306#define MPI2_RAID_PGAD_FORM_GET_NEXT_CONFIGNUM (0x00000000)
307#define MPI2_RAID_PGAD_FORM_CONFIGNUM (0x10000000)
308#define MPI2_RAID_PGAD_FORM_ACTIVE_CONFIG (0x20000000)
309
310#define MPI2_RAID_PGAD_CONFIGNUM_MASK (0x000000FF)
311
312
313
314#define MPI2_DPM_PGAD_FORM_MASK (0xF0000000)
315#define MPI2_DPM_PGAD_FORM_ENTRY_RANGE (0x00000000)
316
317#define MPI2_DPM_PGAD_ENTRY_COUNT_MASK (0x0FFF0000)
318#define MPI2_DPM_PGAD_ENTRY_COUNT_SHIFT (16)
319#define MPI2_DPM_PGAD_START_ENTRY_MASK (0x0000FFFF)
320
321
322
323#define MPI2_ETHERNET_PGAD_FORM_MASK (0xF0000000)
324#define MPI2_ETHERNET_PGAD_FORM_IF_NUM (0x00000000)
325
326#define MPI2_ETHERNET_PGAD_IF_NUMBER_MASK (0x000000FF)
327
328
329
330
331
332
333
334
335typedef struct _MPI2_CONFIG_REQUEST
336{
337 U8 Action;
338 U8 SGLFlags;
339 U8 ChainOffset;
340 U8 Function;
341 U16 ExtPageLength;
342 U8 ExtPageType;
343 U8 MsgFlags;
344 U8 VP_ID;
345 U8 VF_ID;
346 U16 Reserved1;
347 U8 Reserved2;
348 U8 ProxyVF_ID;
349 U16 Reserved4;
350 U32 Reserved3;
351 MPI2_CONFIG_PAGE_HEADER Header;
352 U32 PageAddress;
353 MPI2_SGE_IO_UNION PageBufferSGE;
354} MPI2_CONFIG_REQUEST, MPI2_POINTER PTR_MPI2_CONFIG_REQUEST,
355 Mpi2ConfigRequest_t, MPI2_POINTER pMpi2ConfigRequest_t;
356
357
358#define MPI2_CONFIG_ACTION_PAGE_HEADER (0x00)
359#define MPI2_CONFIG_ACTION_PAGE_READ_CURRENT (0x01)
360#define MPI2_CONFIG_ACTION_PAGE_WRITE_CURRENT (0x02)
361#define MPI2_CONFIG_ACTION_PAGE_DEFAULT (0x03)
362#define MPI2_CONFIG_ACTION_PAGE_WRITE_NVRAM (0x04)
363#define MPI2_CONFIG_ACTION_PAGE_READ_DEFAULT (0x05)
364#define MPI2_CONFIG_ACTION_PAGE_READ_NVRAM (0x06)
365#define MPI2_CONFIG_ACTION_PAGE_GET_CHANGEABLE (0x07)
366
367
368
369
370
371typedef struct _MPI2_CONFIG_REPLY
372{
373 U8 Action;
374 U8 SGLFlags;
375 U8 MsgLength;
376 U8 Function;
377 U16 ExtPageLength;
378 U8 ExtPageType;
379 U8 MsgFlags;
380 U8 VP_ID;
381 U8 VF_ID;
382 U16 Reserved1;
383 U16 Reserved2;
384 U16 IOCStatus;
385 U32 IOCLogInfo;
386 MPI2_CONFIG_PAGE_HEADER Header;
387} MPI2_CONFIG_REPLY, MPI2_POINTER PTR_MPI2_CONFIG_REPLY,
388 Mpi2ConfigReply_t, MPI2_POINTER pMpi2ConfigReply_t;
389
390
391
392
393
394
395
396
397
398
399
400
401
402#define MPI2_MFGPAGE_VENDORID_LSI (0x1000)
403
404
405#define MPI2_MFGPAGE_DEVID_SAS2004 (0x0070)
406#define MPI2_MFGPAGE_DEVID_SAS2008 (0x0072)
407#define MPI2_MFGPAGE_DEVID_SAS2108_1 (0x0074)
408#define MPI2_MFGPAGE_DEVID_SAS2108_2 (0x0076)
409#define MPI2_MFGPAGE_DEVID_SAS2108_3 (0x0077)
410#define MPI2_MFGPAGE_DEVID_SAS2116_1 (0x0064)
411#define MPI2_MFGPAGE_DEVID_SAS2116_2 (0x0065)
412
413#define MPI2_MFGPAGE_DEVID_SSS6200 (0x007E)
414
415#define MPI2_MFGPAGE_DEVID_SAS2208_1 (0x0080)
416#define MPI2_MFGPAGE_DEVID_SAS2208_2 (0x0081)
417#define MPI2_MFGPAGE_DEVID_SAS2208_3 (0x0082)
418#define MPI2_MFGPAGE_DEVID_SAS2208_4 (0x0083)
419#define MPI2_MFGPAGE_DEVID_SAS2208_5 (0x0084)
420#define MPI2_MFGPAGE_DEVID_SAS2208_6 (0x0085)
421#define MPI2_MFGPAGE_DEVID_SAS2308_1 (0x0086)
422#define MPI2_MFGPAGE_DEVID_SAS2308_2 (0x0087)
423#define MPI2_MFGPAGE_DEVID_SAS2308_3 (0x006E)
424
425
426
427
428
429
430typedef struct _MPI2_CONFIG_PAGE_MAN_0
431{
432 MPI2_CONFIG_PAGE_HEADER Header;
433 U8 ChipName[16];
434 U8 ChipRevision[8];
435 U8 BoardName[16];
436 U8 BoardAssembly[16];
437 U8 BoardTracerNumber[16];
438} MPI2_CONFIG_PAGE_MAN_0,
439 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_0,
440 Mpi2ManufacturingPage0_t, MPI2_POINTER pMpi2ManufacturingPage0_t;
441
442#define MPI2_MANUFACTURING0_PAGEVERSION (0x00)
443
444
445
446
447typedef struct _MPI2_CONFIG_PAGE_MAN_1
448{
449 MPI2_CONFIG_PAGE_HEADER Header;
450 U8 VPD[256];
451} MPI2_CONFIG_PAGE_MAN_1,
452 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_1,
453 Mpi2ManufacturingPage1_t, MPI2_POINTER pMpi2ManufacturingPage1_t;
454
455#define MPI2_MANUFACTURING1_PAGEVERSION (0x00)
456
457
458typedef struct _MPI2_CHIP_REVISION_ID
459{
460 U16 DeviceID;
461 U8 PCIRevisionID;
462 U8 Reserved;
463} MPI2_CHIP_REVISION_ID, MPI2_POINTER PTR_MPI2_CHIP_REVISION_ID,
464 Mpi2ChipRevisionId_t, MPI2_POINTER pMpi2ChipRevisionId_t;
465
466
467
468
469
470
471
472
473#ifndef MPI2_MAN_PAGE_2_HW_SETTINGS_WORDS
474#define MPI2_MAN_PAGE_2_HW_SETTINGS_WORDS (1)
475#endif
476
477typedef struct _MPI2_CONFIG_PAGE_MAN_2
478{
479 MPI2_CONFIG_PAGE_HEADER Header;
480 MPI2_CHIP_REVISION_ID ChipId;
481 U32 HwSettings[MPI2_MAN_PAGE_2_HW_SETTINGS_WORDS];
482} MPI2_CONFIG_PAGE_MAN_2,
483 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_2,
484 Mpi2ManufacturingPage2_t, MPI2_POINTER pMpi2ManufacturingPage2_t;
485
486#define MPI2_MANUFACTURING2_PAGEVERSION (0x00)
487
488
489
490
491
492
493
494
495#ifndef MPI2_MAN_PAGE_3_INFO_WORDS
496#define MPI2_MAN_PAGE_3_INFO_WORDS (1)
497#endif
498
499typedef struct _MPI2_CONFIG_PAGE_MAN_3
500{
501 MPI2_CONFIG_PAGE_HEADER Header;
502 MPI2_CHIP_REVISION_ID ChipId;
503 U32 Info[MPI2_MAN_PAGE_3_INFO_WORDS];
504} MPI2_CONFIG_PAGE_MAN_3,
505 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_3,
506 Mpi2ManufacturingPage3_t, MPI2_POINTER pMpi2ManufacturingPage3_t;
507
508#define MPI2_MANUFACTURING3_PAGEVERSION (0x00)
509
510
511
512
513typedef struct _MPI2_MANPAGE4_PWR_SAVE_SETTINGS
514{
515 U8 PowerSaveFlags;
516 U8 InternalOperationsSleepTime;
517 U8 InternalOperationsRunTime;
518 U8 HostIdleTime;
519} MPI2_MANPAGE4_PWR_SAVE_SETTINGS,
520 MPI2_POINTER PTR_MPI2_MANPAGE4_PWR_SAVE_SETTINGS,
521 Mpi2ManPage4PwrSaveSettings_t, MPI2_POINTER pMpi2ManPage4PwrSaveSettings_t;
522
523
524#define MPI2_MANPAGE4_MASK_POWERSAVE_MODE (0x03)
525#define MPI2_MANPAGE4_POWERSAVE_MODE_DISABLED (0x00)
526#define MPI2_MANPAGE4_CUSTOM_POWERSAVE_MODE (0x01)
527#define MPI2_MANPAGE4_FULL_POWERSAVE_MODE (0x02)
528
529typedef struct _MPI2_CONFIG_PAGE_MAN_4
530{
531 MPI2_CONFIG_PAGE_HEADER Header;
532 U32 Reserved1;
533 U32 Flags;
534 U8 InquirySize;
535 U8 Reserved2;
536 U16 Reserved3;
537 U8 InquiryData[56];
538 U32 RAID0VolumeSettings;
539 U32 RAID1EVolumeSettings;
540 U32 RAID1VolumeSettings;
541 U32 RAID10VolumeSettings;
542 U32 Reserved4;
543 U32 Reserved5;
544 MPI2_MANPAGE4_PWR_SAVE_SETTINGS PowerSaveSettings;
545 U8 MaxOCEDisks;
546 U8 ResyncRate;
547 U16 DataScrubDuration;
548 U8 MaxHotSpares;
549 U8 MaxPhysDisksPerVol;
550 U8 MaxPhysDisks;
551 U8 MaxVolumes;
552} MPI2_CONFIG_PAGE_MAN_4,
553 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_4,
554 Mpi2ManufacturingPage4_t, MPI2_POINTER pMpi2ManufacturingPage4_t;
555
556#define MPI2_MANUFACTURING4_PAGEVERSION (0x0A)
557
558
559#define MPI2_MANPAGE4_METADATA_SIZE_MASK (0x00030000)
560#define MPI2_MANPAGE4_METADATA_512MB (0x00000000)
561
562#define MPI2_MANPAGE4_MIX_SSD_SAS_SATA (0x00008000)
563#define MPI2_MANPAGE4_MIX_SSD_AND_NON_SSD (0x00004000)
564#define MPI2_MANPAGE4_HIDE_PHYSDISK_NON_IR (0x00002000)
565
566#define MPI2_MANPAGE4_MASK_PHYSDISK_COERCION (0x00001C00)
567#define MPI2_MANPAGE4_PHYSDISK_COERCION_1GB (0x00000000)
568#define MPI2_MANPAGE4_PHYSDISK_128MB_COERCION (0x00000400)
569#define MPI2_MANPAGE4_PHYSDISK_ADAPTIVE_COERCION (0x00000800)
570#define MPI2_MANPAGE4_PHYSDISK_ZERO_COERCION (0x00000C00)
571
572#define MPI2_MANPAGE4_MASK_BAD_BLOCK_MARKING (0x00000300)
573#define MPI2_MANPAGE4_DEFAULT_BAD_BLOCK_MARKING (0x00000000)
574#define MPI2_MANPAGE4_TABLE_BAD_BLOCK_MARKING (0x00000100)
575#define MPI2_MANPAGE4_WRITE_LONG_BAD_BLOCK_MARKING (0x00000200)
576
577#define MPI2_MANPAGE4_FORCE_OFFLINE_FAILOVER (0x00000080)
578#define MPI2_MANPAGE4_RAID10_DISABLE (0x00000040)
579#define MPI2_MANPAGE4_RAID1E_DISABLE (0x00000020)
580#define MPI2_MANPAGE4_RAID1_DISABLE (0x00000010)
581#define MPI2_MANPAGE4_RAID0_DISABLE (0x00000008)
582#define MPI2_MANPAGE4_IR_MODEPAGE8_DISABLE (0x00000004)
583#define MPI2_MANPAGE4_IM_RESYNC_CACHE_ENABLE (0x00000002)
584#define MPI2_MANPAGE4_IR_NO_MIX_SAS_SATA (0x00000001)
585
586
587
588
589
590
591
592
593#ifndef MPI2_MAN_PAGE_5_PHY_ENTRIES
594#define MPI2_MAN_PAGE_5_PHY_ENTRIES (1)
595#endif
596
597typedef struct _MPI2_MANUFACTURING5_ENTRY
598{
599 U64 WWID;
600 U64 DeviceName;
601} MPI2_MANUFACTURING5_ENTRY, MPI2_POINTER PTR_MPI2_MANUFACTURING5_ENTRY,
602 Mpi2Manufacturing5Entry_t, MPI2_POINTER pMpi2Manufacturing5Entry_t;
603
604typedef struct _MPI2_CONFIG_PAGE_MAN_5
605{
606 MPI2_CONFIG_PAGE_HEADER Header;
607 U8 NumPhys;
608 U8 Reserved1;
609 U16 Reserved2;
610 U32 Reserved3;
611 U32 Reserved4;
612 MPI2_MANUFACTURING5_ENTRY Phy[MPI2_MAN_PAGE_5_PHY_ENTRIES];
613} MPI2_CONFIG_PAGE_MAN_5,
614 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_5,
615 Mpi2ManufacturingPage5_t, MPI2_POINTER pMpi2ManufacturingPage5_t;
616
617#define MPI2_MANUFACTURING5_PAGEVERSION (0x03)
618
619
620
621
622typedef struct _MPI2_CONFIG_PAGE_MAN_6
623{
624 MPI2_CONFIG_PAGE_HEADER Header;
625 U32 ProductSpecificInfo;
626} MPI2_CONFIG_PAGE_MAN_6,
627 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_6,
628 Mpi2ManufacturingPage6_t, MPI2_POINTER pMpi2ManufacturingPage6_t;
629
630#define MPI2_MANUFACTURING6_PAGEVERSION (0x00)
631
632
633
634
635typedef struct _MPI2_MANPAGE7_CONNECTOR_INFO
636{
637 U32 Pinout;
638 U8 Connector[16];
639 U8 Location;
640 U8 ReceptacleID;
641 U16 Slot;
642 U32 Reserved2;
643} MPI2_MANPAGE7_CONNECTOR_INFO, MPI2_POINTER PTR_MPI2_MANPAGE7_CONNECTOR_INFO,
644 Mpi2ManPage7ConnectorInfo_t, MPI2_POINTER pMpi2ManPage7ConnectorInfo_t;
645
646
647#define MPI2_MANPAGE7_PINOUT_LANE_MASK (0x0000FF00)
648#define MPI2_MANPAGE7_PINOUT_LANE_SHIFT (8)
649
650#define MPI2_MANPAGE7_PINOUT_TYPE_MASK (0x000000FF)
651#define MPI2_MANPAGE7_PINOUT_TYPE_UNKNOWN (0x00)
652#define MPI2_MANPAGE7_PINOUT_SATA_SINGLE (0x01)
653#define MPI2_MANPAGE7_PINOUT_SFF_8482 (0x02)
654#define MPI2_MANPAGE7_PINOUT_SFF_8486 (0x03)
655#define MPI2_MANPAGE7_PINOUT_SFF_8484 (0x04)
656#define MPI2_MANPAGE7_PINOUT_SFF_8087 (0x05)
657#define MPI2_MANPAGE7_PINOUT_SFF_8643_4I (0x06)
658#define MPI2_MANPAGE7_PINOUT_SFF_8643_8I (0x07)
659#define MPI2_MANPAGE7_PINOUT_SFF_8470 (0x08)
660#define MPI2_MANPAGE7_PINOUT_SFF_8088 (0x09)
661#define MPI2_MANPAGE7_PINOUT_SFF_8644_4X (0x0A)
662#define MPI2_MANPAGE7_PINOUT_SFF_8644_8X (0x0B)
663#define MPI2_MANPAGE7_PINOUT_SFF_8644_16X (0x0C)
664#define MPI2_MANPAGE7_PINOUT_SFF_8436 (0x0D)
665
666
667#define MPI2_MANPAGE7_LOCATION_UNKNOWN (0x01)
668#define MPI2_MANPAGE7_LOCATION_INTERNAL (0x02)
669#define MPI2_MANPAGE7_LOCATION_EXTERNAL (0x04)
670#define MPI2_MANPAGE7_LOCATION_SWITCHABLE (0x08)
671#define MPI2_MANPAGE7_LOCATION_AUTO (0x10)
672#define MPI2_MANPAGE7_LOCATION_NOT_PRESENT (0x20)
673#define MPI2_MANPAGE7_LOCATION_NOT_CONNECTED (0x80)
674
675
676
677
678
679#ifndef MPI2_MANPAGE7_CONNECTOR_INFO_MAX
680#define MPI2_MANPAGE7_CONNECTOR_INFO_MAX (1)
681#endif
682
683typedef struct _MPI2_CONFIG_PAGE_MAN_7
684{
685 MPI2_CONFIG_PAGE_HEADER Header;
686 U32 Reserved1;
687 U32 Reserved2;
688 U32 Flags;
689 U8 EnclosureName[16];
690 U8 NumPhys;
691 U8 Reserved3;
692 U16 Reserved4;
693 MPI2_MANPAGE7_CONNECTOR_INFO ConnectorInfo[MPI2_MANPAGE7_CONNECTOR_INFO_MAX];
694} MPI2_CONFIG_PAGE_MAN_7,
695 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_7,
696 Mpi2ManufacturingPage7_t, MPI2_POINTER pMpi2ManufacturingPage7_t;
697
698#define MPI2_MANUFACTURING7_PAGEVERSION (0x01)
699
700
701#define MPI2_MANPAGE7_FLAG_USE_SLOT_INFO (0x00000001)
702
703
704
705
706
707
708
709typedef struct _MPI2_CONFIG_PAGE_MAN_PS
710{
711 MPI2_CONFIG_PAGE_HEADER Header;
712 U32 ProductSpecificInfo;
713} MPI2_CONFIG_PAGE_MAN_PS,
714 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_PS,
715 Mpi2ManufacturingPagePS_t, MPI2_POINTER pMpi2ManufacturingPagePS_t;
716
717#define MPI2_MANUFACTURING8_PAGEVERSION (0x00)
718#define MPI2_MANUFACTURING9_PAGEVERSION (0x00)
719#define MPI2_MANUFACTURING10_PAGEVERSION (0x00)
720#define MPI2_MANUFACTURING11_PAGEVERSION (0x00)
721#define MPI2_MANUFACTURING12_PAGEVERSION (0x00)
722#define MPI2_MANUFACTURING13_PAGEVERSION (0x00)
723#define MPI2_MANUFACTURING14_PAGEVERSION (0x00)
724#define MPI2_MANUFACTURING15_PAGEVERSION (0x00)
725#define MPI2_MANUFACTURING16_PAGEVERSION (0x00)
726#define MPI2_MANUFACTURING17_PAGEVERSION (0x00)
727#define MPI2_MANUFACTURING18_PAGEVERSION (0x00)
728#define MPI2_MANUFACTURING19_PAGEVERSION (0x00)
729#define MPI2_MANUFACTURING20_PAGEVERSION (0x00)
730#define MPI2_MANUFACTURING21_PAGEVERSION (0x00)
731#define MPI2_MANUFACTURING22_PAGEVERSION (0x00)
732#define MPI2_MANUFACTURING23_PAGEVERSION (0x00)
733#define MPI2_MANUFACTURING24_PAGEVERSION (0x00)
734#define MPI2_MANUFACTURING25_PAGEVERSION (0x00)
735#define MPI2_MANUFACTURING26_PAGEVERSION (0x00)
736#define MPI2_MANUFACTURING27_PAGEVERSION (0x00)
737#define MPI2_MANUFACTURING28_PAGEVERSION (0x00)
738#define MPI2_MANUFACTURING29_PAGEVERSION (0x00)
739#define MPI2_MANUFACTURING30_PAGEVERSION (0x00)
740#define MPI2_MANUFACTURING31_PAGEVERSION (0x00)
741
742
743
744
745
746
747
748
749typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_0
750{
751 MPI2_CONFIG_PAGE_HEADER Header;
752 U64 UniqueValue;
753 MPI2_VERSION_UNION NvdataVersionDefault;
754 MPI2_VERSION_UNION NvdataVersionPersistent;
755} MPI2_CONFIG_PAGE_IO_UNIT_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_0,
756 Mpi2IOUnitPage0_t, MPI2_POINTER pMpi2IOUnitPage0_t;
757
758#define MPI2_IOUNITPAGE0_PAGEVERSION (0x02)
759
760
761
762
763typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_1
764{
765 MPI2_CONFIG_PAGE_HEADER Header;
766 U32 Flags;
767} MPI2_CONFIG_PAGE_IO_UNIT_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_1,
768 Mpi2IOUnitPage1_t, MPI2_POINTER pMpi2IOUnitPage1_t;
769
770#define MPI2_IOUNITPAGE1_PAGEVERSION (0x04)
771
772
773#define MPI2_IOUNITPAGE1_ENABLE_HOST_BASED_DISCOVERY (0x00000800)
774#define MPI2_IOUNITPAGE1_MASK_SATA_WRITE_CACHE (0x00000600)
775#define MPI2_IOUNITPAGE1_SATA_WRITE_CACHE_SHIFT (9)
776#define MPI2_IOUNITPAGE1_ENABLE_SATA_WRITE_CACHE (0x00000000)
777#define MPI2_IOUNITPAGE1_DISABLE_SATA_WRITE_CACHE (0x00000200)
778#define MPI2_IOUNITPAGE1_UNCHANGED_SATA_WRITE_CACHE (0x00000400)
779#define MPI2_IOUNITPAGE1_NATIVE_COMMAND_Q_DISABLE (0x00000100)
780#define MPI2_IOUNITPAGE1_DISABLE_IR (0x00000040)
781#define MPI2_IOUNITPAGE1_DISABLE_TASK_SET_FULL_HANDLING (0x00000020)
782#define MPI2_IOUNITPAGE1_IR_USE_STATIC_VOLUME_ID (0x00000004)
783
784
785
786
787
788
789
790
791#ifndef MPI2_IO_UNIT_PAGE_3_GPIO_VAL_MAX
792#define MPI2_IO_UNIT_PAGE_3_GPIO_VAL_MAX (1)
793#endif
794
795typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_3
796{
797 MPI2_CONFIG_PAGE_HEADER Header;
798 U8 GPIOCount;
799 U8 Reserved1;
800 U16 Reserved2;
801 U16 GPIOVal[MPI2_IO_UNIT_PAGE_3_GPIO_VAL_MAX];
802} MPI2_CONFIG_PAGE_IO_UNIT_3, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_3,
803 Mpi2IOUnitPage3_t, MPI2_POINTER pMpi2IOUnitPage3_t;
804
805#define MPI2_IOUNITPAGE3_PAGEVERSION (0x01)
806
807
808#define MPI2_IOUNITPAGE3_GPIO_FUNCTION_MASK (0xFFFC)
809#define MPI2_IOUNITPAGE3_GPIO_FUNCTION_SHIFT (2)
810#define MPI2_IOUNITPAGE3_GPIO_SETTING_OFF (0x0000)
811#define MPI2_IOUNITPAGE3_GPIO_SETTING_ON (0x0001)
812
813
814
815
816
817
818
819
820#ifndef MPI2_IOUNITPAGE5_DMAENGINE_ENTRIES
821#define MPI2_IOUNITPAGE5_DMAENGINE_ENTRIES (1)
822#endif
823
824typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_5 {
825 MPI2_CONFIG_PAGE_HEADER Header;
826 U64 RaidAcceleratorBufferBaseAddress;
827 U64 RaidAcceleratorBufferSize;
828 U64 RaidAcceleratorControlBaseAddress;
829 U8 RAControlSize;
830 U8 NumDmaEngines;
831 U8 RAMinControlSize;
832 U8 RAMaxControlSize;
833 U32 Reserved1;
834 U32 Reserved2;
835 U32 Reserved3;
836 U32 DmaEngineCapabilities
837 [MPI2_IOUNITPAGE5_DMAENGINE_ENTRIES];
838} MPI2_CONFIG_PAGE_IO_UNIT_5, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_5,
839 Mpi2IOUnitPage5_t, MPI2_POINTER pMpi2IOUnitPage5_t;
840
841#define MPI2_IOUNITPAGE5_PAGEVERSION (0x00)
842
843
844#define MPI2_IOUNITPAGE5_DMA_CAP_MASK_MAX_REQUESTS (0xFF00)
845#define MPI2_IOUNITPAGE5_DMA_CAP_SHIFT_MAX_REQUESTS (16)
846
847#define MPI2_IOUNITPAGE5_DMA_CAP_EEDP (0x0008)
848#define MPI2_IOUNITPAGE5_DMA_CAP_PARITY_GENERATION (0x0004)
849#define MPI2_IOUNITPAGE5_DMA_CAP_HASHING (0x0002)
850#define MPI2_IOUNITPAGE5_DMA_CAP_ENCRYPTION (0x0001)
851
852
853
854
855typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_6 {
856 MPI2_CONFIG_PAGE_HEADER Header;
857 U16 Flags;
858 U8 RAHostControlSize;
859 U8 Reserved0;
860 U64 RaidAcceleratorHostControlBaseAddress;
861 U32 Reserved1;
862 U32 Reserved2;
863 U32 Reserved3;
864} MPI2_CONFIG_PAGE_IO_UNIT_6, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_6,
865 Mpi2IOUnitPage6_t, MPI2_POINTER pMpi2IOUnitPage6_t;
866
867#define MPI2_IOUNITPAGE6_PAGEVERSION (0x00)
868
869
870#define MPI2_IOUNITPAGE6_FLAGS_ENABLE_RAID_ACCELERATOR (0x0001)
871
872
873
874
875typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_7 {
876 MPI2_CONFIG_PAGE_HEADER Header;
877 U16 Reserved1;
878 U8 PCIeWidth;
879 U8 PCIeSpeed;
880 U32 ProcessorState;
881 U32 PowerManagementCapabilities;
882 U16 IOCTemperature;
883 U8 IOCTemperatureUnits;
884 U8 IOCSpeed;
885 U16 BoardTemperature;
886 U8 BoardTemperatureUnits;
887 U8 Reserved3;
888} MPI2_CONFIG_PAGE_IO_UNIT_7, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_7,
889 Mpi2IOUnitPage7_t, MPI2_POINTER pMpi2IOUnitPage7_t;
890
891#define MPI2_IOUNITPAGE7_PAGEVERSION (0x02)
892
893
894#define MPI2_IOUNITPAGE7_PCIE_WIDTH_X1 (0x01)
895#define MPI2_IOUNITPAGE7_PCIE_WIDTH_X2 (0x02)
896#define MPI2_IOUNITPAGE7_PCIE_WIDTH_X4 (0x04)
897#define MPI2_IOUNITPAGE7_PCIE_WIDTH_X8 (0x08)
898
899
900#define MPI2_IOUNITPAGE7_PCIE_SPEED_2_5_GBPS (0x00)
901#define MPI2_IOUNITPAGE7_PCIE_SPEED_5_0_GBPS (0x01)
902#define MPI2_IOUNITPAGE7_PCIE_SPEED_8_0_GBPS (0x02)
903
904
905#define MPI2_IOUNITPAGE7_PSTATE_MASK_SECOND (0x0000000F)
906#define MPI2_IOUNITPAGE7_PSTATE_SHIFT_SECOND (0)
907
908#define MPI2_IOUNITPAGE7_PSTATE_NOT_PRESENT (0x00)
909#define MPI2_IOUNITPAGE7_PSTATE_DISABLED (0x01)
910#define MPI2_IOUNITPAGE7_PSTATE_ENABLED (0x02)
911
912
913#define MPI2_IOUNITPAGE7_PMCAP_12_5_PCT_IOCSPEED (0x00000400)
914#define MPI2_IOUNITPAGE7_PMCAP_25_0_PCT_IOCSPEED (0x00000200)
915#define MPI2_IOUNITPAGE7_PMCAP_50_0_PCT_IOCSPEED (0x00000100)
916#define MPI2_IOUNITPAGE7_PMCAP_PCIE_WIDTH_CHANGE (0x00000008)
917#define MPI2_IOUNITPAGE7_PMCAP_PCIE_SPEED_CHANGE (0x00000004)
918
919
920#define MPI2_IOUNITPAGE7_IOC_TEMP_NOT_PRESENT (0x00)
921#define MPI2_IOUNITPAGE7_IOC_TEMP_FAHRENHEIT (0x01)
922#define MPI2_IOUNITPAGE7_IOC_TEMP_CELSIUS (0x02)
923
924
925#define MPI2_IOUNITPAGE7_IOC_SPEED_FULL (0x01)
926#define MPI2_IOUNITPAGE7_IOC_SPEED_HALF (0x02)
927#define MPI2_IOUNITPAGE7_IOC_SPEED_QUARTER (0x04)
928#define MPI2_IOUNITPAGE7_IOC_SPEED_EIGHTH (0x08)
929
930
931#define MPI2_IOUNITPAGE7_BOARD_TEMP_NOT_PRESENT (0x00)
932#define MPI2_IOUNITPAGE7_BOARD_TEMP_FAHRENHEIT (0x01)
933#define MPI2_IOUNITPAGE7_BOARD_TEMP_CELSIUS (0x02)
934
935
936
937#define MPI2_IOUNIT8_NUM_THRESHOLDS (4)
938
939typedef struct _MPI2_IOUNIT8_SENSOR {
940 U16 Flags;
941 U16 Reserved1;
942 U16
943 Threshold[MPI2_IOUNIT8_NUM_THRESHOLDS];
944 U32 Reserved2;
945 U32 Reserved3;
946 U32 Reserved4;
947} MPI2_IOUNIT8_SENSOR, MPI2_POINTER PTR_MPI2_IOUNIT8_SENSOR,
948Mpi2IOUnit8Sensor_t, MPI2_POINTER pMpi2IOUnit8Sensor_t;
949
950
951#define MPI2_IOUNIT8_SENSOR_FLAGS_T3_ENABLE (0x0008)
952#define MPI2_IOUNIT8_SENSOR_FLAGS_T2_ENABLE (0x0004)
953#define MPI2_IOUNIT8_SENSOR_FLAGS_T1_ENABLE (0x0002)
954#define MPI2_IOUNIT8_SENSOR_FLAGS_T0_ENABLE (0x0001)
955
956
957
958
959
960#ifndef MPI2_IOUNITPAGE8_SENSOR_ENTRIES
961#define MPI2_IOUNITPAGE8_SENSOR_ENTRIES (1)
962#endif
963
964typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_8 {
965 MPI2_CONFIG_PAGE_HEADER Header;
966 U32 Reserved1;
967 U32 Reserved2;
968 U8 NumSensors;
969 U8 PollingInterval;
970 U16 Reserved3;
971 MPI2_IOUNIT8_SENSOR
972 Sensor[MPI2_IOUNITPAGE8_SENSOR_ENTRIES];
973} MPI2_CONFIG_PAGE_IO_UNIT_8, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_8,
974Mpi2IOUnitPage8_t, MPI2_POINTER pMpi2IOUnitPage8_t;
975
976#define MPI2_IOUNITPAGE8_PAGEVERSION (0x00)
977
978
979
980
981typedef struct _MPI2_IOUNIT9_SENSOR {
982 U16 CurrentTemperature;
983 U16 Reserved1;
984 U8 Flags;
985 U8 Reserved2;
986 U16 Reserved3;
987 U32 Reserved4;
988 U32 Reserved5;
989} MPI2_IOUNIT9_SENSOR, MPI2_POINTER PTR_MPI2_IOUNIT9_SENSOR,
990Mpi2IOUnit9Sensor_t, MPI2_POINTER pMpi2IOUnit9Sensor_t;
991
992
993#define MPI2_IOUNIT9_SENSOR_FLAGS_TEMP_VALID (0x01)
994
995
996
997
998
999#ifndef MPI2_IOUNITPAGE9_SENSOR_ENTRIES
1000#define MPI2_IOUNITPAGE9_SENSOR_ENTRIES (1)
1001#endif
1002
1003typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_9 {
1004 MPI2_CONFIG_PAGE_HEADER Header;
1005 U32 Reserved1;
1006 U32 Reserved2;
1007 U8 NumSensors;
1008 U8 Reserved4;
1009 U16 Reserved3;
1010 MPI2_IOUNIT9_SENSOR
1011 Sensor[MPI2_IOUNITPAGE9_SENSOR_ENTRIES];
1012} MPI2_CONFIG_PAGE_IO_UNIT_9, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_9,
1013Mpi2IOUnitPage9_t, MPI2_POINTER pMpi2IOUnitPage9_t;
1014
1015#define MPI2_IOUNITPAGE9_PAGEVERSION (0x00)
1016
1017
1018
1019
1020typedef struct _MPI2_IOUNIT10_FUNCTION {
1021 U8 CreditPercent;
1022 U8 Reserved1;
1023 U16 Reserved2;
1024} MPI2_IOUNIT10_FUNCTION, MPI2_POINTER PTR_MPI2_IOUNIT10_FUNCTION,
1025Mpi2IOUnit10Function_t, MPI2_POINTER pMpi2IOUnit10Function_t;
1026
1027
1028
1029
1030
1031#ifndef MPI2_IOUNITPAGE10_FUNCTION_ENTRIES
1032#define MPI2_IOUNITPAGE10_FUNCTION_ENTRIES (1)
1033#endif
1034
1035typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_10 {
1036 MPI2_CONFIG_PAGE_HEADER Header;
1037 U8 NumFunctions;
1038 U8 Reserved1;
1039 U16 Reserved2;
1040 U32 Reserved3;
1041 U32 Reserved4;
1042 MPI2_IOUNIT10_FUNCTION
1043 Function[MPI2_IOUNITPAGE10_FUNCTION_ENTRIES];
1044} MPI2_CONFIG_PAGE_IO_UNIT_10, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_10,
1045Mpi2IOUnitPage10_t, MPI2_POINTER pMpi2IOUnitPage10_t;
1046
1047#define MPI2_IOUNITPAGE10_PAGEVERSION (0x01)
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057typedef struct _MPI2_CONFIG_PAGE_IOC_0
1058{
1059 MPI2_CONFIG_PAGE_HEADER Header;
1060 U32 Reserved1;
1061 U32 Reserved2;
1062 U16 VendorID;
1063 U16 DeviceID;
1064 U8 RevisionID;
1065 U8 Reserved3;
1066 U16 Reserved4;
1067 U32 ClassCode;
1068 U16 SubsystemVendorID;
1069 U16 SubsystemID;
1070} MPI2_CONFIG_PAGE_IOC_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IOC_0,
1071 Mpi2IOCPage0_t, MPI2_POINTER pMpi2IOCPage0_t;
1072
1073#define MPI2_IOCPAGE0_PAGEVERSION (0x02)
1074
1075
1076
1077
1078typedef struct _MPI2_CONFIG_PAGE_IOC_1
1079{
1080 MPI2_CONFIG_PAGE_HEADER Header;
1081 U32 Flags;
1082 U32 CoalescingTimeout;
1083 U8 CoalescingDepth;
1084 U8 PCISlotNum;
1085 U8 PCIBusNum;
1086 U8 PCIDomainSegment;
1087 U32 Reserved1;
1088 U32 Reserved2;
1089} MPI2_CONFIG_PAGE_IOC_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IOC_1,
1090 Mpi2IOCPage1_t, MPI2_POINTER pMpi2IOCPage1_t;
1091
1092#define MPI2_IOCPAGE1_PAGEVERSION (0x05)
1093
1094
1095#define MPI2_IOCPAGE1_REPLY_COALESCING (0x00000001)
1096
1097#define MPI2_IOCPAGE1_PCISLOTNUM_UNKNOWN (0xFF)
1098#define MPI2_IOCPAGE1_PCIBUSNUM_UNKNOWN (0xFF)
1099#define MPI2_IOCPAGE1_PCIDOMAIN_UNKNOWN (0xFF)
1100
1101
1102
1103typedef struct _MPI2_CONFIG_PAGE_IOC_6
1104{
1105 MPI2_CONFIG_PAGE_HEADER Header;
1106 U32 CapabilitiesFlags;
1107 U8 MaxDrivesRAID0;
1108 U8 MaxDrivesRAID1;
1109 U8 MaxDrivesRAID1E;
1110 U8 MaxDrivesRAID10;
1111 U8 MinDrivesRAID0;
1112 U8 MinDrivesRAID1;
1113 U8 MinDrivesRAID1E;
1114 U8 MinDrivesRAID10;
1115 U32 Reserved1;
1116 U8 MaxGlobalHotSpares;
1117 U8 MaxPhysDisks;
1118 U8 MaxVolumes;
1119 U8 MaxConfigs;
1120 U8 MaxOCEDisks;
1121 U8 Reserved2;
1122 U16 Reserved3;
1123 U32 SupportedStripeSizeMapRAID0;
1124 U32 SupportedStripeSizeMapRAID1E;
1125 U32 SupportedStripeSizeMapRAID10;
1126 U32 Reserved4;
1127 U32 Reserved5;
1128 U16 DefaultMetadataSize;
1129 U16 Reserved6;
1130 U16 MaxBadBlockTableEntries;
1131 U16 Reserved7;
1132 U32 IRNvsramVersion;
1133} MPI2_CONFIG_PAGE_IOC_6, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IOC_6,
1134 Mpi2IOCPage6_t, MPI2_POINTER pMpi2IOCPage6_t;
1135
1136#define MPI2_IOCPAGE6_PAGEVERSION (0x05)
1137
1138
1139#define MPI2_IOCPAGE6_CAP_FLAGS_4K_SECTORS_SUPPORT (0x00000020)
1140#define MPI2_IOCPAGE6_CAP_FLAGS_RAID10_SUPPORT (0x00000010)
1141#define MPI2_IOCPAGE6_CAP_FLAGS_RAID1_SUPPORT (0x00000008)
1142#define MPI2_IOCPAGE6_CAP_FLAGS_RAID1E_SUPPORT (0x00000004)
1143#define MPI2_IOCPAGE6_CAP_FLAGS_RAID0_SUPPORT (0x00000002)
1144#define MPI2_IOCPAGE6_CAP_FLAGS_GLOBAL_HOT_SPARE (0x00000001)
1145
1146
1147
1148
1149#define MPI2_IOCPAGE7_EVENTMASK_WORDS (4)
1150
1151typedef struct _MPI2_CONFIG_PAGE_IOC_7
1152{
1153 MPI2_CONFIG_PAGE_HEADER Header;
1154 U32 Reserved1;
1155 U32 EventMasks[MPI2_IOCPAGE7_EVENTMASK_WORDS];
1156 U16 SASBroadcastPrimitiveMasks;
1157 U16 SASNotifyPrimitiveMasks;
1158 U32 Reserved3;
1159} MPI2_CONFIG_PAGE_IOC_7, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IOC_7,
1160 Mpi2IOCPage7_t, MPI2_POINTER pMpi2IOCPage7_t;
1161
1162#define MPI2_IOCPAGE7_PAGEVERSION (0x02)
1163
1164
1165
1166
1167typedef struct _MPI2_CONFIG_PAGE_IOC_8
1168{
1169 MPI2_CONFIG_PAGE_HEADER Header;
1170 U8 NumDevsPerEnclosure;
1171 U8 Reserved1;
1172 U16 Reserved2;
1173 U16 MaxPersistentEntries;
1174 U16 MaxNumPhysicalMappedIDs;
1175 U16 Flags;
1176 U16 Reserved3;
1177 U16 IRVolumeMappingFlags;
1178 U16 Reserved4;
1179 U32 Reserved5;
1180} MPI2_CONFIG_PAGE_IOC_8, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IOC_8,
1181 Mpi2IOCPage8_t, MPI2_POINTER pMpi2IOCPage8_t;
1182
1183#define MPI2_IOCPAGE8_PAGEVERSION (0x00)
1184
1185
1186#define MPI2_IOCPAGE8_FLAGS_DA_START_SLOT_1 (0x00000020)
1187#define MPI2_IOCPAGE8_FLAGS_RESERVED_TARGETID_0 (0x00000010)
1188
1189#define MPI2_IOCPAGE8_FLAGS_MASK_MAPPING_MODE (0x0000000E)
1190#define MPI2_IOCPAGE8_FLAGS_DEVICE_PERSISTENCE_MAPPING (0x00000000)
1191#define MPI2_IOCPAGE8_FLAGS_ENCLOSURE_SLOT_MAPPING (0x00000002)
1192
1193#define MPI2_IOCPAGE8_FLAGS_DISABLE_PERSISTENT_MAPPING (0x00000001)
1194#define MPI2_IOCPAGE8_FLAGS_ENABLE_PERSISTENT_MAPPING (0x00000000)
1195
1196
1197#define MPI2_IOCPAGE8_IRFLAGS_MASK_VOLUME_MAPPING_MODE (0x00000003)
1198#define MPI2_IOCPAGE8_IRFLAGS_LOW_VOLUME_MAPPING (0x00000000)
1199#define MPI2_IOCPAGE8_IRFLAGS_HIGH_VOLUME_MAPPING (0x00000001)
1200
1201
1202
1203
1204
1205
1206
1207
1208typedef struct _MPI2_CONFIG_PAGE_BIOS_1
1209{
1210 MPI2_CONFIG_PAGE_HEADER Header;
1211 U32 BiosOptions;
1212 U32 IOCSettings;
1213 U32 Reserved1;
1214 U32 DeviceSettings;
1215 U16 NumberOfDevices;
1216 U16 UEFIVersion;
1217 U16 IOTimeoutBlockDevicesNonRM;
1218 U16 IOTimeoutSequential;
1219 U16 IOTimeoutOther;
1220 U16 IOTimeoutBlockDevicesRM;
1221} MPI2_CONFIG_PAGE_BIOS_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_BIOS_1,
1222 Mpi2BiosPage1_t, MPI2_POINTER pMpi2BiosPage1_t;
1223
1224#define MPI2_BIOSPAGE1_PAGEVERSION (0x05)
1225
1226
1227#define MPI2_BIOSPAGE1_OPTIONS_MASK_UEFI_HII_REGISTRATION (0x00000006)
1228#define MPI2_BIOSPAGE1_OPTIONS_ENABLE_UEFI_HII (0x00000000)
1229#define MPI2_BIOSPAGE1_OPTIONS_DISABLE_UEFI_HII (0x00000002)
1230#define MPI2_BIOSPAGE1_OPTIONS_VERSION_CHECK_UEFI_HII (0x00000004)
1231
1232#define MPI2_BIOSPAGE1_OPTIONS_DISABLE_BIOS (0x00000001)
1233
1234
1235#define MPI2_BIOSPAGE1_IOCSET_MASK_BOOT_PREFERENCE (0x00030000)
1236#define MPI2_BIOSPAGE1_IOCSET_ENCLOSURE_SLOT_BOOT (0x00000000)
1237#define MPI2_BIOSPAGE1_IOCSET_SAS_ADDRESS_BOOT (0x00010000)
1238
1239#define MPI2_BIOSPAGE1_IOCSET_MASK_RM_SETTING (0x000000C0)
1240#define MPI2_BIOSPAGE1_IOCSET_NONE_RM_SETTING (0x00000000)
1241#define MPI2_BIOSPAGE1_IOCSET_BOOT_RM_SETTING (0x00000040)
1242#define MPI2_BIOSPAGE1_IOCSET_MEDIA_RM_SETTING (0x00000080)
1243
1244#define MPI2_BIOSPAGE1_IOCSET_MASK_ADAPTER_SUPPORT (0x00000030)
1245#define MPI2_BIOSPAGE1_IOCSET_NO_SUPPORT (0x00000000)
1246#define MPI2_BIOSPAGE1_IOCSET_BIOS_SUPPORT (0x00000010)
1247#define MPI2_BIOSPAGE1_IOCSET_OS_SUPPORT (0x00000020)
1248#define MPI2_BIOSPAGE1_IOCSET_ALL_SUPPORT (0x00000030)
1249
1250#define MPI2_BIOSPAGE1_IOCSET_ALTERNATE_CHS (0x00000008)
1251
1252
1253#define MPI2_BIOSPAGE1_DEVSET_DISABLE_SMART_POLLING (0x00000010)
1254#define MPI2_BIOSPAGE1_DEVSET_DISABLE_SEQ_LUN (0x00000008)
1255#define MPI2_BIOSPAGE1_DEVSET_DISABLE_RM_LUN (0x00000004)
1256#define MPI2_BIOSPAGE1_DEVSET_DISABLE_NON_RM_LUN (0x00000002)
1257#define MPI2_BIOSPAGE1_DEVSET_DISABLE_OTHER_LUN (0x00000001)
1258
1259
1260#define MPI2_BIOSPAGE1_UEFI_VER_MAJOR_MASK (0xFF00)
1261#define MPI2_BIOSPAGE1_UEFI_VER_MAJOR_SHIFT (8)
1262#define MPI2_BIOSPAGE1_UEFI_VER_MINOR_MASK (0x00FF)
1263#define MPI2_BIOSPAGE1_UEFI_VER_MINOR_SHIFT (0)
1264
1265
1266
1267
1268
1269typedef struct _MPI2_BOOT_DEVICE_ADAPTER_ORDER
1270{
1271 U32 Reserved1;
1272 U32 Reserved2;
1273 U32 Reserved3;
1274 U32 Reserved4;
1275 U32 Reserved5;
1276 U32 Reserved6;
1277} MPI2_BOOT_DEVICE_ADAPTER_ORDER,
1278 MPI2_POINTER PTR_MPI2_BOOT_DEVICE_ADAPTER_ORDER,
1279 Mpi2BootDeviceAdapterOrder_t, MPI2_POINTER pMpi2BootDeviceAdapterOrder_t;
1280
1281typedef struct _MPI2_BOOT_DEVICE_SAS_WWID
1282{
1283 U64 SASAddress;
1284 U8 LUN[8];
1285 U32 Reserved1;
1286 U32 Reserved2;
1287} MPI2_BOOT_DEVICE_SAS_WWID, MPI2_POINTER PTR_MPI2_BOOT_DEVICE_SAS_WWID,
1288 Mpi2BootDeviceSasWwid_t, MPI2_POINTER pMpi2BootDeviceSasWwid_t;
1289
1290typedef struct _MPI2_BOOT_DEVICE_ENCLOSURE_SLOT
1291{
1292 U64 EnclosureLogicalID;
1293 U32 Reserved1;
1294 U32 Reserved2;
1295 U16 SlotNumber;
1296 U16 Reserved3;
1297 U32 Reserved4;
1298} MPI2_BOOT_DEVICE_ENCLOSURE_SLOT,
1299 MPI2_POINTER PTR_MPI2_BOOT_DEVICE_ENCLOSURE_SLOT,
1300 Mpi2BootDeviceEnclosureSlot_t, MPI2_POINTER pMpi2BootDeviceEnclosureSlot_t;
1301
1302typedef struct _MPI2_BOOT_DEVICE_DEVICE_NAME
1303{
1304 U64 DeviceName;
1305 U8 LUN[8];
1306 U32 Reserved1;
1307 U32 Reserved2;
1308} MPI2_BOOT_DEVICE_DEVICE_NAME, MPI2_POINTER PTR_MPI2_BOOT_DEVICE_DEVICE_NAME,
1309 Mpi2BootDeviceDeviceName_t, MPI2_POINTER pMpi2BootDeviceDeviceName_t;
1310
1311typedef union _MPI2_MPI2_BIOSPAGE2_BOOT_DEVICE
1312{
1313 MPI2_BOOT_DEVICE_ADAPTER_ORDER AdapterOrder;
1314 MPI2_BOOT_DEVICE_SAS_WWID SasWwid;
1315 MPI2_BOOT_DEVICE_ENCLOSURE_SLOT EnclosureSlot;
1316 MPI2_BOOT_DEVICE_DEVICE_NAME DeviceName;
1317} MPI2_BIOSPAGE2_BOOT_DEVICE, MPI2_POINTER PTR_MPI2_BIOSPAGE2_BOOT_DEVICE,
1318 Mpi2BiosPage2BootDevice_t, MPI2_POINTER pMpi2BiosPage2BootDevice_t;
1319
1320typedef struct _MPI2_CONFIG_PAGE_BIOS_2
1321{
1322 MPI2_CONFIG_PAGE_HEADER Header;
1323 U32 Reserved1;
1324 U32 Reserved2;
1325 U32 Reserved3;
1326 U32 Reserved4;
1327 U32 Reserved5;
1328 U32 Reserved6;
1329 U8 ReqBootDeviceForm;
1330 U8 Reserved7;
1331 U16 Reserved8;
1332 MPI2_BIOSPAGE2_BOOT_DEVICE RequestedBootDevice;
1333 U8 ReqAltBootDeviceForm;
1334 U8 Reserved9;
1335 U16 Reserved10;
1336 MPI2_BIOSPAGE2_BOOT_DEVICE RequestedAltBootDevice;
1337 U8 CurrentBootDeviceForm;
1338 U8 Reserved11;
1339 U16 Reserved12;
1340 MPI2_BIOSPAGE2_BOOT_DEVICE CurrentBootDevice;
1341} MPI2_CONFIG_PAGE_BIOS_2, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_BIOS_2,
1342 Mpi2BiosPage2_t, MPI2_POINTER pMpi2BiosPage2_t;
1343
1344#define MPI2_BIOSPAGE2_PAGEVERSION (0x04)
1345
1346
1347#define MPI2_BIOSPAGE2_FORM_MASK (0x0F)
1348#define MPI2_BIOSPAGE2_FORM_NO_DEVICE_SPECIFIED (0x00)
1349#define MPI2_BIOSPAGE2_FORM_SAS_WWID (0x05)
1350#define MPI2_BIOSPAGE2_FORM_ENCLOSURE_SLOT (0x06)
1351#define MPI2_BIOSPAGE2_FORM_DEVICE_NAME (0x07)
1352
1353
1354
1355
1356typedef struct _MPI2_ADAPTER_INFO
1357{
1358 U8 PciBusNumber;
1359 U8 PciDeviceAndFunctionNumber;
1360 U16 AdapterFlags;
1361} MPI2_ADAPTER_INFO, MPI2_POINTER PTR_MPI2_ADAPTER_INFO,
1362 Mpi2AdapterInfo_t, MPI2_POINTER pMpi2AdapterInfo_t;
1363
1364#define MPI2_ADAPTER_INFO_FLAGS_EMBEDDED (0x0001)
1365#define MPI2_ADAPTER_INFO_FLAGS_INIT_STATUS (0x0002)
1366
1367typedef struct _MPI2_CONFIG_PAGE_BIOS_3
1368{
1369 MPI2_CONFIG_PAGE_HEADER Header;
1370 U32 GlobalFlags;
1371 U32 BiosVersion;
1372 MPI2_ADAPTER_INFO AdapterOrder[4];
1373 U32 Reserved1;
1374} MPI2_CONFIG_PAGE_BIOS_3, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_BIOS_3,
1375 Mpi2BiosPage3_t, MPI2_POINTER pMpi2BiosPage3_t;
1376
1377#define MPI2_BIOSPAGE3_PAGEVERSION (0x00)
1378
1379
1380#define MPI2_BIOSPAGE3_FLAGS_PAUSE_ON_ERROR (0x00000002)
1381#define MPI2_BIOSPAGE3_FLAGS_VERBOSE_ENABLE (0x00000004)
1382#define MPI2_BIOSPAGE3_FLAGS_HOOK_INT_40_DISABLE (0x00000010)
1383
1384#define MPI2_BIOSPAGE3_FLAGS_DEV_LIST_DISPLAY_MASK (0x000000E0)
1385#define MPI2_BIOSPAGE3_FLAGS_INSTALLED_DEV_DISPLAY (0x00000000)
1386#define MPI2_BIOSPAGE3_FLAGS_ADAPTER_DISPLAY (0x00000020)
1387#define MPI2_BIOSPAGE3_FLAGS_ADAPTER_DEV_DISPLAY (0x00000040)
1388
1389
1390
1391
1392
1393
1394
1395
1396#ifndef MPI2_BIOS_PAGE_4_PHY_ENTRIES
1397#define MPI2_BIOS_PAGE_4_PHY_ENTRIES (1)
1398#endif
1399
1400typedef struct _MPI2_BIOS4_ENTRY
1401{
1402 U64 ReassignmentWWID;
1403 U64 ReassignmentDeviceName;
1404} MPI2_BIOS4_ENTRY, MPI2_POINTER PTR_MPI2_BIOS4_ENTRY,
1405 Mpi2MBios4Entry_t, MPI2_POINTER pMpi2Bios4Entry_t;
1406
1407typedef struct _MPI2_CONFIG_PAGE_BIOS_4
1408{
1409 MPI2_CONFIG_PAGE_HEADER Header;
1410 U8 NumPhys;
1411 U8 Reserved1;
1412 U16 Reserved2;
1413 MPI2_BIOS4_ENTRY Phy[MPI2_BIOS_PAGE_4_PHY_ENTRIES];
1414} MPI2_CONFIG_PAGE_BIOS_4, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_BIOS_4,
1415 Mpi2BiosPage4_t, MPI2_POINTER pMpi2BiosPage4_t;
1416
1417#define MPI2_BIOSPAGE4_PAGEVERSION (0x01)
1418
1419
1420
1421
1422
1423
1424
1425
1426typedef struct _MPI2_RAIDVOL0_PHYS_DISK
1427{
1428 U8 RAIDSetNum;
1429 U8 PhysDiskMap;
1430 U8 PhysDiskNum;
1431 U8 Reserved;
1432} MPI2_RAIDVOL0_PHYS_DISK, MPI2_POINTER PTR_MPI2_RAIDVOL0_PHYS_DISK,
1433 Mpi2RaidVol0PhysDisk_t, MPI2_POINTER pMpi2RaidVol0PhysDisk_t;
1434
1435
1436#define MPI2_RAIDVOL0_PHYSDISK_PRIMARY (0x01)
1437#define MPI2_RAIDVOL0_PHYSDISK_SECONDARY (0x02)
1438
1439typedef struct _MPI2_RAIDVOL0_SETTINGS
1440{
1441 U16 Settings;
1442 U8 HotSparePool;
1443 U8 Reserved;
1444} MPI2_RAIDVOL0_SETTINGS, MPI2_POINTER PTR_MPI2_RAIDVOL0_SETTINGS,
1445 Mpi2RaidVol0Settings_t, MPI2_POINTER pMpi2RaidVol0Settings_t;
1446
1447
1448#define MPI2_RAID_HOT_SPARE_POOL_0 (0x01)
1449#define MPI2_RAID_HOT_SPARE_POOL_1 (0x02)
1450#define MPI2_RAID_HOT_SPARE_POOL_2 (0x04)
1451#define MPI2_RAID_HOT_SPARE_POOL_3 (0x08)
1452#define MPI2_RAID_HOT_SPARE_POOL_4 (0x10)
1453#define MPI2_RAID_HOT_SPARE_POOL_5 (0x20)
1454#define MPI2_RAID_HOT_SPARE_POOL_6 (0x40)
1455#define MPI2_RAID_HOT_SPARE_POOL_7 (0x80)
1456
1457
1458#define MPI2_RAIDVOL0_SETTING_USE_PRODUCT_ID_SUFFIX (0x0008)
1459#define MPI2_RAIDVOL0_SETTING_AUTO_CONFIG_HSWAP_DISABLE (0x0004)
1460
1461#define MPI2_RAIDVOL0_SETTING_MASK_WRITE_CACHING (0x0003)
1462#define MPI2_RAIDVOL0_SETTING_UNCHANGED (0x0000)
1463#define MPI2_RAIDVOL0_SETTING_DISABLE_WRITE_CACHING (0x0001)
1464#define MPI2_RAIDVOL0_SETTING_ENABLE_WRITE_CACHING (0x0002)
1465
1466
1467
1468
1469
1470#ifndef MPI2_RAID_VOL_PAGE_0_PHYSDISK_MAX
1471#define MPI2_RAID_VOL_PAGE_0_PHYSDISK_MAX (1)
1472#endif
1473
1474typedef struct _MPI2_CONFIG_PAGE_RAID_VOL_0
1475{
1476 MPI2_CONFIG_PAGE_HEADER Header;
1477 U16 DevHandle;
1478 U8 VolumeState;
1479 U8 VolumeType;
1480 U32 VolumeStatusFlags;
1481 MPI2_RAIDVOL0_SETTINGS VolumeSettings;
1482 U64 MaxLBA;
1483 U32 StripeSize;
1484 U16 BlockSize;
1485 U16 Reserved1;
1486 U8 SupportedPhysDisks;
1487 U8 ResyncRate;
1488 U16 DataScrubDuration;
1489 U8 NumPhysDisks;
1490 U8 Reserved2;
1491 U8 Reserved3;
1492 U8 InactiveStatus;
1493 MPI2_RAIDVOL0_PHYS_DISK PhysDisk[MPI2_RAID_VOL_PAGE_0_PHYSDISK_MAX];
1494} MPI2_CONFIG_PAGE_RAID_VOL_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_RAID_VOL_0,
1495 Mpi2RaidVolPage0_t, MPI2_POINTER pMpi2RaidVolPage0_t;
1496
1497#define MPI2_RAIDVOLPAGE0_PAGEVERSION (0x0A)
1498
1499
1500#define MPI2_RAID_VOL_STATE_MISSING (0x00)
1501#define MPI2_RAID_VOL_STATE_FAILED (0x01)
1502#define MPI2_RAID_VOL_STATE_INITIALIZING (0x02)
1503#define MPI2_RAID_VOL_STATE_ONLINE (0x03)
1504#define MPI2_RAID_VOL_STATE_DEGRADED (0x04)
1505#define MPI2_RAID_VOL_STATE_OPTIMAL (0x05)
1506
1507
1508#define MPI2_RAID_VOL_TYPE_RAID0 (0x00)
1509#define MPI2_RAID_VOL_TYPE_RAID1E (0x01)
1510#define MPI2_RAID_VOL_TYPE_RAID1 (0x02)
1511#define MPI2_RAID_VOL_TYPE_RAID10 (0x05)
1512#define MPI2_RAID_VOL_TYPE_UNKNOWN (0xFF)
1513
1514
1515#define MPI2_RAIDVOL0_STATUS_FLAG_PENDING_RESYNC (0x02000000)
1516#define MPI2_RAIDVOL0_STATUS_FLAG_BACKG_INIT_PENDING (0x01000000)
1517#define MPI2_RAIDVOL0_STATUS_FLAG_MDC_PENDING (0x00800000)
1518#define MPI2_RAIDVOL0_STATUS_FLAG_USER_CONSIST_PENDING (0x00400000)
1519#define MPI2_RAIDVOL0_STATUS_FLAG_MAKE_DATA_CONSISTENT (0x00200000)
1520#define MPI2_RAIDVOL0_STATUS_FLAG_DATA_SCRUB (0x00100000)
1521#define MPI2_RAIDVOL0_STATUS_FLAG_CONSISTENCY_CHECK (0x00080000)
1522#define MPI2_RAIDVOL0_STATUS_FLAG_CAPACITY_EXPANSION (0x00040000)
1523#define MPI2_RAIDVOL0_STATUS_FLAG_BACKGROUND_INIT (0x00020000)
1524#define MPI2_RAIDVOL0_STATUS_FLAG_RESYNC_IN_PROGRESS (0x00010000)
1525#define MPI2_RAIDVOL0_STATUS_FLAG_VOL_NOT_CONSISTENT (0x00000080)
1526#define MPI2_RAIDVOL0_STATUS_FLAG_OCE_ALLOWED (0x00000040)
1527#define MPI2_RAIDVOL0_STATUS_FLAG_BGI_COMPLETE (0x00000020)
1528#define MPI2_RAIDVOL0_STATUS_FLAG_1E_OFFSET_MIRROR (0x00000000)
1529#define MPI2_RAIDVOL0_STATUS_FLAG_1E_ADJACENT_MIRROR (0x00000010)
1530#define MPI2_RAIDVOL0_STATUS_FLAG_BAD_BLOCK_TABLE_FULL (0x00000008)
1531#define MPI2_RAIDVOL0_STATUS_FLAG_VOLUME_INACTIVE (0x00000004)
1532#define MPI2_RAIDVOL0_STATUS_FLAG_QUIESCED (0x00000002)
1533#define MPI2_RAIDVOL0_STATUS_FLAG_ENABLED (0x00000001)
1534
1535
1536#define MPI2_RAIDVOL0_SUPPORT_SOLID_STATE_DISKS (0x08)
1537#define MPI2_RAIDVOL0_SUPPORT_HARD_DISKS (0x04)
1538#define MPI2_RAIDVOL0_SUPPORT_SAS_PROTOCOL (0x02)
1539#define MPI2_RAIDVOL0_SUPPORT_SATA_PROTOCOL (0x01)
1540
1541
1542#define MPI2_RAIDVOLPAGE0_UNKNOWN_INACTIVE (0x00)
1543#define MPI2_RAIDVOLPAGE0_STALE_METADATA_INACTIVE (0x01)
1544#define MPI2_RAIDVOLPAGE0_FOREIGN_VOLUME_INACTIVE (0x02)
1545#define MPI2_RAIDVOLPAGE0_INSUFFICIENT_RESOURCE_INACTIVE (0x03)
1546#define MPI2_RAIDVOLPAGE0_CLONE_VOLUME_INACTIVE (0x04)
1547#define MPI2_RAIDVOLPAGE0_INSUFFICIENT_METADATA_INACTIVE (0x05)
1548#define MPI2_RAIDVOLPAGE0_PREVIOUSLY_DELETED (0x06)
1549
1550
1551
1552
1553typedef struct _MPI2_CONFIG_PAGE_RAID_VOL_1
1554{
1555 MPI2_CONFIG_PAGE_HEADER Header;
1556 U16 DevHandle;
1557 U16 Reserved0;
1558 U8 GUID[24];
1559 U8 Name[16];
1560 U64 WWID;
1561 U32 Reserved1;
1562 U32 Reserved2;
1563} MPI2_CONFIG_PAGE_RAID_VOL_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_RAID_VOL_1,
1564 Mpi2RaidVolPage1_t, MPI2_POINTER pMpi2RaidVolPage1_t;
1565
1566#define MPI2_RAIDVOLPAGE1_PAGEVERSION (0x03)
1567
1568
1569
1570
1571
1572
1573
1574
1575typedef struct _MPI2_RAIDPHYSDISK0_SETTINGS
1576{
1577 U16 Reserved1;
1578 U8 HotSparePool;
1579 U8 Reserved2;
1580} MPI2_RAIDPHYSDISK0_SETTINGS, MPI2_POINTER PTR_MPI2_RAIDPHYSDISK0_SETTINGS,
1581 Mpi2RaidPhysDisk0Settings_t, MPI2_POINTER pMpi2RaidPhysDisk0Settings_t;
1582
1583
1584
1585typedef struct _MPI2_RAIDPHYSDISK0_INQUIRY_DATA
1586{
1587 U8 VendorID[8];
1588 U8 ProductID[16];
1589 U8 ProductRevLevel[4];
1590 U8 SerialNum[32];
1591} MPI2_RAIDPHYSDISK0_INQUIRY_DATA,
1592 MPI2_POINTER PTR_MPI2_RAIDPHYSDISK0_INQUIRY_DATA,
1593 Mpi2RaidPhysDisk0InquiryData_t, MPI2_POINTER pMpi2RaidPhysDisk0InquiryData_t;
1594
1595typedef struct _MPI2_CONFIG_PAGE_RD_PDISK_0
1596{
1597 MPI2_CONFIG_PAGE_HEADER Header;
1598 U16 DevHandle;
1599 U8 Reserved1;
1600 U8 PhysDiskNum;
1601 MPI2_RAIDPHYSDISK0_SETTINGS PhysDiskSettings;
1602 U32 Reserved2;
1603 MPI2_RAIDPHYSDISK0_INQUIRY_DATA InquiryData;
1604 U32 Reserved3;
1605 U8 PhysDiskState;
1606 U8 OfflineReason;
1607 U8 IncompatibleReason;
1608 U8 PhysDiskAttributes;
1609 U32 PhysDiskStatusFlags;
1610 U64 DeviceMaxLBA;
1611 U64 HostMaxLBA;
1612 U64 CoercedMaxLBA;
1613 U16 BlockSize;
1614 U16 Reserved5;
1615 U32 Reserved6;
1616} MPI2_CONFIG_PAGE_RD_PDISK_0,
1617 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_RD_PDISK_0,
1618 Mpi2RaidPhysDiskPage0_t, MPI2_POINTER pMpi2RaidPhysDiskPage0_t;
1619
1620#define MPI2_RAIDPHYSDISKPAGE0_PAGEVERSION (0x05)
1621
1622
1623#define MPI2_RAID_PD_STATE_NOT_CONFIGURED (0x00)
1624#define MPI2_RAID_PD_STATE_NOT_COMPATIBLE (0x01)
1625#define MPI2_RAID_PD_STATE_OFFLINE (0x02)
1626#define MPI2_RAID_PD_STATE_ONLINE (0x03)
1627#define MPI2_RAID_PD_STATE_HOT_SPARE (0x04)
1628#define MPI2_RAID_PD_STATE_DEGRADED (0x05)
1629#define MPI2_RAID_PD_STATE_REBUILDING (0x06)
1630#define MPI2_RAID_PD_STATE_OPTIMAL (0x07)
1631
1632
1633#define MPI2_PHYSDISK0_ONLINE (0x00)
1634#define MPI2_PHYSDISK0_OFFLINE_MISSING (0x01)
1635#define MPI2_PHYSDISK0_OFFLINE_FAILED (0x03)
1636#define MPI2_PHYSDISK0_OFFLINE_INITIALIZING (0x04)
1637#define MPI2_PHYSDISK0_OFFLINE_REQUESTED (0x05)
1638#define MPI2_PHYSDISK0_OFFLINE_FAILED_REQUESTED (0x06)
1639#define MPI2_PHYSDISK0_OFFLINE_OTHER (0xFF)
1640
1641
1642#define MPI2_PHYSDISK0_COMPATIBLE (0x00)
1643#define MPI2_PHYSDISK0_INCOMPATIBLE_PROTOCOL (0x01)
1644#define MPI2_PHYSDISK0_INCOMPATIBLE_BLOCKSIZE (0x02)
1645#define MPI2_PHYSDISK0_INCOMPATIBLE_MAX_LBA (0x03)
1646#define MPI2_PHYSDISK0_INCOMPATIBLE_SATA_EXTENDED_CMD (0x04)
1647#define MPI2_PHYSDISK0_INCOMPATIBLE_REMOVEABLE_MEDIA (0x05)
1648#define MPI2_PHYSDISK0_INCOMPATIBLE_MEDIA_TYPE (0x06)
1649#define MPI2_PHYSDISK0_INCOMPATIBLE_UNKNOWN (0xFF)
1650
1651
1652#define MPI2_PHYSDISK0_ATTRIB_MEDIA_MASK (0x0C)
1653#define MPI2_PHYSDISK0_ATTRIB_SOLID_STATE_DRIVE (0x08)
1654#define MPI2_PHYSDISK0_ATTRIB_HARD_DISK_DRIVE (0x04)
1655
1656#define MPI2_PHYSDISK0_ATTRIB_PROTOCOL_MASK (0x03)
1657#define MPI2_PHYSDISK0_ATTRIB_SAS_PROTOCOL (0x02)
1658#define MPI2_PHYSDISK0_ATTRIB_SATA_PROTOCOL (0x01)
1659
1660
1661#define MPI2_PHYSDISK0_STATUS_FLAG_NOT_CERTIFIED (0x00000040)
1662#define MPI2_PHYSDISK0_STATUS_FLAG_OCE_TARGET (0x00000020)
1663#define MPI2_PHYSDISK0_STATUS_FLAG_WRITE_CACHE_ENABLED (0x00000010)
1664#define MPI2_PHYSDISK0_STATUS_FLAG_OPTIMAL_PREVIOUS (0x00000000)
1665#define MPI2_PHYSDISK0_STATUS_FLAG_NOT_OPTIMAL_PREVIOUS (0x00000008)
1666#define MPI2_PHYSDISK0_STATUS_FLAG_INACTIVE_VOLUME (0x00000004)
1667#define MPI2_PHYSDISK0_STATUS_FLAG_QUIESCED (0x00000002)
1668#define MPI2_PHYSDISK0_STATUS_FLAG_OUT_OF_SYNC (0x00000001)
1669
1670
1671
1672
1673
1674
1675
1676
1677#ifndef MPI2_RAID_PHYS_DISK1_PATH_MAX
1678#define MPI2_RAID_PHYS_DISK1_PATH_MAX (1)
1679#endif
1680
1681typedef struct _MPI2_RAIDPHYSDISK1_PATH
1682{
1683 U16 DevHandle;
1684 U16 Reserved1;
1685 U64 WWID;
1686 U64 OwnerWWID;
1687 U8 OwnerIdentifier;
1688 U8 Reserved2;
1689 U16 Flags;
1690} MPI2_RAIDPHYSDISK1_PATH, MPI2_POINTER PTR_MPI2_RAIDPHYSDISK1_PATH,
1691 Mpi2RaidPhysDisk1Path_t, MPI2_POINTER pMpi2RaidPhysDisk1Path_t;
1692
1693
1694#define MPI2_RAID_PHYSDISK1_FLAG_PRIMARY (0x0004)
1695#define MPI2_RAID_PHYSDISK1_FLAG_BROKEN (0x0002)
1696#define MPI2_RAID_PHYSDISK1_FLAG_INVALID (0x0001)
1697
1698typedef struct _MPI2_CONFIG_PAGE_RD_PDISK_1
1699{
1700 MPI2_CONFIG_PAGE_HEADER Header;
1701 U8 NumPhysDiskPaths;
1702 U8 PhysDiskNum;
1703 U16 Reserved1;
1704 U32 Reserved2;
1705 MPI2_RAIDPHYSDISK1_PATH PhysicalDiskPath[MPI2_RAID_PHYS_DISK1_PATH_MAX];
1706} MPI2_CONFIG_PAGE_RD_PDISK_1,
1707 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_RD_PDISK_1,
1708 Mpi2RaidPhysDiskPage1_t, MPI2_POINTER pMpi2RaidPhysDiskPage1_t;
1709
1710#define MPI2_RAIDPHYSDISKPAGE1_PAGEVERSION (0x02)
1711
1712
1713
1714
1715
1716
1717
1718#define MPI2_SAS_NEG_LINK_RATE_MASK_LOGICAL (0xF0)
1719#define MPI2_SAS_NEG_LINK_RATE_SHIFT_LOGICAL (4)
1720#define MPI2_SAS_NEG_LINK_RATE_MASK_PHYSICAL (0x0F)
1721
1722#define MPI2_SAS_NEG_LINK_RATE_UNKNOWN_LINK_RATE (0x00)
1723#define MPI2_SAS_NEG_LINK_RATE_PHY_DISABLED (0x01)
1724#define MPI2_SAS_NEG_LINK_RATE_NEGOTIATION_FAILED (0x02)
1725#define MPI2_SAS_NEG_LINK_RATE_SATA_OOB_COMPLETE (0x03)
1726#define MPI2_SAS_NEG_LINK_RATE_PORT_SELECTOR (0x04)
1727#define MPI2_SAS_NEG_LINK_RATE_SMP_RESET_IN_PROGRESS (0x05)
1728#define MPI2_SAS_NEG_LINK_RATE_UNSUPPORTED_PHY (0x06)
1729#define MPI2_SAS_NEG_LINK_RATE_1_5 (0x08)
1730#define MPI2_SAS_NEG_LINK_RATE_3_0 (0x09)
1731#define MPI2_SAS_NEG_LINK_RATE_6_0 (0x0A)
1732
1733
1734
1735#define MPI2_SAS_APHYINFO_INSIDE_ZPSDS_PERSISTENT (0x00000040)
1736#define MPI2_SAS_APHYINFO_REQUESTED_INSIDE_ZPSDS (0x00000020)
1737#define MPI2_SAS_APHYINFO_BREAK_REPLY_CAPABLE (0x00000010)
1738
1739#define MPI2_SAS_APHYINFO_REASON_MASK (0x0000000F)
1740#define MPI2_SAS_APHYINFO_REASON_UNKNOWN (0x00000000)
1741#define MPI2_SAS_APHYINFO_REASON_POWER_ON (0x00000001)
1742#define MPI2_SAS_APHYINFO_REASON_HARD_RESET (0x00000002)
1743#define MPI2_SAS_APHYINFO_REASON_SMP_PHY_CONTROL (0x00000003)
1744#define MPI2_SAS_APHYINFO_REASON_LOSS_OF_SYNC (0x00000004)
1745#define MPI2_SAS_APHYINFO_REASON_MULTIPLEXING_SEQ (0x00000005)
1746#define MPI2_SAS_APHYINFO_REASON_IT_NEXUS_LOSS_TIMER (0x00000006)
1747#define MPI2_SAS_APHYINFO_REASON_BREAK_TIMEOUT (0x00000007)
1748#define MPI2_SAS_APHYINFO_REASON_PHY_TEST_STOPPED (0x00000008)
1749
1750
1751
1752#define MPI2_SAS_PHYINFO_PHY_VACANT (0x80000000)
1753
1754#define MPI2_SAS_PHYINFO_PHY_POWER_CONDITION_MASK (0x18000000)
1755#define MPI2_SAS_PHYINFO_SHIFT_PHY_POWER_CONDITION (27)
1756#define MPI2_SAS_PHYINFO_PHY_POWER_ACTIVE (0x00000000)
1757#define MPI2_SAS_PHYINFO_PHY_POWER_PARTIAL (0x08000000)
1758#define MPI2_SAS_PHYINFO_PHY_POWER_SLUMBER (0x10000000)
1759
1760#define MPI2_SAS_PHYINFO_CHANGED_REQ_INSIDE_ZPSDS (0x04000000)
1761#define MPI2_SAS_PHYINFO_INSIDE_ZPSDS_PERSISTENT (0x02000000)
1762#define MPI2_SAS_PHYINFO_REQ_INSIDE_ZPSDS (0x01000000)
1763#define MPI2_SAS_PHYINFO_ZONE_GROUP_PERSISTENT (0x00400000)
1764#define MPI2_SAS_PHYINFO_INSIDE_ZPSDS (0x00200000)
1765#define MPI2_SAS_PHYINFO_ZONING_ENABLED (0x00100000)
1766
1767#define MPI2_SAS_PHYINFO_REASON_MASK (0x000F0000)
1768#define MPI2_SAS_PHYINFO_REASON_UNKNOWN (0x00000000)
1769#define MPI2_SAS_PHYINFO_REASON_POWER_ON (0x00010000)
1770#define MPI2_SAS_PHYINFO_REASON_HARD_RESET (0x00020000)
1771#define MPI2_SAS_PHYINFO_REASON_SMP_PHY_CONTROL (0x00030000)
1772#define MPI2_SAS_PHYINFO_REASON_LOSS_OF_SYNC (0x00040000)
1773#define MPI2_SAS_PHYINFO_REASON_MULTIPLEXING_SEQ (0x00050000)
1774#define MPI2_SAS_PHYINFO_REASON_IT_NEXUS_LOSS_TIMER (0x00060000)
1775#define MPI2_SAS_PHYINFO_REASON_BREAK_TIMEOUT (0x00070000)
1776#define MPI2_SAS_PHYINFO_REASON_PHY_TEST_STOPPED (0x00080000)
1777
1778#define MPI2_SAS_PHYINFO_MULTIPLEXING_SUPPORTED (0x00008000)
1779#define MPI2_SAS_PHYINFO_SATA_PORT_ACTIVE (0x00004000)
1780#define MPI2_SAS_PHYINFO_SATA_PORT_SELECTOR_PRESENT (0x00002000)
1781#define MPI2_SAS_PHYINFO_VIRTUAL_PHY (0x00001000)
1782
1783#define MPI2_SAS_PHYINFO_MASK_PARTIAL_PATHWAY_TIME (0x00000F00)
1784#define MPI2_SAS_PHYINFO_SHIFT_PARTIAL_PATHWAY_TIME (8)
1785
1786#define MPI2_SAS_PHYINFO_MASK_ROUTING_ATTRIBUTE (0x000000F0)
1787#define MPI2_SAS_PHYINFO_DIRECT_ROUTING (0x00000000)
1788#define MPI2_SAS_PHYINFO_SUBTRACTIVE_ROUTING (0x00000010)
1789#define MPI2_SAS_PHYINFO_TABLE_ROUTING (0x00000020)
1790
1791
1792
1793#define MPI2_SAS_PRATE_MAX_RATE_MASK (0xF0)
1794#define MPI2_SAS_PRATE_MAX_RATE_NOT_PROGRAMMABLE (0x00)
1795#define MPI2_SAS_PRATE_MAX_RATE_1_5 (0x80)
1796#define MPI2_SAS_PRATE_MAX_RATE_3_0 (0x90)
1797#define MPI2_SAS_PRATE_MAX_RATE_6_0 (0xA0)
1798#define MPI2_SAS_PRATE_MIN_RATE_MASK (0x0F)
1799#define MPI2_SAS_PRATE_MIN_RATE_NOT_PROGRAMMABLE (0x00)
1800#define MPI2_SAS_PRATE_MIN_RATE_1_5 (0x08)
1801#define MPI2_SAS_PRATE_MIN_RATE_3_0 (0x09)
1802#define MPI2_SAS_PRATE_MIN_RATE_6_0 (0x0A)
1803
1804
1805
1806#define MPI2_SAS_HWRATE_MAX_RATE_MASK (0xF0)
1807#define MPI2_SAS_HWRATE_MAX_RATE_1_5 (0x80)
1808#define MPI2_SAS_HWRATE_MAX_RATE_3_0 (0x90)
1809#define MPI2_SAS_HWRATE_MAX_RATE_6_0 (0xA0)
1810#define MPI2_SAS_HWRATE_MIN_RATE_MASK (0x0F)
1811#define MPI2_SAS_HWRATE_MIN_RATE_1_5 (0x08)
1812#define MPI2_SAS_HWRATE_MIN_RATE_3_0 (0x09)
1813#define MPI2_SAS_HWRATE_MIN_RATE_6_0 (0x0A)
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823typedef struct _MPI2_SAS_IO_UNIT0_PHY_DATA
1824{
1825 U8 Port;
1826 U8 PortFlags;
1827 U8 PhyFlags;
1828 U8 NegotiatedLinkRate;
1829 U32 ControllerPhyDeviceInfo;
1830 U16 AttachedDevHandle;
1831 U16 ControllerDevHandle;
1832 U32 DiscoveryStatus;
1833 U32 Reserved;
1834} MPI2_SAS_IO_UNIT0_PHY_DATA, MPI2_POINTER PTR_MPI2_SAS_IO_UNIT0_PHY_DATA,
1835 Mpi2SasIOUnit0PhyData_t, MPI2_POINTER pMpi2SasIOUnit0PhyData_t;
1836
1837
1838
1839
1840
1841#ifndef MPI2_SAS_IOUNIT0_PHY_MAX
1842#define MPI2_SAS_IOUNIT0_PHY_MAX (1)
1843#endif
1844
1845typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_0
1846{
1847 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
1848 U32 Reserved1;
1849 U8 NumPhys;
1850 U8 Reserved2;
1851 U16 Reserved3;
1852 MPI2_SAS_IO_UNIT0_PHY_DATA PhyData[MPI2_SAS_IOUNIT0_PHY_MAX];
1853} MPI2_CONFIG_PAGE_SASIOUNIT_0,
1854 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT_0,
1855 Mpi2SasIOUnitPage0_t, MPI2_POINTER pMpi2SasIOUnitPage0_t;
1856
1857#define MPI2_SASIOUNITPAGE0_PAGEVERSION (0x05)
1858
1859
1860#define MPI2_SASIOUNIT0_PORTFLAGS_DISCOVERY_IN_PROGRESS (0x08)
1861#define MPI2_SASIOUNIT0_PORTFLAGS_AUTO_PORT_CONFIG (0x01)
1862
1863
1864#define MPI2_SASIOUNIT0_PHYFLAGS_ZONING_ENABLED (0x10)
1865#define MPI2_SASIOUNIT0_PHYFLAGS_PHY_DISABLED (0x08)
1866
1867
1868
1869
1870
1871
1872#define MPI2_SASIOUNIT0_DS_MAX_ENCLOSURES_EXCEED (0x80000000)
1873#define MPI2_SASIOUNIT0_DS_MAX_EXPANDERS_EXCEED (0x40000000)
1874#define MPI2_SASIOUNIT0_DS_MAX_DEVICES_EXCEED (0x20000000)
1875#define MPI2_SASIOUNIT0_DS_MAX_TOPO_PHYS_EXCEED (0x10000000)
1876#define MPI2_SASIOUNIT0_DS_DOWNSTREAM_INITIATOR (0x08000000)
1877#define MPI2_SASIOUNIT0_DS_MULTI_SUBTRACTIVE_SUBTRACTIVE (0x00008000)
1878#define MPI2_SASIOUNIT0_DS_EXP_MULTI_SUBTRACTIVE (0x00004000)
1879#define MPI2_SASIOUNIT0_DS_MULTI_PORT_DOMAIN (0x00002000)
1880#define MPI2_SASIOUNIT0_DS_TABLE_TO_SUBTRACTIVE_LINK (0x00001000)
1881#define MPI2_SASIOUNIT0_DS_UNSUPPORTED_DEVICE (0x00000800)
1882#define MPI2_SASIOUNIT0_DS_TABLE_LINK (0x00000400)
1883#define MPI2_SASIOUNIT0_DS_SUBTRACTIVE_LINK (0x00000200)
1884#define MPI2_SASIOUNIT0_DS_SMP_CRC_ERROR (0x00000100)
1885#define MPI2_SASIOUNIT0_DS_SMP_FUNCTION_FAILED (0x00000080)
1886#define MPI2_SASIOUNIT0_DS_INDEX_NOT_EXIST (0x00000040)
1887#define MPI2_SASIOUNIT0_DS_OUT_ROUTE_ENTRIES (0x00000020)
1888#define MPI2_SASIOUNIT0_DS_SMP_TIMEOUT (0x00000010)
1889#define MPI2_SASIOUNIT0_DS_MULTIPLE_PORTS (0x00000004)
1890#define MPI2_SASIOUNIT0_DS_UNADDRESSABLE_DEVICE (0x00000002)
1891#define MPI2_SASIOUNIT0_DS_LOOP_DETECTED (0x00000001)
1892
1893
1894
1895
1896typedef struct _MPI2_SAS_IO_UNIT1_PHY_DATA
1897{
1898 U8 Port;
1899 U8 PortFlags;
1900 U8 PhyFlags;
1901 U8 MaxMinLinkRate;
1902 U32 ControllerPhyDeviceInfo;
1903 U16 MaxTargetPortConnectTime;
1904 U16 Reserved1;
1905} MPI2_SAS_IO_UNIT1_PHY_DATA, MPI2_POINTER PTR_MPI2_SAS_IO_UNIT1_PHY_DATA,
1906 Mpi2SasIOUnit1PhyData_t, MPI2_POINTER pMpi2SasIOUnit1PhyData_t;
1907
1908
1909
1910
1911
1912#ifndef MPI2_SAS_IOUNIT1_PHY_MAX
1913#define MPI2_SAS_IOUNIT1_PHY_MAX (1)
1914#endif
1915
1916typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_1
1917{
1918 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
1919 U16 ControlFlags;
1920 U16 SASNarrowMaxQueueDepth;
1921 U16 AdditionalControlFlags;
1922 U16 SASWideMaxQueueDepth;
1923 U8 NumPhys;
1924 U8 SATAMaxQDepth;
1925 U8 ReportDeviceMissingDelay;
1926 U8 IODeviceMissingDelay;
1927 MPI2_SAS_IO_UNIT1_PHY_DATA PhyData[MPI2_SAS_IOUNIT1_PHY_MAX];
1928} MPI2_CONFIG_PAGE_SASIOUNIT_1,
1929 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT_1,
1930 Mpi2SasIOUnitPage1_t, MPI2_POINTER pMpi2SasIOUnitPage1_t;
1931
1932#define MPI2_SASIOUNITPAGE1_PAGEVERSION (0x09)
1933
1934
1935#define MPI2_SASIOUNIT1_CONTROL_DEVICE_SELF_TEST (0x8000)
1936#define MPI2_SASIOUNIT1_CONTROL_SATA_3_0_MAX (0x4000)
1937#define MPI2_SASIOUNIT1_CONTROL_SATA_1_5_MAX (0x2000)
1938#define MPI2_SASIOUNIT1_CONTROL_SATA_SW_PRESERVE (0x1000)
1939
1940#define MPI2_SASIOUNIT1_CONTROL_MASK_DEV_SUPPORT (0x0600)
1941#define MPI2_SASIOUNIT1_CONTROL_SHIFT_DEV_SUPPORT (9)
1942#define MPI2_SASIOUNIT1_CONTROL_DEV_SUPPORT_BOTH (0x0)
1943#define MPI2_SASIOUNIT1_CONTROL_DEV_SAS_SUPPORT (0x1)
1944#define MPI2_SASIOUNIT1_CONTROL_DEV_SATA_SUPPORT (0x2)
1945
1946#define MPI2_SASIOUNIT1_CONTROL_SATA_48BIT_LBA_REQUIRED (0x0080)
1947#define MPI2_SASIOUNIT1_CONTROL_SATA_SMART_REQUIRED (0x0040)
1948#define MPI2_SASIOUNIT1_CONTROL_SATA_NCQ_REQUIRED (0x0020)
1949#define MPI2_SASIOUNIT1_CONTROL_SATA_FUA_REQUIRED (0x0010)
1950#define MPI2_SASIOUNIT1_CONTROL_TABLE_SUBTRACTIVE_ILLEGAL (0x0008)
1951#define MPI2_SASIOUNIT1_CONTROL_SUBTRACTIVE_ILLEGAL (0x0004)
1952#define MPI2_SASIOUNIT1_CONTROL_FIRST_LVL_DISC_ONLY (0x0002)
1953#define MPI2_SASIOUNIT1_CONTROL_CLEAR_AFFILIATION (0x0001)
1954
1955
1956#define MPI2_SASIOUNIT1_ACONTROL_MULTI_PORT_DOMAIN_ILLEGAL (0x0080)
1957#define MPI2_SASIOUNIT1_ACONTROL_SATA_ASYNCHROUNOUS_NOTIFICATION (0x0040)
1958#define MPI2_SASIOUNIT1_ACONTROL_INVALID_TOPOLOGY_CORRECTION (0x0020)
1959#define MPI2_SASIOUNIT1_ACONTROL_PORT_ENABLE_ONLY_SATA_LINK_RESET (0x0010)
1960#define MPI2_SASIOUNIT1_ACONTROL_OTHER_AFFILIATION_SATA_LINK_RESET (0x0008)
1961#define MPI2_SASIOUNIT1_ACONTROL_SELF_AFFILIATION_SATA_LINK_RESET (0x0004)
1962#define MPI2_SASIOUNIT1_ACONTROL_NO_AFFILIATION_SATA_LINK_RESET (0x0002)
1963#define MPI2_SASIOUNIT1_ACONTROL_ALLOW_TABLE_TO_TABLE (0x0001)
1964
1965
1966#define MPI2_SASIOUNIT1_REPORT_MISSING_TIMEOUT_MASK (0x7F)
1967#define MPI2_SASIOUNIT1_REPORT_MISSING_UNIT_16 (0x80)
1968
1969
1970#define MPI2_SASIOUNIT1_PORT_FLAGS_AUTO_PORT_CONFIG (0x01)
1971
1972
1973#define MPI2_SASIOUNIT1_PHYFLAGS_ZONING_ENABLE (0x10)
1974#define MPI2_SASIOUNIT1_PHYFLAGS_PHY_DISABLE (0x08)
1975
1976
1977#define MPI2_SASIOUNIT1_MAX_RATE_MASK (0xF0)
1978#define MPI2_SASIOUNIT1_MAX_RATE_1_5 (0x80)
1979#define MPI2_SASIOUNIT1_MAX_RATE_3_0 (0x90)
1980#define MPI2_SASIOUNIT1_MAX_RATE_6_0 (0xA0)
1981#define MPI2_SASIOUNIT1_MIN_RATE_MASK (0x0F)
1982#define MPI2_SASIOUNIT1_MIN_RATE_1_5 (0x08)
1983#define MPI2_SASIOUNIT1_MIN_RATE_3_0 (0x09)
1984#define MPI2_SASIOUNIT1_MIN_RATE_6_0 (0x0A)
1985
1986
1987
1988
1989
1990
1991typedef struct _MPI2_SAS_IOUNIT4_SPINUP_GROUP
1992{
1993 U8 MaxTargetSpinup;
1994 U8 SpinupDelay;
1995 U8 SpinupFlags;
1996 U8 Reserved1;
1997} MPI2_SAS_IOUNIT4_SPINUP_GROUP, MPI2_POINTER PTR_MPI2_SAS_IOUNIT4_SPINUP_GROUP,
1998 Mpi2SasIOUnit4SpinupGroup_t, MPI2_POINTER pMpi2SasIOUnit4SpinupGroup_t;
1999
2000
2001#define MPI2_SASIOUNIT4_SPINUP_DISABLE_FLAG (0x01)
2002
2003
2004
2005
2006
2007#ifndef MPI2_SAS_IOUNIT4_PHY_MAX
2008#define MPI2_SAS_IOUNIT4_PHY_MAX (4)
2009#endif
2010
2011typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_4
2012{
2013 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2014 MPI2_SAS_IOUNIT4_SPINUP_GROUP SpinupGroupParameters[4];
2015 U32 Reserved1;
2016 U32 Reserved2;
2017 U32 Reserved3;
2018 U8 BootDeviceWaitTime;
2019 U8 Reserved4;
2020 U16 Reserved5;
2021 U8 NumPhys;
2022 U8 PEInitialSpinupDelay;
2023 U8 PEReplyDelay;
2024 U8 Flags;
2025 U8 PHY[MPI2_SAS_IOUNIT4_PHY_MAX];
2026} MPI2_CONFIG_PAGE_SASIOUNIT_4,
2027 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT_4,
2028 Mpi2SasIOUnitPage4_t, MPI2_POINTER pMpi2SasIOUnitPage4_t;
2029
2030#define MPI2_SASIOUNITPAGE4_PAGEVERSION (0x02)
2031
2032
2033#define MPI2_SASIOUNIT4_FLAGS_AUTO_PORTENABLE (0x01)
2034
2035
2036#define MPI2_SASIOUNIT4_PHY_SPINUP_GROUP_MASK (0x03)
2037
2038
2039
2040
2041typedef struct _MPI2_SAS_IO_UNIT5_PHY_PM_SETTINGS {
2042 U8 ControlFlags;
2043 U8 PortWidthModGroup;
2044 U16 InactivityTimerExponent;
2045 U8 SATAPartialTimeout;
2046 U8 Reserved2;
2047 U8 SATASlumberTimeout;
2048 U8 Reserved3;
2049 U8 SASPartialTimeout;
2050 U8 Reserved4;
2051 U8 SASSlumberTimeout;
2052 U8 Reserved5;
2053} MPI2_SAS_IO_UNIT5_PHY_PM_SETTINGS,
2054 MPI2_POINTER PTR_MPI2_SAS_IO_UNIT5_PHY_PM_SETTINGS,
2055 Mpi2SasIOUnit5PhyPmSettings_t, MPI2_POINTER pMpi2SasIOUnit5PhyPmSettings_t;
2056
2057
2058#define MPI2_SASIOUNIT5_CONTROL_SAS_SLUMBER_ENABLE (0x08)
2059#define MPI2_SASIOUNIT5_CONTROL_SAS_PARTIAL_ENABLE (0x04)
2060#define MPI2_SASIOUNIT5_CONTROL_SATA_SLUMBER_ENABLE (0x02)
2061#define MPI2_SASIOUNIT5_CONTROL_SATA_PARTIAL_ENABLE (0x01)
2062
2063
2064#define MPI2_SASIOUNIT5_PWMG_DISABLE (0xFF)
2065
2066
2067#define MPI2_SASIOUNIT5_ITE_MASK_SAS_SLUMBER (0x7000)
2068#define MPI2_SASIOUNIT5_ITE_SHIFT_SAS_SLUMBER (12)
2069#define MPI2_SASIOUNIT5_ITE_MASK_SAS_PARTIAL (0x0700)
2070#define MPI2_SASIOUNIT5_ITE_SHIFT_SAS_PARTIAL (8)
2071#define MPI2_SASIOUNIT5_ITE_MASK_SATA_SLUMBER (0x0070)
2072#define MPI2_SASIOUNIT5_ITE_SHIFT_SATA_SLUMBER (4)
2073#define MPI2_SASIOUNIT5_ITE_MASK_SATA_PARTIAL (0x0007)
2074#define MPI2_SASIOUNIT5_ITE_SHIFT_SATA_PARTIAL (0)
2075
2076#define MPI2_SASIOUNIT5_ITE_TEN_SECONDS (7)
2077#define MPI2_SASIOUNIT5_ITE_ONE_SECOND (6)
2078#define MPI2_SASIOUNIT5_ITE_HUNDRED_MILLISECONDS (5)
2079#define MPI2_SASIOUNIT5_ITE_TEN_MILLISECONDS (4)
2080#define MPI2_SASIOUNIT5_ITE_ONE_MILLISECOND (3)
2081#define MPI2_SASIOUNIT5_ITE_HUNDRED_MICROSECONDS (2)
2082#define MPI2_SASIOUNIT5_ITE_TEN_MICROSECONDS (1)
2083#define MPI2_SASIOUNIT5_ITE_ONE_MICROSECOND (0)
2084
2085
2086
2087
2088
2089#ifndef MPI2_SAS_IOUNIT5_PHY_MAX
2090#define MPI2_SAS_IOUNIT5_PHY_MAX (1)
2091#endif
2092
2093typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_5 {
2094 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2095 U8 NumPhys;
2096 U8 Reserved1;
2097 U16 Reserved2;
2098 U32 Reserved3;
2099 MPI2_SAS_IO_UNIT5_PHY_PM_SETTINGS SASPhyPowerManagementSettings
2100 [MPI2_SAS_IOUNIT5_PHY_MAX];
2101} MPI2_CONFIG_PAGE_SASIOUNIT_5,
2102 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT_5,
2103 Mpi2SasIOUnitPage5_t, MPI2_POINTER pMpi2SasIOUnitPage5_t;
2104
2105#define MPI2_SASIOUNITPAGE5_PAGEVERSION (0x01)
2106
2107
2108
2109
2110typedef struct _MPI2_SAS_IO_UNIT6_PORT_WIDTH_MOD_GROUP_STATUS {
2111 U8 CurrentStatus;
2112 U8 CurrentModulation;
2113 U8 CurrentUtilization;
2114 U8 Reserved1;
2115 U32 Reserved2;
2116} MPI2_SAS_IO_UNIT6_PORT_WIDTH_MOD_GROUP_STATUS,
2117 MPI2_POINTER PTR_MPI2_SAS_IO_UNIT6_PORT_WIDTH_MOD_GROUP_STATUS,
2118 Mpi2SasIOUnit6PortWidthModGroupStatus_t,
2119 MPI2_POINTER pMpi2SasIOUnit6PortWidthModGroupStatus_t;
2120
2121
2122#define MPI2_SASIOUNIT6_STATUS_UNAVAILABLE (0x00)
2123#define MPI2_SASIOUNIT6_STATUS_UNCONFIGURED (0x01)
2124#define MPI2_SASIOUNIT6_STATUS_INVALID_CONFIG (0x02)
2125#define MPI2_SASIOUNIT6_STATUS_LINK_DOWN (0x03)
2126#define MPI2_SASIOUNIT6_STATUS_OBSERVATION_ONLY (0x04)
2127#define MPI2_SASIOUNIT6_STATUS_INACTIVE (0x05)
2128#define MPI2_SASIOUNIT6_STATUS_ACTIVE_IOUNIT (0x06)
2129#define MPI2_SASIOUNIT6_STATUS_ACTIVE_HOST (0x07)
2130
2131
2132#define MPI2_SASIOUNIT6_MODULATION_25_PERCENT (0x00)
2133#define MPI2_SASIOUNIT6_MODULATION_50_PERCENT (0x01)
2134#define MPI2_SASIOUNIT6_MODULATION_75_PERCENT (0x02)
2135#define MPI2_SASIOUNIT6_MODULATION_100_PERCENT (0x03)
2136
2137
2138
2139
2140
2141#ifndef MPI2_SAS_IOUNIT6_GROUP_MAX
2142#define MPI2_SAS_IOUNIT6_GROUP_MAX (1)
2143#endif
2144
2145typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_6 {
2146 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2147 U32 Reserved1;
2148 U32 Reserved2;
2149 U8 NumGroups;
2150 U8 Reserved3;
2151 U16 Reserved4;
2152 MPI2_SAS_IO_UNIT6_PORT_WIDTH_MOD_GROUP_STATUS
2153 PortWidthModulationGroupStatus[MPI2_SAS_IOUNIT6_GROUP_MAX];
2154} MPI2_CONFIG_PAGE_SASIOUNIT_6,
2155 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT_6,
2156 Mpi2SasIOUnitPage6_t, MPI2_POINTER pMpi2SasIOUnitPage6_t;
2157
2158#define MPI2_SASIOUNITPAGE6_PAGEVERSION (0x00)
2159
2160
2161
2162
2163typedef struct _MPI2_SAS_IO_UNIT7_PORT_WIDTH_MOD_GROUP_SETTINGS {
2164 U8 Flags;
2165 U8 Reserved1;
2166 U16 Reserved2;
2167 U8 Threshold75Pct;
2168 U8 Threshold50Pct;
2169 U8 Threshold25Pct;
2170 U8 Reserved3;
2171} MPI2_SAS_IO_UNIT7_PORT_WIDTH_MOD_GROUP_SETTINGS,
2172 MPI2_POINTER PTR_MPI2_SAS_IO_UNIT7_PORT_WIDTH_MOD_GROUP_SETTINGS,
2173 Mpi2SasIOUnit7PortWidthModGroupSettings_t,
2174 MPI2_POINTER pMpi2SasIOUnit7PortWidthModGroupSettings_t;
2175
2176
2177#define MPI2_SASIOUNIT7_FLAGS_ENABLE_PORT_WIDTH_MODULATION (0x01)
2178
2179
2180
2181
2182
2183
2184#ifndef MPI2_SAS_IOUNIT7_GROUP_MAX
2185#define MPI2_SAS_IOUNIT7_GROUP_MAX (1)
2186#endif
2187
2188typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_7 {
2189 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2190 U8 SamplingInterval;
2191 U8 WindowLength;
2192 U16 Reserved1;
2193 U32 Reserved2;
2194 U32 Reserved3;
2195 U8 NumGroups;
2196 U8 Reserved4;
2197 U16 Reserved5;
2198 MPI2_SAS_IO_UNIT7_PORT_WIDTH_MOD_GROUP_SETTINGS
2199 PortWidthModulationGroupSettings[MPI2_SAS_IOUNIT7_GROUP_MAX];
2200} MPI2_CONFIG_PAGE_SASIOUNIT_7,
2201 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT_7,
2202 Mpi2SasIOUnitPage7_t, MPI2_POINTER pMpi2SasIOUnitPage7_t;
2203
2204#define MPI2_SASIOUNITPAGE7_PAGEVERSION (0x00)
2205
2206
2207
2208
2209typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_8 {
2210 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2211 U32 Reserved1;
2212 U32 PowerManagementCapabilities;
2213 U32 Reserved2;
2214} MPI2_CONFIG_PAGE_SASIOUNIT_8,
2215 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT_8,
2216 Mpi2SasIOUnitPage8_t, MPI2_POINTER pMpi2SasIOUnitPage8_t;
2217
2218#define MPI2_SASIOUNITPAGE8_PAGEVERSION (0x00)
2219
2220
2221#define MPI2_SASIOUNIT8_PM_HOST_PORT_WIDTH_MOD (0x00001000)
2222#define MPI2_SASIOUNIT8_PM_HOST_SAS_SLUMBER_MODE (0x00000800)
2223#define MPI2_SASIOUNIT8_PM_HOST_SAS_PARTIAL_MODE (0x00000400)
2224#define MPI2_SASIOUNIT8_PM_HOST_SATA_SLUMBER_MODE (0x00000200)
2225#define MPI2_SASIOUNIT8_PM_HOST_SATA_PARTIAL_MODE (0x00000100)
2226#define MPI2_SASIOUNIT8_PM_IOUNIT_PORT_WIDTH_MOD (0x00000010)
2227#define MPI2_SASIOUNIT8_PM_IOUNIT_SAS_SLUMBER_MODE (0x00000008)
2228#define MPI2_SASIOUNIT8_PM_IOUNIT_SAS_PARTIAL_MODE (0x00000004)
2229#define MPI2_SASIOUNIT8_PM_IOUNIT_SATA_SLUMBER_MODE (0x00000002)
2230#define MPI2_SASIOUNIT8_PM_IOUNIT_SATA_PARTIAL_MODE (0x00000001)
2231
2232
2233
2234
2235
2236typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT16 {
2237 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2238 U64 TimeStamp;
2239 U32 Reserved1;
2240 U32 Reserved2;
2241 U32 FastPathPendedRequests;
2242 U32 FastPathUnPendedRequests;
2243 U32 FastPathHostRequestStarts;
2244 U32 FastPathFirmwareRequestStarts;
2245 U32 FastPathHostCompletions;
2246 U32 FastPathFirmwareCompletions;
2247 U32 NonFastPathRequestStarts;
2248 U32 NonFastPathHostCompletions;
2249} MPI2_CONFIG_PAGE_SASIOUNIT16,
2250MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT16,
2251Mpi2SasIOUnitPage16_t, MPI2_POINTER pMpi2SasIOUnitPage16_t;
2252
2253#define MPI2_SASIOUNITPAGE16_PAGEVERSION (0x00)
2254
2255
2256
2257
2258
2259
2260
2261
2262typedef struct _MPI2_CONFIG_PAGE_EXPANDER_0
2263{
2264 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2265 U8 PhysicalPort;
2266 U8 ReportGenLength;
2267 U16 EnclosureHandle;
2268 U64 SASAddress;
2269 U32 DiscoveryStatus;
2270 U16 DevHandle;
2271 U16 ParentDevHandle;
2272 U16 ExpanderChangeCount;
2273 U16 ExpanderRouteIndexes;
2274 U8 NumPhys;
2275 U8 SASLevel;
2276 U16 Flags;
2277 U16 STPBusInactivityTimeLimit;
2278 U16 STPMaxConnectTimeLimit;
2279 U16 STP_SMP_NexusLossTime;
2280 U16 MaxNumRoutedSasAddresses;
2281 U64 ActiveZoneManagerSASAddress;
2282 U16 ZoneLockInactivityLimit;
2283 U16 Reserved1;
2284 U8 TimeToReducedFunc;
2285 U8 InitialTimeToReducedFunc;
2286 U8 MaxReducedFuncTime;
2287 U8 Reserved2;
2288} MPI2_CONFIG_PAGE_EXPANDER_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_EXPANDER_0,
2289 Mpi2ExpanderPage0_t, MPI2_POINTER pMpi2ExpanderPage0_t;
2290
2291#define MPI2_SASEXPANDER0_PAGEVERSION (0x06)
2292
2293
2294#define MPI2_SAS_EXPANDER0_DS_MAX_ENCLOSURES_EXCEED (0x80000000)
2295#define MPI2_SAS_EXPANDER0_DS_MAX_EXPANDERS_EXCEED (0x40000000)
2296#define MPI2_SAS_EXPANDER0_DS_MAX_DEVICES_EXCEED (0x20000000)
2297#define MPI2_SAS_EXPANDER0_DS_MAX_TOPO_PHYS_EXCEED (0x10000000)
2298#define MPI2_SAS_EXPANDER0_DS_DOWNSTREAM_INITIATOR (0x08000000)
2299#define MPI2_SAS_EXPANDER0_DS_MULTI_SUBTRACTIVE_SUBTRACTIVE (0x00008000)
2300#define MPI2_SAS_EXPANDER0_DS_EXP_MULTI_SUBTRACTIVE (0x00004000)
2301#define MPI2_SAS_EXPANDER0_DS_MULTI_PORT_DOMAIN (0x00002000)
2302#define MPI2_SAS_EXPANDER0_DS_TABLE_TO_SUBTRACTIVE_LINK (0x00001000)
2303#define MPI2_SAS_EXPANDER0_DS_UNSUPPORTED_DEVICE (0x00000800)
2304#define MPI2_SAS_EXPANDER0_DS_TABLE_LINK (0x00000400)
2305#define MPI2_SAS_EXPANDER0_DS_SUBTRACTIVE_LINK (0x00000200)
2306#define MPI2_SAS_EXPANDER0_DS_SMP_CRC_ERROR (0x00000100)
2307#define MPI2_SAS_EXPANDER0_DS_SMP_FUNCTION_FAILED (0x00000080)
2308#define MPI2_SAS_EXPANDER0_DS_INDEX_NOT_EXIST (0x00000040)
2309#define MPI2_SAS_EXPANDER0_DS_OUT_ROUTE_ENTRIES (0x00000020)
2310#define MPI2_SAS_EXPANDER0_DS_SMP_TIMEOUT (0x00000010)
2311#define MPI2_SAS_EXPANDER0_DS_MULTIPLE_PORTS (0x00000004)
2312#define MPI2_SAS_EXPANDER0_DS_UNADDRESSABLE_DEVICE (0x00000002)
2313#define MPI2_SAS_EXPANDER0_DS_LOOP_DETECTED (0x00000001)
2314
2315
2316#define MPI2_SAS_EXPANDER0_FLAGS_REDUCED_FUNCTIONALITY (0x2000)
2317#define MPI2_SAS_EXPANDER0_FLAGS_ZONE_LOCKED (0x1000)
2318#define MPI2_SAS_EXPANDER0_FLAGS_SUPPORTED_PHYSICAL_PRES (0x0800)
2319#define MPI2_SAS_EXPANDER0_FLAGS_ASSERTED_PHYSICAL_PRES (0x0400)
2320#define MPI2_SAS_EXPANDER0_FLAGS_ZONING_SUPPORT (0x0200)
2321#define MPI2_SAS_EXPANDER0_FLAGS_ENABLED_ZONING (0x0100)
2322#define MPI2_SAS_EXPANDER0_FLAGS_TABLE_TO_TABLE_SUPPORT (0x0080)
2323#define MPI2_SAS_EXPANDER0_FLAGS_CONNECTOR_END_DEVICE (0x0010)
2324#define MPI2_SAS_EXPANDER0_FLAGS_OTHERS_CONFIG (0x0004)
2325#define MPI2_SAS_EXPANDER0_FLAGS_CONFIG_IN_PROGRESS (0x0002)
2326#define MPI2_SAS_EXPANDER0_FLAGS_ROUTE_TABLE_CONFIG (0x0001)
2327
2328
2329
2330
2331typedef struct _MPI2_CONFIG_PAGE_EXPANDER_1
2332{
2333 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2334 U8 PhysicalPort;
2335 U8 Reserved1;
2336 U16 Reserved2;
2337 U8 NumPhys;
2338 U8 Phy;
2339 U16 NumTableEntriesProgrammed;
2340 U8 ProgrammedLinkRate;
2341 U8 HwLinkRate;
2342 U16 AttachedDevHandle;
2343 U32 PhyInfo;
2344 U32 AttachedDeviceInfo;
2345 U16 ExpanderDevHandle;
2346 U8 ChangeCount;
2347 U8 NegotiatedLinkRate;
2348 U8 PhyIdentifier;
2349 U8 AttachedPhyIdentifier;
2350 U8 Reserved3;
2351 U8 DiscoveryInfo;
2352 U32 AttachedPhyInfo;
2353 U8 ZoneGroup;
2354 U8 SelfConfigStatus;
2355 U16 Reserved4;
2356} MPI2_CONFIG_PAGE_EXPANDER_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_EXPANDER_1,
2357 Mpi2ExpanderPage1_t, MPI2_POINTER pMpi2ExpanderPage1_t;
2358
2359#define MPI2_SASEXPANDER1_PAGEVERSION (0x02)
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372#define MPI2_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED (0x04)
2373#define MPI2_SAS_EXPANDER1_DISCINFO_LINK_STATUS_CHANGE (0x02)
2374#define MPI2_SAS_EXPANDER1_DISCINFO_NO_ROUTING_ENTRIES (0x01)
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384typedef struct _MPI2_CONFIG_PAGE_SAS_DEV_0
2385{
2386 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2387 U16 Slot;
2388 U16 EnclosureHandle;
2389 U64 SASAddress;
2390 U16 ParentDevHandle;
2391 U8 PhyNum;
2392 U8 AccessStatus;
2393 U16 DevHandle;
2394 U8 AttachedPhyIdentifier;
2395 U8 ZoneGroup;
2396 U32 DeviceInfo;
2397 U16 Flags;
2398 U8 PhysicalPort;
2399 U8 MaxPortConnections;
2400 U64 DeviceName;
2401 U8 PortGroups;
2402 U8 DmaGroup;
2403 U8 ControlGroup;
2404 U8 Reserved1;
2405 U32 Reserved2;
2406 U32 Reserved3;
2407} MPI2_CONFIG_PAGE_SAS_DEV_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_DEV_0,
2408 Mpi2SasDevicePage0_t, MPI2_POINTER pMpi2SasDevicePage0_t;
2409
2410#define MPI2_SASDEVICE0_PAGEVERSION (0x08)
2411
2412
2413#define MPI2_SAS_DEVICE0_ASTATUS_NO_ERRORS (0x00)
2414#define MPI2_SAS_DEVICE0_ASTATUS_SATA_INIT_FAILED (0x01)
2415#define MPI2_SAS_DEVICE0_ASTATUS_SATA_CAPABILITY_FAILED (0x02)
2416#define MPI2_SAS_DEVICE0_ASTATUS_SATA_AFFILIATION_CONFLICT (0x03)
2417#define MPI2_SAS_DEVICE0_ASTATUS_SATA_NEEDS_INITIALIZATION (0x04)
2418#define MPI2_SAS_DEVICE0_ASTATUS_ROUTE_NOT_ADDRESSABLE (0x05)
2419#define MPI2_SAS_DEVICE0_ASTATUS_SMP_ERROR_NOT_ADDRESSABLE (0x06)
2420#define MPI2_SAS_DEVICE0_ASTATUS_DEVICE_BLOCKED (0x07)
2421
2422#define MPI2_SAS_DEVICE0_ASTATUS_SIF_UNKNOWN (0x10)
2423#define MPI2_SAS_DEVICE0_ASTATUS_SIF_AFFILIATION_CONFLICT (0x11)
2424#define MPI2_SAS_DEVICE0_ASTATUS_SIF_DIAG (0x12)
2425#define MPI2_SAS_DEVICE0_ASTATUS_SIF_IDENTIFICATION (0x13)
2426#define MPI2_SAS_DEVICE0_ASTATUS_SIF_CHECK_POWER (0x14)
2427#define MPI2_SAS_DEVICE0_ASTATUS_SIF_PIO_SN (0x15)
2428#define MPI2_SAS_DEVICE0_ASTATUS_SIF_MDMA_SN (0x16)
2429#define MPI2_SAS_DEVICE0_ASTATUS_SIF_UDMA_SN (0x17)
2430#define MPI2_SAS_DEVICE0_ASTATUS_SIF_ZONING_VIOLATION (0x18)
2431#define MPI2_SAS_DEVICE0_ASTATUS_SIF_NOT_ADDRESSABLE (0x19)
2432#define MPI2_SAS_DEVICE0_ASTATUS_SIF_MAX (0x1F)
2433
2434
2435
2436
2437#define MPI2_SAS_DEVICE0_FLAGS_UNAUTHORIZED_DEVICE (0x8000)
2438#define MPI2_SAS_DEVICE0_FLAGS_SLUMBER_PM_CAPABLE (0x1000)
2439#define MPI2_SAS_DEVICE0_FLAGS_PARTIAL_PM_CAPABLE (0x0800)
2440#define MPI2_SAS_DEVICE0_FLAGS_SATA_ASYNCHRONOUS_NOTIFY (0x0400)
2441#define MPI2_SAS_DEVICE0_FLAGS_SATA_SW_PRESERVE (0x0200)
2442#define MPI2_SAS_DEVICE0_FLAGS_UNSUPPORTED_DEVICE (0x0100)
2443#define MPI2_SAS_DEVICE0_FLAGS_SATA_48BIT_LBA_SUPPORTED (0x0080)
2444#define MPI2_SAS_DEVICE0_FLAGS_SATA_SMART_SUPPORTED (0x0040)
2445#define MPI2_SAS_DEVICE0_FLAGS_SATA_NCQ_SUPPORTED (0x0020)
2446#define MPI2_SAS_DEVICE0_FLAGS_SATA_FUA_SUPPORTED (0x0010)
2447#define MPI2_SAS_DEVICE0_FLAGS_PORT_SELECTOR_ATTACH (0x0008)
2448#define MPI2_SAS_DEVICE0_FLAGS_DEVICE_PRESENT (0x0001)
2449
2450
2451
2452
2453typedef struct _MPI2_CONFIG_PAGE_SAS_DEV_1
2454{
2455 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2456 U32 Reserved1;
2457 U64 SASAddress;
2458 U32 Reserved2;
2459 U16 DevHandle;
2460 U16 Reserved3;
2461 U8 InitialRegDeviceFIS[20];
2462} MPI2_CONFIG_PAGE_SAS_DEV_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_DEV_1,
2463 Mpi2SasDevicePage1_t, MPI2_POINTER pMpi2SasDevicePage1_t;
2464
2465#define MPI2_SASDEVICE1_PAGEVERSION (0x01)
2466
2467
2468
2469
2470
2471
2472
2473
2474typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_0
2475{
2476 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2477 U16 OwnerDevHandle;
2478 U16 Reserved1;
2479 U16 AttachedDevHandle;
2480 U8 AttachedPhyIdentifier;
2481 U8 Reserved2;
2482 U32 AttachedPhyInfo;
2483 U8 ProgrammedLinkRate;
2484 U8 HwLinkRate;
2485 U8 ChangeCount;
2486 U8 Flags;
2487 U32 PhyInfo;
2488 U8 NegotiatedLinkRate;
2489 U8 Reserved3;
2490 U16 Reserved4;
2491} MPI2_CONFIG_PAGE_SAS_PHY_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_PHY_0,
2492 Mpi2SasPhyPage0_t, MPI2_POINTER pMpi2SasPhyPage0_t;
2493
2494#define MPI2_SASPHY0_PAGEVERSION (0x03)
2495
2496
2497
2498
2499
2500
2501
2502
2503#define MPI2_SAS_PHY0_FLAGS_SGPIO_DIRECT_ATTACH_ENC (0x01)
2504
2505
2506
2507
2508
2509
2510
2511
2512typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_1
2513{
2514 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2515 U32 Reserved1;
2516 U32 InvalidDwordCount;
2517 U32 RunningDisparityErrorCount;
2518 U32 LossDwordSynchCount;
2519 U32 PhyResetProblemCount;
2520} MPI2_CONFIG_PAGE_SAS_PHY_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_PHY_1,
2521 Mpi2SasPhyPage1_t, MPI2_POINTER pMpi2SasPhyPage1_t;
2522
2523#define MPI2_SASPHY1_PAGEVERSION (0x01)
2524
2525
2526
2527
2528typedef struct _MPI2_SASPHY2_PHY_EVENT {
2529 U8 PhyEventCode;
2530 U8 Reserved1;
2531 U16 Reserved2;
2532 U32 PhyEventInfo;
2533} MPI2_SASPHY2_PHY_EVENT, MPI2_POINTER PTR_MPI2_SASPHY2_PHY_EVENT,
2534 Mpi2SasPhy2PhyEvent_t, MPI2_POINTER pMpi2SasPhy2PhyEvent_t;
2535
2536
2537
2538
2539
2540
2541
2542
2543#ifndef MPI2_SASPHY2_PHY_EVENT_MAX
2544#define MPI2_SASPHY2_PHY_EVENT_MAX (1)
2545#endif
2546
2547typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_2 {
2548 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2549 U32 Reserved1;
2550 U8 NumPhyEvents;
2551 U8 Reserved2;
2552 U16 Reserved3;
2553 MPI2_SASPHY2_PHY_EVENT PhyEvent[MPI2_SASPHY2_PHY_EVENT_MAX];
2554
2555} MPI2_CONFIG_PAGE_SAS_PHY_2, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_PHY_2,
2556 Mpi2SasPhyPage2_t, MPI2_POINTER pMpi2SasPhyPage2_t;
2557
2558#define MPI2_SASPHY2_PAGEVERSION (0x00)
2559
2560
2561
2562
2563typedef struct _MPI2_SASPHY3_PHY_EVENT_CONFIG {
2564 U8 PhyEventCode;
2565 U8 Reserved1;
2566 U16 Reserved2;
2567 U8 CounterType;
2568 U8 ThresholdWindow;
2569 U8 TimeUnits;
2570 U8 Reserved3;
2571 U32 EventThreshold;
2572 U16 ThresholdFlags;
2573 U16 Reserved4;
2574} MPI2_SASPHY3_PHY_EVENT_CONFIG, MPI2_POINTER PTR_MPI2_SASPHY3_PHY_EVENT_CONFIG,
2575 Mpi2SasPhy3PhyEventConfig_t, MPI2_POINTER pMpi2SasPhy3PhyEventConfig_t;
2576
2577
2578#define MPI2_SASPHY3_EVENT_CODE_NO_EVENT (0x00)
2579#define MPI2_SASPHY3_EVENT_CODE_INVALID_DWORD (0x01)
2580#define MPI2_SASPHY3_EVENT_CODE_RUNNING_DISPARITY_ERROR (0x02)
2581#define MPI2_SASPHY3_EVENT_CODE_LOSS_DWORD_SYNC (0x03)
2582#define MPI2_SASPHY3_EVENT_CODE_PHY_RESET_PROBLEM (0x04)
2583#define MPI2_SASPHY3_EVENT_CODE_ELASTICITY_BUF_OVERFLOW (0x05)
2584#define MPI2_SASPHY3_EVENT_CODE_RX_ERROR (0x06)
2585#define MPI2_SASPHY3_EVENT_CODE_RX_ADDR_FRAME_ERROR (0x20)
2586#define MPI2_SASPHY3_EVENT_CODE_TX_AC_OPEN_REJECT (0x21)
2587#define MPI2_SASPHY3_EVENT_CODE_RX_AC_OPEN_REJECT (0x22)
2588#define MPI2_SASPHY3_EVENT_CODE_TX_RC_OPEN_REJECT (0x23)
2589#define MPI2_SASPHY3_EVENT_CODE_RX_RC_OPEN_REJECT (0x24)
2590#define MPI2_SASPHY3_EVENT_CODE_RX_AIP_PARTIAL_WAITING_ON (0x25)
2591#define MPI2_SASPHY3_EVENT_CODE_RX_AIP_CONNECT_WAITING_ON (0x26)
2592#define MPI2_SASPHY3_EVENT_CODE_TX_BREAK (0x27)
2593#define MPI2_SASPHY3_EVENT_CODE_RX_BREAK (0x28)
2594#define MPI2_SASPHY3_EVENT_CODE_BREAK_TIMEOUT (0x29)
2595#define MPI2_SASPHY3_EVENT_CODE_CONNECTION (0x2A)
2596#define MPI2_SASPHY3_EVENT_CODE_PEAKTX_PATHWAY_BLOCKED (0x2B)
2597#define MPI2_SASPHY3_EVENT_CODE_PEAKTX_ARB_WAIT_TIME (0x2C)
2598#define MPI2_SASPHY3_EVENT_CODE_PEAK_ARB_WAIT_TIME (0x2D)
2599#define MPI2_SASPHY3_EVENT_CODE_PEAK_CONNECT_TIME (0x2E)
2600#define MPI2_SASPHY3_EVENT_CODE_TX_SSP_FRAMES (0x40)
2601#define MPI2_SASPHY3_EVENT_CODE_RX_SSP_FRAMES (0x41)
2602#define MPI2_SASPHY3_EVENT_CODE_TX_SSP_ERROR_FRAMES (0x42)
2603#define MPI2_SASPHY3_EVENT_CODE_RX_SSP_ERROR_FRAMES (0x43)
2604#define MPI2_SASPHY3_EVENT_CODE_TX_CREDIT_BLOCKED (0x44)
2605#define MPI2_SASPHY3_EVENT_CODE_RX_CREDIT_BLOCKED (0x45)
2606#define MPI2_SASPHY3_EVENT_CODE_TX_SATA_FRAMES (0x50)
2607#define MPI2_SASPHY3_EVENT_CODE_RX_SATA_FRAMES (0x51)
2608#define MPI2_SASPHY3_EVENT_CODE_SATA_OVERFLOW (0x52)
2609#define MPI2_SASPHY3_EVENT_CODE_TX_SMP_FRAMES (0x60)
2610#define MPI2_SASPHY3_EVENT_CODE_RX_SMP_FRAMES (0x61)
2611#define MPI2_SASPHY3_EVENT_CODE_RX_SMP_ERROR_FRAMES (0x63)
2612#define MPI2_SASPHY3_EVENT_CODE_HOTPLUG_TIMEOUT (0xD0)
2613#define MPI2_SASPHY3_EVENT_CODE_MISALIGNED_MUX_PRIMITIVE (0xD1)
2614#define MPI2_SASPHY3_EVENT_CODE_RX_AIP (0xD2)
2615
2616
2617#define MPI2_SASPHY3_COUNTER_TYPE_WRAPPING (0x00)
2618#define MPI2_SASPHY3_COUNTER_TYPE_SATURATING (0x01)
2619#define MPI2_SASPHY3_COUNTER_TYPE_PEAK_VALUE (0x02)
2620
2621
2622#define MPI2_SASPHY3_TIME_UNITS_10_MICROSECONDS (0x00)
2623#define MPI2_SASPHY3_TIME_UNITS_100_MICROSECONDS (0x01)
2624#define MPI2_SASPHY3_TIME_UNITS_1_MILLISECOND (0x02)
2625#define MPI2_SASPHY3_TIME_UNITS_10_MILLISECONDS (0x03)
2626
2627
2628#define MPI2_SASPHY3_TFLAGS_PHY_RESET (0x0002)
2629#define MPI2_SASPHY3_TFLAGS_EVENT_NOTIFY (0x0001)
2630
2631
2632
2633
2634
2635#ifndef MPI2_SASPHY3_PHY_EVENT_MAX
2636#define MPI2_SASPHY3_PHY_EVENT_MAX (1)
2637#endif
2638
2639typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_3 {
2640 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2641 U32 Reserved1;
2642 U8 NumPhyEvents;
2643 U8 Reserved2;
2644 U16 Reserved3;
2645 MPI2_SASPHY3_PHY_EVENT_CONFIG PhyEventConfig
2646 [MPI2_SASPHY3_PHY_EVENT_MAX];
2647} MPI2_CONFIG_PAGE_SAS_PHY_3, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_PHY_3,
2648 Mpi2SasPhyPage3_t, MPI2_POINTER pMpi2SasPhyPage3_t;
2649
2650#define MPI2_SASPHY3_PAGEVERSION (0x00)
2651
2652
2653
2654
2655typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_4 {
2656 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2657 U16 Reserved1;
2658 U8 Reserved2;
2659 U8 Flags;
2660 U8 InitialFrame[28];
2661} MPI2_CONFIG_PAGE_SAS_PHY_4, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_PHY_4,
2662 Mpi2SasPhyPage4_t, MPI2_POINTER pMpi2SasPhyPage4_t;
2663
2664#define MPI2_SASPHY4_PAGEVERSION (0x00)
2665
2666
2667#define MPI2_SASPHY4_FLAGS_FRAME_VALID (0x02)
2668#define MPI2_SASPHY4_FLAGS_SATA_FRAME (0x01)
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679typedef struct _MPI2_CONFIG_PAGE_SAS_PORT_0
2680{
2681 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2682 U8 PortNumber;
2683 U8 PhysicalPort;
2684 U8 PortWidth;
2685 U8 PhysicalPortWidth;
2686 U8 ZoneGroup;
2687 U8 Reserved1;
2688 U16 Reserved2;
2689 U64 SASAddress;
2690 U32 DeviceInfo;
2691 U32 Reserved3;
2692 U32 Reserved4;
2693} MPI2_CONFIG_PAGE_SAS_PORT_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_PORT_0,
2694 Mpi2SasPortPage0_t, MPI2_POINTER pMpi2SasPortPage0_t;
2695
2696#define MPI2_SASPORT0_PAGEVERSION (0x00)
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707typedef struct _MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0
2708{
2709 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2710 U32 Reserved1;
2711 U64 EnclosureLogicalID;
2712 U16 Flags;
2713 U16 EnclosureHandle;
2714 U16 NumSlots;
2715 U16 StartSlot;
2716 U16 Reserved2;
2717 U16 SEPDevHandle;
2718 U32 Reserved3;
2719 U32 Reserved4;
2720} MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0,
2721 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0,
2722 Mpi2SasEnclosurePage0_t, MPI2_POINTER pMpi2SasEnclosurePage0_t;
2723
2724#define MPI2_SASENCLOSURE0_PAGEVERSION (0x03)
2725
2726
2727#define MPI2_SAS_ENCLS0_FLAGS_MNG_MASK (0x000F)
2728#define MPI2_SAS_ENCLS0_FLAGS_MNG_UNKNOWN (0x0000)
2729#define MPI2_SAS_ENCLS0_FLAGS_MNG_IOC_SES (0x0001)
2730#define MPI2_SAS_ENCLS0_FLAGS_MNG_IOC_SGPIO (0x0002)
2731#define MPI2_SAS_ENCLS0_FLAGS_MNG_EXP_SGPIO (0x0003)
2732#define MPI2_SAS_ENCLS0_FLAGS_MNG_SES_ENCLOSURE (0x0004)
2733#define MPI2_SAS_ENCLS0_FLAGS_MNG_IOC_GPIO (0x0005)
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746#ifndef MPI2_LOG_0_NUM_LOG_ENTRIES
2747#define MPI2_LOG_0_NUM_LOG_ENTRIES (1)
2748#endif
2749
2750#define MPI2_LOG_0_LOG_DATA_LENGTH (0x1C)
2751
2752typedef struct _MPI2_LOG_0_ENTRY
2753{
2754 U64 TimeStamp;
2755 U32 Reserved1;
2756 U16 LogSequence;
2757 U16 LogEntryQualifier;
2758 U8 VP_ID;
2759 U8 VF_ID;
2760 U16 Reserved2;
2761 U8 LogData[MPI2_LOG_0_LOG_DATA_LENGTH];
2762} MPI2_LOG_0_ENTRY, MPI2_POINTER PTR_MPI2_LOG_0_ENTRY,
2763 Mpi2Log0Entry_t, MPI2_POINTER pMpi2Log0Entry_t;
2764
2765
2766#define MPI2_LOG_0_ENTRY_QUAL_ENTRY_UNUSED (0x0000)
2767#define MPI2_LOG_0_ENTRY_QUAL_POWER_ON_RESET (0x0001)
2768#define MPI2_LOG_0_ENTRY_QUAL_TIMESTAMP_UPDATE (0x0002)
2769#define MPI2_LOG_0_ENTRY_QUAL_MIN_IMPLEMENT_SPEC (0x8000)
2770#define MPI2_LOG_0_ENTRY_QUAL_MAX_IMPLEMENT_SPEC (0xFFFF)
2771
2772typedef struct _MPI2_CONFIG_PAGE_LOG_0
2773{
2774 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2775 U32 Reserved1;
2776 U32 Reserved2;
2777 U16 NumLogEntries;
2778 U16 Reserved3;
2779 MPI2_LOG_0_ENTRY LogEntry[MPI2_LOG_0_NUM_LOG_ENTRIES];
2780} MPI2_CONFIG_PAGE_LOG_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_LOG_0,
2781 Mpi2LogPage0_t, MPI2_POINTER pMpi2LogPage0_t;
2782
2783#define MPI2_LOG_0_PAGEVERSION (0x02)
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796#ifndef MPI2_RAIDCONFIG0_MAX_ELEMENTS
2797#define MPI2_RAIDCONFIG0_MAX_ELEMENTS (1)
2798#endif
2799
2800typedef struct _MPI2_RAIDCONFIG0_CONFIG_ELEMENT
2801{
2802 U16 ElementFlags;
2803 U16 VolDevHandle;
2804 U8 HotSparePool;
2805 U8 PhysDiskNum;
2806 U16 PhysDiskDevHandle;
2807} MPI2_RAIDCONFIG0_CONFIG_ELEMENT,
2808 MPI2_POINTER PTR_MPI2_RAIDCONFIG0_CONFIG_ELEMENT,
2809 Mpi2RaidConfig0ConfigElement_t, MPI2_POINTER pMpi2RaidConfig0ConfigElement_t;
2810
2811
2812#define MPI2_RAIDCONFIG0_EFLAGS_MASK_ELEMENT_TYPE (0x000F)
2813#define MPI2_RAIDCONFIG0_EFLAGS_VOLUME_ELEMENT (0x0000)
2814#define MPI2_RAIDCONFIG0_EFLAGS_VOL_PHYS_DISK_ELEMENT (0x0001)
2815#define MPI2_RAIDCONFIG0_EFLAGS_HOT_SPARE_ELEMENT (0x0002)
2816#define MPI2_RAIDCONFIG0_EFLAGS_OCE_ELEMENT (0x0003)
2817
2818
2819typedef struct _MPI2_CONFIG_PAGE_RAID_CONFIGURATION_0
2820{
2821 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2822 U8 NumHotSpares;
2823 U8 NumPhysDisks;
2824 U8 NumVolumes;
2825 U8 ConfigNum;
2826 U32 Flags;
2827 U8 ConfigGUID[24];
2828 U32 Reserved1;
2829 U8 NumElements;
2830 U8 Reserved2;
2831 U16 Reserved3;
2832 MPI2_RAIDCONFIG0_CONFIG_ELEMENT ConfigElement[MPI2_RAIDCONFIG0_MAX_ELEMENTS];
2833} MPI2_CONFIG_PAGE_RAID_CONFIGURATION_0,
2834 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_RAID_CONFIGURATION_0,
2835 Mpi2RaidConfigurationPage0_t, MPI2_POINTER pMpi2RaidConfigurationPage0_t;
2836
2837#define MPI2_RAIDCONFIG0_PAGEVERSION (0x00)
2838
2839
2840#define MPI2_RAIDCONFIG0_FLAG_FOREIGN_CONFIG (0x00000001)
2841
2842
2843
2844
2845
2846
2847
2848
2849typedef struct _MPI2_CONFIG_PAGE_DRIVER_MAP0_ENTRY
2850{
2851 U64 PhysicalIdentifier;
2852 U16 MappingInformation;
2853 U16 DeviceIndex;
2854 U32 PhysicalBitsMapping;
2855 U32 Reserved1;
2856} MPI2_CONFIG_PAGE_DRIVER_MAP0_ENTRY,
2857 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_DRIVER_MAP0_ENTRY,
2858 Mpi2DriverMap0Entry_t, MPI2_POINTER pMpi2DriverMap0Entry_t;
2859
2860typedef struct _MPI2_CONFIG_PAGE_DRIVER_MAPPING_0
2861{
2862 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2863 MPI2_CONFIG_PAGE_DRIVER_MAP0_ENTRY Entry;
2864} MPI2_CONFIG_PAGE_DRIVER_MAPPING_0,
2865 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_DRIVER_MAPPING_0,
2866 Mpi2DriverMappingPage0_t, MPI2_POINTER pMpi2DriverMappingPage0_t;
2867
2868#define MPI2_DRIVERMAPPING0_PAGEVERSION (0x00)
2869
2870
2871#define MPI2_DRVMAP0_MAPINFO_SLOT_MASK (0x07F0)
2872#define MPI2_DRVMAP0_MAPINFO_SLOT_SHIFT (4)
2873#define MPI2_DRVMAP0_MAPINFO_MISSING_MASK (0x000F)
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883typedef union _MPI2_ETHERNET_IP_ADDR {
2884 U32 IPv4Addr;
2885 U32 IPv6Addr[4];
2886} MPI2_ETHERNET_IP_ADDR, MPI2_POINTER PTR_MPI2_ETHERNET_IP_ADDR,
2887 Mpi2EthernetIpAddr_t, MPI2_POINTER pMpi2EthernetIpAddr_t;
2888
2889#define MPI2_ETHERNET_HOST_NAME_LENGTH (32)
2890
2891typedef struct _MPI2_CONFIG_PAGE_ETHERNET_0 {
2892 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2893 U8 NumInterfaces;
2894 U8 Reserved0;
2895 U16 Reserved1;
2896 U32 Status;
2897 U8 MediaState;
2898 U8 Reserved2;
2899 U16 Reserved3;
2900 U8 MacAddress[6];
2901 U8 Reserved4;
2902 U8 Reserved5;
2903 MPI2_ETHERNET_IP_ADDR IpAddress;
2904 MPI2_ETHERNET_IP_ADDR SubnetMask;
2905 MPI2_ETHERNET_IP_ADDR GatewayIpAddress;
2906 MPI2_ETHERNET_IP_ADDR DNS1IpAddress;
2907 MPI2_ETHERNET_IP_ADDR DNS2IpAddress;
2908 MPI2_ETHERNET_IP_ADDR DhcpIpAddress;
2909 U8 HostName
2910 [MPI2_ETHERNET_HOST_NAME_LENGTH];
2911} MPI2_CONFIG_PAGE_ETHERNET_0, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_ETHERNET_0,
2912 Mpi2EthernetPage0_t, MPI2_POINTER pMpi2EthernetPage0_t;
2913
2914#define MPI2_ETHERNETPAGE0_PAGEVERSION (0x00)
2915
2916
2917#define MPI2_ETHPG0_STATUS_IPV6_CAPABLE (0x80000000)
2918#define MPI2_ETHPG0_STATUS_IPV4_CAPABLE (0x40000000)
2919#define MPI2_ETHPG0_STATUS_CONSOLE_CONNECTED (0x20000000)
2920#define MPI2_ETHPG0_STATUS_DEFAULT_IF (0x00000100)
2921#define MPI2_ETHPG0_STATUS_FW_DWNLD_ENABLED (0x00000080)
2922#define MPI2_ETHPG0_STATUS_TELNET_ENABLED (0x00000040)
2923#define MPI2_ETHPG0_STATUS_SSH2_ENABLED (0x00000020)
2924#define MPI2_ETHPG0_STATUS_DHCP_CLIENT_ENABLED (0x00000010)
2925#define MPI2_ETHPG0_STATUS_IPV6_ENABLED (0x00000008)
2926#define MPI2_ETHPG0_STATUS_IPV4_ENABLED (0x00000004)
2927#define MPI2_ETHPG0_STATUS_IPV6_ADDRESSES (0x00000002)
2928#define MPI2_ETHPG0_STATUS_ETH_IF_ENABLED (0x00000001)
2929
2930
2931#define MPI2_ETHPG0_MS_DUPLEX_MASK (0x80)
2932#define MPI2_ETHPG0_MS_HALF_DUPLEX (0x00)
2933#define MPI2_ETHPG0_MS_FULL_DUPLEX (0x80)
2934
2935#define MPI2_ETHPG0_MS_CONNECT_SPEED_MASK (0x07)
2936#define MPI2_ETHPG0_MS_NOT_CONNECTED (0x00)
2937#define MPI2_ETHPG0_MS_10MBIT (0x01)
2938#define MPI2_ETHPG0_MS_100MBIT (0x02)
2939#define MPI2_ETHPG0_MS_1GBIT (0x03)
2940
2941
2942
2943
2944typedef struct _MPI2_CONFIG_PAGE_ETHERNET_1 {
2945 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
2946 U32 Reserved0;
2947 U32 Flags;
2948 U8 MediaState;
2949 U8 Reserved1;
2950 U16 Reserved2;
2951 U8 MacAddress[6];
2952 U8 Reserved3;
2953 U8 Reserved4;
2954 MPI2_ETHERNET_IP_ADDR StaticIpAddress;
2955 MPI2_ETHERNET_IP_ADDR StaticSubnetMask;
2956 MPI2_ETHERNET_IP_ADDR StaticGatewayIpAddress;
2957 MPI2_ETHERNET_IP_ADDR StaticDNS1IpAddress;
2958 MPI2_ETHERNET_IP_ADDR StaticDNS2IpAddress;
2959 U32 Reserved5;
2960 U32 Reserved6;
2961 U32 Reserved7;
2962 U32 Reserved8;
2963 U8 HostName
2964 [MPI2_ETHERNET_HOST_NAME_LENGTH];
2965} MPI2_CONFIG_PAGE_ETHERNET_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_ETHERNET_1,
2966 Mpi2EthernetPage1_t, MPI2_POINTER pMpi2EthernetPage1_t;
2967
2968#define MPI2_ETHERNETPAGE1_PAGEVERSION (0x00)
2969
2970
2971#define MPI2_ETHPG1_FLAG_SET_DEFAULT_IF (0x00000100)
2972#define MPI2_ETHPG1_FLAG_ENABLE_FW_DOWNLOAD (0x00000080)
2973#define MPI2_ETHPG1_FLAG_ENABLE_TELNET (0x00000040)
2974#define MPI2_ETHPG1_FLAG_ENABLE_SSH2 (0x00000020)
2975#define MPI2_ETHPG1_FLAG_ENABLE_DHCP_CLIENT (0x00000010)
2976#define MPI2_ETHPG1_FLAG_ENABLE_IPV6 (0x00000008)
2977#define MPI2_ETHPG1_FLAG_ENABLE_IPV4 (0x00000004)
2978#define MPI2_ETHPG1_FLAG_USE_IPV6_ADDRESSES (0x00000002)
2979#define MPI2_ETHPG1_FLAG_ENABLE_ETH_IF (0x00000001)
2980
2981
2982#define MPI2_ETHPG1_MS_DUPLEX_MASK (0x80)
2983#define MPI2_ETHPG1_MS_HALF_DUPLEX (0x00)
2984#define MPI2_ETHPG1_MS_FULL_DUPLEX (0x80)
2985
2986#define MPI2_ETHPG1_MS_DATA_RATE_MASK (0x07)
2987#define MPI2_ETHPG1_MS_DATA_RATE_AUTO (0x00)
2988#define MPI2_ETHPG1_MS_DATA_RATE_10MBIT (0x01)
2989#define MPI2_ETHPG1_MS_DATA_RATE_100MBIT (0x02)
2990#define MPI2_ETHPG1_MS_DATA_RATE_1GBIT (0x03)
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003typedef struct _MPI2_CONFIG_PAGE_EXT_MAN_PS {
3004 MPI2_CONFIG_EXTENDED_PAGE_HEADER Header;
3005 U32 ProductSpecificInfo;
3006} MPI2_CONFIG_PAGE_EXT_MAN_PS,
3007 MPI2_POINTER PTR_MPI2_CONFIG_PAGE_EXT_MAN_PS,
3008 Mpi2ExtManufacturingPagePS_t,
3009 MPI2_POINTER pMpi2ExtManufacturingPagePS_t;
3010
3011
3012
3013#endif
3014
3015